一、背景知識
在日常的使用中茅撞,或者在服務(wù)器中,有多個網(wǎng)卡配置多個地址巨朦,訪問不同的網(wǎng)絡(luò)段米丘,這種情況是非常常見的現(xiàn)象,但是罪郊,我們需要額外的添加路由表來決定發(fā)送的數(shù)據(jù)包經(jīng)過正確的網(wǎng)關(guān)和interface才能正確的進行通信 蠕蚜。
在哪種情況下尚洽,為什么悔橄,需要在Linux服務(wù)器上添加靜態(tài)路由?
?route命令用來顯示并設(shè)置Linux內(nèi)核中的網(wǎng)絡(luò)路由表腺毫,route命令設(shè)置的路由主要是靜態(tài)路由癣疟。
實現(xiàn)兩個不同子網(wǎng)之間的通信,需要一臺連接兩個網(wǎng)絡(luò)的路由器潮酒,或者同時位于兩個網(wǎng)絡(luò)的網(wǎng)關(guān)來實現(xiàn)睛挚。
如果Linux服務(wù)器有多網(wǎng)卡,需要有些網(wǎng)卡走指定的路由急黎,就需要單獨設(shè)置靜態(tài)路由扎狱。
服務(wù)器有多網(wǎng)卡,需要訪問內(nèi)網(wǎng)的另一個網(wǎng)段勃教,不能通過默認網(wǎng)關(guān)訪問淤击,此時就需要添加靜態(tài)路由
Linux系統(tǒng)在一個局域網(wǎng)中,局域網(wǎng)有一個網(wǎng)關(guān)故源,能夠讓機器訪問Internet污抬,那么就需要將這臺機器的IP地址設(shè)置為Linux機器的默認路由。
注意:直接在命令行下執(zhí)行route命令來添加路由绳军,只是臨時生效印机,當(dāng)網(wǎng)卡或者機器重啟之后,該路由條目就失效了门驾。
說明:
?其中Flags為路由標(biāo)志射赛,編輯當(dāng)前網(wǎng)絡(luò)節(jié)點的狀態(tài)
?·U ??up代表路由當(dāng)前為啟動狀態(tài)
?·H? ?host表示此網(wǎng)關(guān)為一個主機
?·G?? gateway此網(wǎng)關(guān)為一個路由器
?·R?? reinstate route使用動態(tài)路由重新初始化的路由
?·D? ? dynamically,此路由是動態(tài)寫入的
?·M ? modified是有路由守護程序或?qū)蚱餍薷?/p>
?·奶是!?此路由當(dāng)前為關(guān)閉狀態(tài)
代理ARP:路由下一跳是接口還是IP設(shè)備的最大區(qū)別就是ARP表的區(qū)別:下一跳是IP設(shè)備的話楣责,外LAN數(shù)據(jù)包毫無疑問交給了IP網(wǎng)關(guān)顷蟆,但是如果下一跳只是接口的話這個是需要單獨對目標(biāo)ip做arp解析的,如果IP網(wǎng)關(guān)上沒有開啟接口的proxy arp feature的話是不會響應(yīng)這個arp請求的腐魂。
二帐偎、靜態(tài)路由的添加方式
方式一
靜態(tài)路由的添加
# route add -net? 192.168.0.0/24? ?gw 192.168.0.1
#? ?route del? -net? ?192.168.0.0/24? ?gw 192.168.0.1? dev eth0
#? ?route add? -net? 192.168.0.0? netmask 255.255.255.0? ?gw 192.168.0.1?
#? ?route add? -net? 192.168.0.0? netmask 255.255.255.0? ?gw 192.168.0.1? dev eth0
# route add -host 192.168.1.1? ?dev ?eth0
######################################################################
route add -net 10.0.0.0 netmask 255.0.0.0 gw 10.25.230.1 dev eth3
route add -net 100.0.0.0 netmask 255.0.0.0 gw 10.25.230.1 dev eth3
iptables -t nat -A PREROUTING? --dport? 8443 -j DNAT --to-destination 192.168.1.120
iptables -t nat -A POSTROUTING --dport 8443 -j MASQUERADE
#######################################################################
靜態(tài)路由的刪除
# route del? 192.168.0.0/24? ?gw 192.168.0.1
#? ?route del? -net? ?192.168.0.0/24? ?gw 192.168.0.1? dev eth0
#? ?route del? -net? 192.168.0.0? netmask 255.255.255.0? ?gw 192.168.0.1
#? ?route del? -net? 192.168.0.0? netmask 255.255.255.0? ?gw 192.168.0.1? dev eth0
# route del -host 192.168.1.1? ?dev?eth0
增加默認路由
#? route? add? default? gw 192.168.0.1
注:添加默認網(wǎng)關(guān)地址, 也就是默認路由的下一跳蛔屹,默認路由一條就夠了削樊。
說明:
add 增加路由
del 刪除路由
-net 設(shè)置到某個網(wǎng)段的路由
-host 設(shè)置到某臺主機的路由
gw? 出口網(wǎng)關(guān)的IP地址
dev 出口網(wǎng)關(guān)物理設(shè)備名
方式二
添加路由
#? ip route add 192.168.0.0/24 via 192.168.0.1
#? ip route add? 192.168.1.1 dev eth0
刪除路由
#? ip route del 192.168.0.0/24 via 192.168.0.1
#?ip route?del? 192.168.1.1 dev eth0
說明:
add 增加路由
del 刪除路由
via 網(wǎng)關(guān)出口 IP地址
dev 網(wǎng)關(guān)出口 物理設(shè)備名
增加默認路由
#? ?ip route add default via 192.168.0.1 dev eth0
注:? via 192.168.0.1? 指向默認路由器
開啟 路由轉(zhuǎn)發(fā):
# echo? "1"? ?>? /proc/sys/net/ipv4/ip_forward?
# echo? "net.ipv4.ip_forward=1"? ?>>??/etc/sysctl.conf
三、如何在Linux中添加永久路由
我們直接在命令行下執(zhí)行route命令來添加路由兔毒,只是臨時生效漫贞,當(dāng)網(wǎng)卡或者機器重啟之后,該路由條目就失效了育叁。
怎么實現(xiàn)路由添加的永久生效呢迅脐?
1、寫入/etc/rc.loacl
可以將上面提到的命令寫入/etc/rc.local文件中豪嗽,這樣在系統(tǒng)啟動的時候會自動加入相關(guān)的路由設(shè)置谴蔑。
不過這種方法有一個缺點:如果某個系統(tǒng)服務(wù),比如說是NFS服務(wù)龟梦,這個服務(wù)是在啟動network服務(wù)之后隐锭,在執(zhí)行rc.local之前,如果你設(shè)置的有自動掛載的nfs计贰,那么钦睡,這里鏈路的不通暢,會造成掛載的失敗躁倒。
另外一個就是如果你重啟了網(wǎng)絡(luò)服務(wù)荞怒,那么路由就失效了,這個時候你不得不重新加載這個文件秧秉,但是如果你是遠程操作的呢褐桌?
如果你的應(yīng)用對網(wǎng)絡(luò)要求比較特殊,不建議使用此方法福贞。
2撩嚼、寫入/etc/sysconfig/static-routes文件
默認在/etc/sysconifg目錄中是沒有這個文件的,需要我們手工創(chuàng)建挖帘,對這個文件的調(diào)用在network服務(wù)的啟動腳本中完丽。
# vim /etc/init.d/network
#? vim??/etc/sysconfig/static-routes?
#################################################
any net 192.168.1.0/24 gw 192.168.1.1
any net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1
#################################################
注: 務(wù)必注意?/etc/sysconfig/static-routes 文件中路由添加的語法。
這種方式的話拇舀,和rc.local比較而言逻族,比較實用,比如nfs骄崩,這個路由的生效時間是在網(wǎng)絡(luò)服務(wù)network啟動的時候生效的聘鳞,而其他的一些網(wǎng)絡(luò)相關(guān)服務(wù)都是在網(wǎng)絡(luò)服務(wù)啟動成功之后再啟動的薄辅,所以能夠保證網(wǎng)絡(luò)鏈路的通暢。
如果重啟了網(wǎng)絡(luò)服務(wù)抠璃,這個腳本是在網(wǎng)絡(luò)服務(wù)啟動腳本里面調(diào)用的站楚,所以也會自動添加上相關(guān)的路由設(shè)置。
四搏嗡、參考
Linux添加靜態(tài)路由表窿春,重啟繼續(xù)生效
http://blog.sina.com.cn/s/blog_67be3b450101de43.html
Linux 重啟網(wǎng)絡(luò)服務(wù)后路由表丟失問題的解決方案
https://www.iteye.com/blog/yjy110-2205338
Linux 添加靜態(tài)路由
https://blog.csdn.net/moreorless/article/details/5397427
設(shè)置EIP網(wǎng)卡可見模式
https://help.aliyun.com/knowledge_detail/98641.html?scm=20140722.184.2.173
Linux下永久添加靜態(tài)路由
https://www.cnblogs.com/wanghuaijun/p/8059664.html
關(guān)于while 中ignore 的用法