當前位置:首頁 » 編程軟體 » 路由策略配置腳本

路由策略配置腳本

發布時間: 2022-07-05 12:49:09

『壹』 怎麼實現雙adsl上網並且同時使用2個寬頻的流量

.添加網卡
插入網卡,啟動機器,修改/etc/moles.conf並加入
alias eth2 driver.o

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

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

4.添加路由表
預設情況下,系統只有3個路由表,local、main、default,路由規則為所有進入的數據報都參照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]#
要實現策略路由,添加額外的路由表是必須的。
下面兩條命令分別添加名為ppp0和ppp1的路由表。

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

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

#!/bin/bash
# Name: cprt
# This program 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守護進程會調用/etc/ppp/目錄下的ip-up、ip-down腳本,這些教本又分別調用ip-up.local、ip-down.local。在此我們利用這兩個腳本來對路由表和流量控制策略進行維護,此腳本需要人工創建。

下面時本例中的腳本:
/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

注意,創建完腳本後必須將其屬性改為可執行,否則不會被執行。

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.防火牆規則的添加
這里利用的iptables的強大過濾功能來對流量進行標記。本例中僅根據ip地址的奇偶性來拆分流量,根據具體需求,你還可以根據第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鏈路的熱互備及負載分擔基本完成。

下面是一些運行結果
A.ifconfig顯示結果
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部分內容
/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][list][/list]

『貳』 ROS 雙線固定IP,相同網關,怎麼做負載或者分流!

ROS 電信兩條光纖線路固定IP,同網關,負載或分流腳本如下:
1、首先劃分VLAN(我們這里是從2開始排序的)
[admin@MikroTik] > :for i from=2 to=41 do= {interface vlan add name=("vlan".$i) vlan-id=$i interface=ether2-wan }

2、然後添加PPPOE撥號(先添加撥號再手動輸入 每個AD的帳號和密碼,40條AD設置還是要花點時間了),腳本如下:
[admin@MikroTik] > :for i from=2 to=41 do= {interface pppoe-client add name=("pppoe-out".$i) user=$i password=$i interface=("vlan".$i)}

3、我們這里採用PCC的負載均衡,在ip firewall mangle里添加相應的PCC規則,通過一些腳本添加PCC的規則,注意:如果PPPoE客戶端撥號沒有成功,那麼添加的規則則為紅色的,撥號成功後自動正常
[admin@MikroTik] > :for i from=2 to=41 do={/ip firewall mangle add chain=input action=mark-connection new-connection-mark=conn1 in-interface=("pppoe-out".$i)}

『叄』 雙網卡同時上網,為什麼有時只能上外網,有時只能上內網,還有的時候同時上兩個網

你檢查一下你的子網掩碼是否設置錯了?對於你列出的這種情況,如果掩碼設置成 255.255.255.0,那麼 192.168.1.xxx和192.168.0.xxx 就是兩個不同的網段,它們之間的通信必須通過路由器才能進行訪問;如果掩碼設置成 255.255.0.0,那麼 192.168.1.xxx 和 192.168.0.xxx 就是在相同的網段上,它們之間的通信就不需要經過路由即可。

但是關鍵要看你在物理上,這兩個 IP 地址范圍內的機器到底是如何進行連接的?子網掩碼可不是隨便設置的!

『肆』 求助:bow老大寫的「雙線路策略路由和腳本備份切換」

59.80.0.0/14是指目的地址的網段,有幾個就加幾條。/是指在根命令行上,雙引號里是名字和腳本內容 查看更多答案>>

『伍』 ROS網通ADSL雙線PPPOE撥號設置

網上教程好多,復制粘貼過來也沒什麼意思

另外ROS只能做到分流,做不到均衡負載

『陸』 淺談angular2路由預載入策略

