免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【原創(chuàng)】雙adsl鏈路冗余互備及流量分擔的實現(xiàn)
經(jīng)過一周的摸索,實現(xiàn)了雙adsl鏈路冗余互備及流量分擔,整理如下:
目的:實現(xiàn)雙adsl的冗余熱備和流量分擔
功能:
    雙adsl同時連線;
    當兩條adsl同時連線時,流量經(jīng)策略路由分流到兩條鏈路上;
    當其中一條adsl掉線時,所有流量自動分配另一條可用連接;
    可以擴展到多條ppp連接.


1.添加網(wǎng)卡
插入網(wǎng)卡,啟動機器,修改/etc/modules.conf并加入
alias eth2 driver.o


2.配置adsl撥號
通過adsl-setup程序創(chuàng)建ppp0和ppp1的撥號配置文件,并保存配置。
修改/etc/sysconfig/network-scripts/ifcfg-ppp*文件,將其中的PIDFILE參數(shù)設為:
PIDFILE=/var/run/ppp-adsl*.pid
其中*對應0、1等
如果不修改此參數(shù)將無法啟動第二個ppp接口。

3.啟動ppp接口
因為adsl-start 命令缺省只能啟動第一的ppp接口。所以要啟動兩個接口,必須指定配置文件。
adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp0
adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp1


4.添加路由表
缺省情況下,系統(tǒng)只有3個路由表,local、main、default,路由規(guī)則為所有進入的數(shù)據(jù)報都參照main、defaul來決策路由,這可以通過ip rule ls來查看。其輸出如下:
代碼:
[root@linuxrouter root]# ip rule ls
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup 253
[root@linuxrouter root]#

要實現(xiàn)策略路由,添加額外的路由表是必須的。
下面兩條命令分別添加名為ppp0和ppp1的路由表。

echo 201 ppp0 >> /etc/iproutes/rt_tables
echo 202 ppp1 >> /etc/iproutes/rt_tables

5.創(chuàng)建路由表項
上面創(chuàng)建的兩個路由表都是空表,需要在其中注入路由表項。
本人編寫了如下腳本用于注入路由表項:

代碼:
#!/bin/bash
# Name: cprt
# This program copy the route from $1 route table to $2 route table,
# exclude the default route entry.

if [ -z "$1" -o -z "$2" ]; then
    echo $"usage: cprt <source_table> <dest_table>"
    exit 1
fi

SOURCE=$1
DEST=$2

# Clear the destination route table
echo $"Clearing route table $DEST ......"
echo
/sbin/ip route flush table $DEST

# Inject routes from source to destination
echo $"Injecting route from $SOURCE to $DEST ......"
/sbin/ip route ls table $SOURCE | grep -v default > /tmp/route-tmp
while read line; do
      /sbin/ip route add table $DEST $line
done < "/tmp/route-tmp"


把main表中的路由表項復制到ppp0和ppp1中。
將下面命令加入到/etc/rc.d/rc.local中。
cprt main ppp0
cprt main ppp1

此時,兩個路由表中都有相同的路由表項了,除了default路由以外。缺省路由的添加要通過另外的途徑添加。當ppp激活,或者掉線時,pppd守護進程會調(diào)用/etc/ppp/目錄下的ip-up、ip-down腳本,這些教本又分別調(diào)用ip-up.local、ip-down.local。在此我們利用這兩個腳本來對路由表和流量控制策略進行維護,此腳本需要人工創(chuàng)建。

下面時本例中的腳本:
/etc/ppp/ip-up.local
代碼:
#!/bin/bash
# Name: ip-up.local
# Created by lyking@CU
# If the if-down is not completed, this script can‘t be excute.
while [ -e /var/lock/subsys/if-down.$IFNAME ] ; do
        sleep 3
done

# Creat a lock file to prevent the if-down from running on my turn
touch /var/lock/subsys/if-up.$IFNAME

# Determin device here
# We should use IFNAME as the interface name.For some reason, the IFNAME maybe not
# same as the LINKNAME. And the route table should associate with the IFNAME. For
# some conveniency, I name the route table as "ppp0" and "ppp1".
RT_TABLE=$IFNAME

# Add or change static route here,including default route.
# Check if a default is exist.
RS=""
ip route ls table $RT_TABLE | grep default
RS=$?

if [ $RS -eq 0 ] ; then
        ip route change default dev $IFNAME table $RT_TABLE
else
        ip route add default dev $IFNAME table $RT_TABLE
fi
echo >> /var/log/ifchang.log
echo "$0: $IFNAME going up at `date`." >> /var/log/ifchang.log
echo "$0: $IFNAME got address: $IPLOCAL, peer address is $IPREMOTE." >> /var/log/ifchang.log
echo "$0: Table $RT_TABLE default route change to `ip route ls table $RT_TABLE | grep default`." >> /var/log/ifchang.log

# Refresh routing cache to activating the routing immediately.
ip route flush cache

# Add traffic control policy here
tc qdisc add dev $IFNAME root handle 1: prio
## This *instantly* creates classes 1:1, 1:2, 1:3

tc qdisc add dev $IFNAME parent 1:1 handle 10 sfq perturb 20
tc qdisc add dev $IFNAME parent 1:2 handle 20 sfq perturb 20
tc qdisc add dev $IFNAME parent 1:3 handle 30 sfq

# Remove the lock file
rm -f /var/lock/subsys/if-up.$IFNAME



/etc/ppp/ip-down.local
代碼:
#!/bin/bash
# Name: ip-down.local
# Created by lyking@CU
while [ -e /var/lock/subsys/if-up.$IFNAME ] ; do
        sleep 3
done

touch /var/lock/subsys/if-down.$IFNAME


cd /etc/sysconfig/network-scripts
. network-functions

