Hadyai Internet R&D LAB
ผลงานของ Hadyai Internet R&D LAB => คุยกับทีมวิจัย => ข้อความที่เริ่มโดย: admin ที่ 12 กรกฎาคม 2008, 09:41:13
-
ตั้งกระทู้ไว้ สำหรับผู้ที่มีข้อสงสัยเกี่ยวกับ
- การ config การ update ใช้งาน 3WAN, 4WAN หรือมากกว่า
- อ่านเอกสารแล้วยังไม่เข้าใจ มีข้อสงสัยสอบถามเพิ่มเติม
- ต้องการแลกเปลี่ยนความคิดเห็น config เพิ่มเติม
- สอบถามแก้ไขปัญหาที่เกิดขึ้น
-
พอดีผมไปเจอสคริปนี้มา ท่านคิดว่าเป็นไงครับ ต้องมีแก้ไขยังไงบ้างมั้ย ถ้าเกิดผมจะมาปรับให้เข้ากะระบบตัวเอง ก้อคือ เนต 2 สาย ทำงานแบบ loadbalance เส้นไหนหลุดก้อสลับไปอีกเส้น แล้วเส้นที่หลุดก้อต่อใหม่เอง แยกเนตแยกเกม
#!/bin/bash
#############################################################
# PPP Load Balancer Script #
# #
# Author: Neutron Soutmun #
# Created: 2008-04-28 #
# Copyright: © 2008 Neutron Soutmun <neo.neutron@gmail.com> #
# License: GPL-2 #
#############################################################
VERSION=0.1.1
##
# LOG_DIR : Store the neccessary log files for ppp load balance processing.
##
LOG_DIR=/var/log/ppp-balance
##
# TABLE_PREFIX : The prefix for the table name that specified in
# /etc/iproute2/rt_tables for identification of route.
##
TABLE_PREFIX=isp
##
# GAMEONLINE_ROUTE_TO_IFNO : The interface number which desired to be the
# GameOnline routing path.
# You must set the netfilter rules for this function
# will work properly.
# To disable this, set it to -1
#
# Example netfilter rules:
#
# # iptables -t mangle -A PREROUTING -i eth0 -p tcp \
# -m multiport --dports 1025:65535 -j MARK --set-mark 0x4
# # iptables -t mangle -A PREROUTING -i eth0 -p udp \
# -m multiport --dports 1025:65535 -j MARK --set-mark 0x4
#
##
GAMEONLINE_ROUTE_TO_IFNO=3
##
# RELOAD_SQUID : Force to reload the squid config, workaround for the system
# that running squid process, disable set it to 0
##
RELOAD_SQUID=1
##
# VERBOSE : Verbose mode, display all logs and errors
# disable set it to 0.
##
VERBOSE=1
###################################
### Do not need to change below ###
###################################
IP=/sbin/ip
IFCONFIG=/sbin/ifconfig
SQUID=/etc/init.d/squid3
RT_TABLES=/etc/iproute2/rt_tables
OLD_IF_FILE=${LOG_DIR}/old-if.log
OLD_IF_COUNT_FILE=${LOG_DIR}/old-if-cnt.log
OLD_RULE_FILE=${LOG_DIR}/old-rule.log
NEXTHOP_FILE=${LOG_DIR}/nexthop.log
REDIAL_LOG_FILE=${LOG_DIR}/redial.log
TEMP_FILE=${LOG_DIR}/temp.log
LOG_FILE=${LOG_DIR}/ppp-balance.log
log() {
timestamp=`date`
if [ ${VERBOSE} -gt 0 ]; then
echo "${timestamp}: $1"
fi
echo "${timestamp}: $1" >> ${LOG_FILE}
}
error() {
timestamp=`date`
if [ ${VERBOSE} -gt 0 ]; then
echo "${timestamp}: ERROR! - $1"
fi
echo "${timestamp}: ERROR! - $1" >> ${LOG_FILE}
exit $2
}
### Check if the system ready ###
# Check log dir
if [ ! -d ${LOG_DIR} ]; then
mkdir -p ${LOG_DIR} || exit 1
fi
# Check neccessary program
if [ ! -f ${IP} ]; then
error "The 'iproute2' package is not installed properly ?!!" 1
fi
# Check pre-defined tables name
rt_tables=`cat ${RT_TABLES} | grep "200 ${TABLE_PREFIX}0" | wc -l`
if [ $rt_tables -eq 0 ]; then
## Create the route tables name from prefix
echo "" >> ${RT_TABLES}
echo "#" >> ${RT_TABLES}
echo "# Added by PPP Load Balancer" >> ${RT_TABLES}
echo "#" >> ${RT_TABLES}
for (( i = 0; i < 10; i++ )); do
echo "20${i} ${TABLE_PREFIX}${i}" >> ${RT_TABLES}
done
fi
# Clear the temporary files
echo "" > ${TEMP_FILE}
del_old_rule () {
log "Removing old rules ..."
${IP} rule show | grep ${TABLE_PREFIX} | grep -v "all to" > ${OLD_RULE_FILE}
while read line
do
#echo $line
line_ip=`echo $line | cut -d' ' -f3`
line_table=`echo $line | cut -d' ' -f5`
check=`echo ${line_table} | grep ${TABLE_PREFIX}`
if [ $? -eq 0 ]; then
log "${IP} rule del from ${line_ip} table ${line_table}"
${IP} rule del from ${line_ip} table ${line_table}
log "${IP} route flush table ${line_table}"
${IP} route flush table ${line_table}
fi
done < ${OLD_RULE_FILE}
}
update_route () {
log "Updating new route ..."
echo "" > ${NEXTHOP_FILE}
for PPP in ${PPP_LIST}
do
new_ppp=`cat ${TEMP_FILE} | grep ${PPP}`
new_ip=`echo ${new_ppp} | cut -d':' -f2`
new_tab=`echo ${new_ppp} | cut -d':' -f3`
log "${IP} route add ${new_ip}/32 dev ${PPP} src ${new_ip} table ${new_tab}"
${IP} route add ${new_ip}/32 dev ${PPP} src ${new_ip} table ${new_tab}
log "${IP} route add default via ${new_ip} table ${new_tab}"
${IP} route add default via ${new_ip} table ${new_tab}
log "${IP} rule add from ${new_ip} table ${new_tab}"
${IP} rule add from ${new_ip} table ${new_tab}
log "nexthop via ${new_ip} dev ${PPP} weight 1"
echo "nexthop via ${new_ip} dev ${PPP} weight 1 " >> ${NEXTHOP_FILE} 2>&1
done
}
update_default_route () {
log "Updating default route ..."
nexthop=`cat ${NEXTHOP_FILE}`
check=`echo $nexthop | grep nexthop | wc -l`
if [ $check -gt 0 ]; then
default_gw="${IP} route add default scope global equalize "
log "${default_gw} ${nexthop}"
${IP} route del default
${default_gw} ${nexthop}
# Game online and other ports 1025:65535 go through the specified game path
if [ ${GAMEONLINE_ROUTE_TO_IFNO} -gt -1 ]; then
log "Adding GameOnline interception ..."
${IP} rule del fwmark 4 table ${TABLE_PREFIX}${GAMEONLINE_ROUTE_TO_IFNO}
${IP} rule add fwmark 4 table ${TABLE_PREFIX}${GAMEONLINE_ROUTE_TO_IFNO}
fi
fi
}
### MAIN ###
changes=0
# Gathering current PPP list
PPP_LIST=`${IFCONFIG} | grep ppp | cut -d' ' -f1`
IF_COUNT=`${IFCONFIG} | grep ppp | cut -d' ' -f1 | wc -l`
for PPP in ${PPP_LIST}
do
if_ip=`${IFCONFIG} ${PPP} | grep inet | cut -d':' -f2 | cut -d' ' -f 1`
table_id=`echo ${PPP} | cut -d'p' -f4`
check_old=`cat ${OLD_IF_FILE} | grep ${PPP}`
check_ip=`echo ${check_old} | grep ${if_ip}`
if [ $? -eq 1 ]; then
# Some change in this device do update routing
log "${PPP} Routing change...."
changes=1
fi
echo ${PPP}:${if_ip}:${TABLE_PREFIX}${table_id} >> ${TEMP_FILE}
done
if [ -f ${OLD_IF_COUNT_FILE} ]; then
OLD_IF_COUNT=`cat ${OLD_IF_COUNT_FILE}`
else
OLD_IF_COUNT=0
fi
if [ ${OLD_IF_COUNT} != ${IF_COUNT} ]; then
log "Links size changed!"
changes=1
fi
if [ ${changes} -eq 1 ]; then
del_old_rule
update_route
update_default_route
${IP} route flush cache
if [ ${RELOAD_SQUID} -gt 0 ]; then
log "Reloading SQUID config ..."
${SQUID} reload
fi
date >> ${REDIAL_LOG_FILE}
success=`${IP} route | grep nexthop | wc -l`
if [ ${success} -gt 0 ]; then
cp ${TEMP_FILE} ${OLD_IF_FILE}
echo ${IF_COUNT} > ${OLD_IF_COUNT_FILE}
log "Updated!"
else
rm -f ${OLD_IF_FILE}
rm -f ${OLD_IF_COUNT_FILE}
log "Update Pending! - Retry in the next time."
fi
fi
### END ###
-
ก็คล้ายกันครับ
แต่ของผมจะเข้าใจง่ายกว่า
และไม่มีปัญหากรณี มีการเปลี่ยนแปลง route table เนื่องจาก MARK RULES จะทำการเปลี่ยนแปลง เฉพาะ State NEW
ส่วน State RELATED,ESTABLISHED จะไม่มีการเปลี่ยนแปลง เพื่อป้องกันการหลุดของเกมส์ที่เล่นอยู่ในขณะเส้น เวป มีปัญหา
เป็นต้น
ซึ่งในไฟล์ /etc/init.d/tableroute.sh จะมีบรรทัด
# MARK RULE FOR NEW PACKET
iptables -t mangle -A PREROUTING -i eth0 -m state --state NEW -j MARK_RULES
iptables -t mangle -A PREROUTING -i eth0 -m state --state RELATED,ESTABLISHED -j CONNMARK --restore-mark
เป็นตัวกำหนดเงื่อนไข ก่อนทำการ MARK Packet
-
หุหุ ขอบคุณครับ ช่วยได้มากเลยท่าน
-
scrip ของ ubuntu กับ scrip ของ CC ใช้ตัวเดียวกันได้ไหมครับ
-
ไม่ได้ครับ เพราะ Ubuntu ทำใหม่ขึ้นมาทั้งหมดและเป็น Linux debian
ส่วน CC จะเป็น Linux ตระกูล RedHat จึง config ไม่เหมือนกัน
-
คงต้องประยุกต์เอานิดหน่อยนะครับ ลองสังเกตุ ดูนะครับ ตำแหน่งของไฟล์ บางครั้งมันจะไม่ตรงกัน
-
อยาก vpn เข้า server แล้วไปอยู่ในวงแลนภายในร้านครับ
เพื่อได้ ip bonus และรีโมทเข้าเครื่องลูกต่างๆ
แล้วก็การ forwardport ด้วยครับ ทำยังไงครับ
-
ip route add default equalize scope global ...
การใช้ค่า weight
บาง script ใช้ 1, 2, 4 เขามีหลักการคิดยังไงครับ
-
อนาคตหลังจากซื้อ Software จากพี่แล้วผมสามารถปรับเปลี่ยนหน้าตา เพิ่มเติมเองได้ไหมครับ แล้วถ้ามีปัญหาหรือมี Feature เพิ่มเติม พี่สามารถ Remote ช่วยได้ไหม และมีค่าใช้จ่ายอะไรเพิ่มเติมไหม..และเรื่องราคาประมาณเท่าไหร่ครับสำหรับทำ WiFi ได้ด้วยครับ ขอบคุณล่วงหน้าครับ
-
อนาคตหลังจากซื้อ Software จากพี่แล้วผมสามารถปรับเปลี่ยนหน้าตา เพิ่มเติมเองได้ไหมครับ แล้วถ้ามีปัญหาหรือมี Feature เพิ่มเติม พี่สามารถ Remote ช่วยได้ไหม และมีค่าใช้จ่ายอะไรเพิ่มเติมไหม..และเรื่องราคาประมาณเท่าไหร่ครับสำหรับทำ WiFi ได้ด้วยครับ ขอบคุณล่วงหน้าครับ
สามารถปรับเปลี่ยนได้ครับ สมารถ remote ช่วยได้ครับโดยไม่มีค่าใช้จ่ายเพิ่มในครั้งแรก ราคาอยุ่ที่ 4100 บาท รวมค่าจัด่ส่งแล้วนะครับ ถ้าจะเอาตัว wifi ด้วย ราคาจะอยุ่ที่ 15,000 บาท นะครับ สนใจโทรสอบถามที่ 084-9695561 คุณป้อ ครับ
ขอบคุณครับ
-
คืองงทุกอย่าง ที่เป็น Ubuntu ครับ ...
ผมควรเริ่มจากตรงไหนดี แนะนำให้หน่อยครับ
-
ขอบคุณมากเลยครับ ช่วยได้มากเลย
-
ถามหน่อย ถ้าซื้อแผ่นมาทำ ราคา 4100 แล้วถ้าให้มาทำให้ราคาเท่าไหร่ครับ อยู่ในหาดใหญ่คืออยากจะเปิดร้านอ่ะครับ...
แล้วถ้าให้มาทำให้ได้คู่มือสอนแล้วก็แผ่นเหมือนกับสั่งซื้อราคา 4100 อ่ะป่าวครับ
-
ถามหน่อย ถ้าซื้อแผ่นมาทำ ราคา 4100 แล้วถ้าให้มาทำให้ราคาเท่าไหร่ครับ อยู่ในหาดใหญ่คืออยากจะเปิดร้านอ่ะครับ...
แล้วถ้าให้มาทำให้ได้คู่มือสอนแล้วก็แผ่นเหมือนกับสั่งซื้อราคา 4100 อ่ะป่าวครับ
- คู่มือบอกขั้นตอนละเอียด ทำได้แน่นอนครับ
- ไม่จำเป็นต้องมีความรู้ Linux มากเป็น Auto install ครับ
- ถ้าไม่ได้จริงๆ PM หาพี่ PoR โลดครับ ;D ;D ;D ;D
-
ขอบคุณครับ...`
แล้วถ้าให้ไปทำให้จะได้คู่มือด้วยป่าวครับ...`
แล้วระบบนี้เก็บ log file แบบที่มี พรบ ด้วยหรือป่าวครับ..`
-
ระบบนี้เก็บ log file ตาม พรบ ด้วยหรือป่าวครับ..`
แล้วเรียกดูแบบไหน ไม่เคยใช้ linux ครับ
-
ไม่มี tools ในการดูครับ firewall log จริงๆเลย ส่งไฟล์ให้เจ้าหน้าที่เขาไปดูเอง
-
ระบบนี้เก็บ log file ตาม พรบ ด้วยหรือป่าวครับ..`
แล้วเรียกดูแบบไหน ไม่เคยใช้ linux ครับ
- ใช้แล้วครับ หน้าที่ของเราคือบันทุกข้อมูลอย่างเดียว
- เรื่องตรวจสอบเอาไว้เป็นหน้าที่ของเจ้าหน้าที่
- เด๋วเจ้าหน้าที่ไม่ได้ทำงานนะ ให้เขาทำงานมั่ง ;D ;D
-
ขอบคุณครับ
-
- ใช้แล้วครับ หน้าที่ของเราคือบันทุกข้อมูลอย่างเดียว
- เรื่องตรวจสอบเอาไว้เป็นหน้าที่ของเจ้าหน้าที่
- เด๋วเจ้าหน้าที่ไม่ได้ทำงานนะ ให้เขาทำงานมั่ง ;D ;D
งั้นเพื่อนผมก้อเข้าจัยผืดมาตลอดอ่ะดิ ว่าต้องมี เครื่องมือสำหรับแสดง log
งั้นใน CC ไม่จำเป็นต้องลงพวก ligthsquid หรือว่า sage ไว้แสดงผลก้อได้ใช่มั้ยครับ เก็บ log ไว้อย่างเดียวพอ
จะได้ไปบอกมัน --* :D
-
- ใช้แล้วครับ หน้าที่ของเราคือบันทุกข้อมูลอย่างเดียว
- เรื่องตรวจสอบเอาไว้เป็นหน้าที่ของเจ้าหน้าที่
- เด๋วเจ้าหน้าที่ไม่ได้ทำงานนะ ให้เขาทำงานมั่ง ;D ;D
งั้นเพื่อนผมก้อเข้าจัยผืดมาตลอดอ่ะดิ ว่าต้องมี เครื่องมือสำหรับแสดง log
งั้นใน CC ไม่จำเป็นต้องลงพวก ligthsquid หรือว่า sage ไว้แสดงผลก้อได้ใช่มั้ยครับ เก็บ log ไว้อย่างเดียวพอ
จะได้ไปบอกมัน --* :D
• ถ้ามีไว้ดูก็ไม่เสียหายครับผม
• เพราะยังไงระบบก็เก็บให้อยู่แล้วครับ เพียงแต่ ligthsquid เป็นตัว gen ให้เราดูเฉยๆครับ