1.問題描述
在沒有使路由懶載入的時候,第一次使用的時候載入特別慢,影響用戶體驗,angular2可以使用loadChildren進行懶載入,第一次使用的時候只會載入需要的模塊,其它模塊在真正使用的時候才會去載入,這個時候打開瀏覽器控制台查看js載入的時候,會發現你在使用時候會去載入對應的js,導致第一次點擊相應模塊的功能時會卡頓一下,後面在使用就不會了,這樣還是用戶體驗不好,接下來告訴你如果使用預載入策略解決這個問題。
2.預載入策略
RouterMole.forRoot的第二個添加了一個配置選項,這人配置選項中就有一個是preloadingStrategy配置,當然它還有其它配置,這里只講preloadingStrategy,這個配置是一個預載入策略配置,我們需要實現一個自己的預載入策略,在一些不需要預載入的場景加我們可以不配置,首先我們新建一個selective-preloading-strategy.ts的文件,使用class實現PreloadingStrategy介面的preload方法,代碼如下:
import
{
PreloadingStrategy,
Route
}
from
"@angular/router";
import
{
Observable
}
from
"rxjs";
/**
*
預載入策略
*/
export
class
SelectivePreloadingStrategy
implements
PreloadingStrategy
{
preload(route:
Route,
load:
Function):
Observable<any>
{
//當路由中配置data:
{preload:
true}時預載入
return
route.data
&&
route.data
&&
route.data['preload']
?
load()
:
Observable.of(null);
}
}
上面的意思很簡單,當你在路由中配置了data:
{preload:
true}參數後,這裡面的策略就返回一個load(),表示需要預載入,如果沒有配置就不進行預載入,當然你也可以反過來,默認是預載入,只在配置不需要預載入的時候不載入,就像我的github上的一樣,自己靈活運用。
接下來,在在路由中加入策略,也就是RouterMole.forRoot中的配置,代碼如下:
import
{
NgMole
}
from
'@angular/core';
import
{
RouterMole,
Routes
}
from
'@angular/router';
import
{SelectivePreloadingStrategy}
from
"./selective-preloading-strategy";
import
{
LoginComponent
}
from
'./login/login.component';
import
{
MainComponent
}
from
'./main/main.component';
/**
*
app路由
*/
const
routes:
Routes
=
[
{
path:
'',
redirectTo:
'/login',
pathMatch:
'full'
},
{
path:
'login',
component:
LoginComponent
},
{
path:
'app',
component:
MainComponent,
loadChildren:
'app/main/main.mole#MainMole',
data:
{preload:
true}
}
];
export
const
appRoutes=RouterMole.forRoot(routes,{preloadingStrategy:
SelectivePreloadingStrategy});
還需要在AppMole的providers添加,代碼如下:
/**
*
app模塊
*/
@NgMole({
imports:
[
appRoutes,
BrowserMole,
BrowserAnimationsMole,
NgbMole.forRoot(),
MainMole,
LoginMole
],
declarations:
[
AppComponent,
ToastBoxComponent,
ToastComponent,
SpinComponent
],
providers:
[AppService,ToastService,HttpService,SpinService,SelectivePreloadingStrategy],
exports:[ToastBoxComponent,SpinComponent],
bootstrap:
[
AppComponent
]
})
export
class
AppMole
{}
接下來在路由中使用,代碼如下:
import
{
NgMole,
OnInit
}
from
'@angular/core';
import
{
RouterMole,
Routes,
Router
}
from
'@angular/router';
/**
*
主體路由
*/
const
routes:
Routes
=
[
{
path:
'home',
loadChildren:
'app/home/home.mole#HomeMole',
data:
{preload:
true}
},
{
path:
'demo',
loadChildren:
'app/demo/demo.mole#DemoMole',
data:
{preload:
true}
},
];
export
const
mainRoutes
=
RouterMole.forChild(routes);
打開瀏覽器F12,查看js的載入,你會發現,當頁面載入完後,會預載入其它模塊的js
官網上有一個默認實現PreloadAllMoles
,自行參考官網說明。
具體代碼到我的github上找,https://github.com/332557712/cc

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

『柒』 如何讓pptp連接後自動添加策略路由

win7上用bat腳本自動連接pptp vpn並添加路由 (2011-11-01 10:50:00)轉載▼

標簽: 雜談 分類: 腳本

使用默認連接pptp vpn會將本地網路的路由改變,所有的數據包都經過vpn出去,如果想只有去vpn網路的數據走vpn,其他的還走原來的網關,那樣就要每次都手動添加路由,比較麻煩。

使用一下bat腳本可以輕松實現一鍵撥號並添加路由

1、創建一個pptp的vpn撥號連接(這個應該都會,此處略過)

2、右鍵剛建好的一個連接--屬性--網路--Internet協議版本4--屬性--高級,將IP設置里的「在遠程網路上使用默認網關」的勾掉。

3、創建一個文本文件,將擴展名改為bat,然後編輯它,如下:

@echo off

rasdial 你剛才創建的vpn連接名 用戶名 密碼

for /f "tokens=16" %%i in ('ipconfig ^| find /i "10.0.0."') do set ip=%%i

route add 192.168.5.0 mask 255.255.255.0 %ip%

pause

紅色字體部分特別說明,根據實際情況修改:

1、第三行的紅色部分「10.0.0.」,是你vpn連接成功後獲得的IP地址,只寫前三位就行了,如果不知道就先手動連接一次,然後去查看自己獲得的IP。

2、第四行就是你vpn對端的網路的網段和掩碼,根據實際情況修改下就OK了。

完成後直接雙擊bat腳本就可以連接了。

『捌』 利用 vbs 腳本實現靜態路由備份策略

說具體點?

熱點內容
配置文件ini如何寫 發布:2024-03-29 17:31:05 瀏覽:997
如何更改微信密碼修改 發布:2024-03-29 17:24:49 瀏覽:588
探影哪個配置性價比最高 發布:2024-03-29 17:24:08 瀏覽:485
phpmyadminlinux安裝 發布:2024-03-29 17:13:15 瀏覽:792
python中replace 發布:2024-03-29 17:08:17 瀏覽:652
mdb導入sql 發布:2024-03-29 17:07:36 瀏覽:128
java資料庫工具類 發布:2024-03-29 16:31:15 瀏覽:388
安卓機哪裡看型號 發布:2024-03-29 15:59:40 瀏覽:281
cad解壓錯誤 發布:2024-03-29 15:01:45 瀏覽:79
存儲指令集 發布:2024-03-29 14:39:27 瀏覽:649