# Determin device here
# We should use IFNAME as the interface name.For some reason, the IFNAME maybe not
# same as the LINKNAME. And the route table should associate with the IFNAME. For
# some conveniency, I name the route table as "ppp0" and "ppp1".
RT_TABLE=$IFNAME

# Looking for a valide connection to Internet
DEFAULT_RT=""
PPPS=‘ppp0 ppp1‘
for i in $PPPS ; do
ifconfig | grep $i
RS=$?
        if [ $RS -eq 0 ] ; then
            DEFAULT_RT=$i
            break
        fi
done

# Update default route here as nesessary
if [ $DEFAULT_RT != $IFNAME ] ; then
        if [ $DEFAULT_RT != "" ] ; then
                ip route add default dev $DEFAULT_RT table $RT_TABLE
        else
                for i in $PPPS ; do
                        ip route del default dev $i table $i
                done
                echo >> /var/log/ifchang.log
                echo "$0: All connection is down, remove all default route from all branch tables" >> /var/log/ifchang.log
        fi
        echo >> /var/log/ifchang.log
        echo "$0: $IFNAME going down at `date`." >> /var/log/ifchang.log
        echo "$0: Connection lasted $CONNECT_TIME seconds." >> /var/log/ifchang.log
        echo "$0: $BYTES_SENT bytes sent, $BYTES_RCVD bytes received." >> /var/log/ifchang.log
        echo "$0: $DEFAULT_RT is available." >> /var/log/ifchang.log
        echo "$0: Table $RT_TABLE default route changed to `ip route ls table $RT_TABLE | grep default`. " >> /var/log/ifchang.log
fi

# Refresh routing cache to activating the routing immediately.
ip route flush cache

rm -f /var/lock/subsys/if-down.$IFNAME


注意,創(chuàng)建完腳本后必須將其屬性改為可執(zhí)行,否則不會被執(zhí)行。


6.路由策略的選擇
策略路由可以通過源地址、目標地址、ToS或者fwmark標記來進行選擇。在此,為了利用iptables的強大的過濾功能采用fwmark標記來決策路由。
在/etc/rc.d/rc.local中添加如下命令:
/sbin/ip rule add fwmark 1 table ppp0
/sbin/ip rule add fwmark 2 table ppp1

7.防火墻規(guī)則的添加
這里利用的iptables的強大過濾功能來對流量進行標記。本例中僅根據(jù)ip地址的奇偶性來拆分流量,根據(jù)具體需求,你還可以根據(jù)第4層端口號、ToS等來拆分流量。防火墻需要添加如下命令:

代碼:
# Divid traffic to different mark
iptables -t mangle -A PREROUTING -s 10.0.0.0/255.255.255.1 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -s 10.0.0.1/255.255.255.1 -j MARK --set-mark 0x2

# NAT
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -o ppp1 -j MASQUERADE

至此,雙adsl鏈路的熱互備及負載分擔基本完成。

下面是一些運行結(jié)果
A.ifconfig顯示結(jié)果
代碼:
ppp0      Link encap:Point-to-Point Protocol
          inet addr:220.163.38.208  P-t-P:220.163.38.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:100295 errors:0 dropped:0 overruns:0 frame:0
          TX packets:67817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:108844271 (103.8 Mb)  TX bytes:6073206 (5.7 Mb)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:220.163.36.57  P-t-P:220.163.36.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:150583 errors:0 dropped:0 overruns:0 frame:0
          TX packets:125136 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:132921157 (126.7 Mb)  TX bytes:8749585 (8.3 Mb)

B./var/log/ifchang.log部分內(nèi)容
/etc/ppp/ip-down.local: ppp0 going down at Tue Aug 10 08:05:45 CST 2004.
/etc/ppp/ip-down.local: Connection lasted 22 seconds.
/etc/ppp/ip-down.local: 30 bytes sent, 30 bytes received.
/etc/ppp/ip-down.local: ppp1 is available.
/etc/ppp/ip-down.local: Table ppp0 default route changed to default dev ppp1 scope link .

/etc/ppp/ip-up.local: ppp0 going up at Tue Aug 10 08:05:53 CST 2004.
/etc/ppp/ip-up.local: ppp0 got address: 61.159.254.30, peer address is 61.159.254.1.
/etc/ppp/ip-up.local: Table ppp0 default route change to default dev ppp0 scope link .

/etc/ppp/ip-down.local: ppp1 going down at Tue Aug 10 08:12:45 CST 2004.
/etc/ppp/ip-down.local: Connection lasted 853 seconds.
/etc/ppp/ip-down.local: 9313 bytes sent, 116181 bytes received.
/etc/ppp/ip-down.local: ppp0 is available.
/etc/ppp/ip-down.local: Table ppp1 default route changed to default dev ppp0 scope link .

/etc/ppp/ip-up.local: ppp1 going up at Tue Aug 10 08:12:53 CST 2004.
/etc/ppp/ip-up.local: ppp1 got address: 220.163.38.20, peer address is 220.163.38.1.
/etc/ppp/ip-up.local: Table ppp1 default route change to default dev ppp1 scope link .[list=][/list]
    [img][/img]
    代碼:





    本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    centos7使用rt_tables巧妙配置多網(wǎng)卡多路由實現(xiàn)策略路由
    LINUX下的網(wǎng)絡設置 ifconfig ,route
    SSD202 驅(qū)動4G模塊
    每天一個linux命令(53):route命令
    linux路由表的配置
    shell腳本自動切換服務器網(wǎng)關
    更多類似文章 >>
    生活服務
    分享 收藏 導長圖 關注 下載文章
    綁定賬號成功
    后續(xù)可登錄賬號暢享VIP特權!
    如果VIP功能使用有故障,
    可點擊這里聯(lián)系客服!

    聯(lián)系客服