Linux 更改靜態路由
阿新 • • 發佈:2017-06-30
路由
一:使用 route 命令添加 使用route 命令添加的路由,機器重啟或者網卡重啟後路由就失效了,方法: //添加到主機的路由 # route add –host 192.168.1.11 dev eth0 # route add –host 192.168.1.12 gw 192.168.1.1 //添加到網絡的路由 # route add –net 192.168.1.11 netmask 255.255.255.0 eth0 # route add –net 192.168.1.11 netmask 255.255.255.0 gw 192.168.1.1 # route add –net 192.168.1.0/24 eth1 //添加默認網關 # route add default gw 192.168.2.1 //刪除路由 # route del –host 192.168.1.11 dev eth0 刪除默認路由 #route del default gw 192.168.2.1 二:在linux下設置永久路由的方法: 1.在/etc/rc.local裏添加 方法: route add -net 192.168.3.0/24 dev eth0 route add -net 192.168.2.0/24 gw 192.168.2.254 2.在/etc/sysconfig/network裏添加到末尾 方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev 3./etc/sysconfig/static-routes : (沒有static-routes的話就手動建立一個這樣的文件) any net 192.168.3.0/24 gw 192.168.3.254 any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 4.開啟 IP 轉發: # echo "1" >/proc/sys/net/ipv4/ip_forward (臨時) # vi /etc/sysctl.conf --> net.ipv4.ip_forward=1 (永久開啟) 這裏並沒有錯誤的地方,只不過之前沒有接觸對這些參數沒什麽想法,這次正好研究了下,大概了解了下沒個參數的意思。 首先從最簡單的是route add方法: route add這個是添加路由的命令,這個沒什麽好說的,然後是後面的-host和net參數,根據緊跟參數後面的信息可以發現host指的是添加一個主機到路由中,net是添加一個網段到路由中。在後面的參數是dev和gw,字面理解加上後面緊跟的值判斷,dev表示這個host或者這段net走的是那個網口,gw是gateway,自然是通過哪個網關了。對這裏為何指定網口或者指定網關都行呢,我的認識是這樣的,網口上配置有網關的信息,指定的網口其實最終還是去讀取這個網口對應的網關信息,等效於指定gw參數。不過指定網口一般是由於有多個網絡環境的情況,如果網口沒有指定網關,會去讀取默認的網關,所以這裏一般要求把網口的網關信息配置上去,在linux下很多時候網關信息並不是配置在網口的配置文件,比如:/etc/sysconfig/network-scripts/ifcfg-eth0 文件裏面,而是在/etc/sysconfig/network這裏面,所以在用dev參數的時候需要小心這點,盡可能通過指定gw的方式。 為什麽會介紹到route add方法,因為後面會有用到。現在回到主題,關於static-routes的設置。網上一般的都是寫著: any net 192.168.3.0/24 gw 192.168.3.254 設置的都是整個網段的,但如果是單個主機怎麽設置呢?同時從廠家那邊給了一個腳本是: eth0 x.x.x.x netmask 255.255.255.192 gw x.x.x.x 看上去也很對的樣子,但是執行發現netstat -an裏面看不到添加的信息,完全不行。 然後我們在看下static-routes這個文件的作用,根據網上的說法,static-routes其實在被network這個腳本調用的,打開這個腳本: /etc/rc.d/init.d/network 裏面有寫到: # Add non interface-specific static-routes. if [ -f /etc/sysconfig/static-routes ]; then grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do /sbin/route add -$args done fi network在執行的時候到static-routes裏面尋找any開頭的行,然後執行 /sbin/route add -$args 相當於手動執行了route add腳本,那後面事情就簡單了,回到了手動執行的方式,根據前面的說明,正確的腳本就是: any host 10.0.0.10 gw 192.168.1.1 network執行的時候把any去掉,獲取後面的參數:host 10.0.0.10 gw 192.168.1.1 然後執行route add -host 10.0.0.10 gw 192.168.1.1 註意這裏host前面的-是network自帶的,不需要配置到static-routes文件中。 ############################### echo "route add -net 172.16.100.0/24 gw 192.168.6.249" >>/etc/rc.local 使得在系統重啟之後,加入這條命令。 ################################################################ Debian/Ubuntu RedHat/CentOS/Fedora如何永久添加靜態路由 目前Linux系統網絡配置基本都差不多,但是不同的發行版又有些不同,常見主要區分兩大類型: (1)RedHat(RHEL)/CentOS/Fedora Linux是放在/etc/sysconfig/network-scripts目錄下面的一大堆文件裏面。 (2)Debian/Ubuntu Linux網絡配置則是存在/etc/network/目錄下面的幾個文件裏面。 比如我們要給linux系統添加靜態路由,就要區分不同的平臺,RedHat(RHEL)/CentOS/Fedora Linux環境永久添加靜態路由通常是寫在諸如/etc/sysconfig/network-scripts/route-eth0這些文件裏。而Debian/Ununtu下有所不同,添加路由的腳本放到/etc/network/interfaces裏執行。 一、Debian平臺實例: Debian/Ununtu添加路由的腳本放到/etc/network/interfaces裏執行: auto eth0 iface eth0 inet static address 192.168.1.88 netmask 255.255.255.0 gateway 192.168.1.1 up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1 down route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1 二、RedHat、CentOS、Fedora平臺實例: 使用配置文件/etc/sysconfig/network-scripts/route-interface,interface可以根據實際的網卡換成網卡名,比如我要在eth0上加靜態路由,那就寫route-eth0 配置文件的格式如下: ADDRESS0=X.X.X.X NETMASK0=x.x.x.x GATEWAY0=X.X.X.x 如果有多條靜態路由要建立,那麽繼續在文件裏追加,ADDRESS、NETMASK、GATEWAY後面的數字遞增即可。如有2條記錄: ADDRESS0=X.X.X.X NETMASK0=x.x.x.x GATEWAY0=X.X.X.x ADDRESS1=X.X.X.X NETMASK1=x.x.x.x GATEWAY1=X.X.X.x 采用規範的方法的好處如下: 1.系統啟動的時候自動加上這些靜態路由,無需寫rc.local 2.如果修改了靜態路由,只需要service network restart即可,無需手動使用route命令增刪靜態路由
本文出自 “堅持就是勝利” 博客,轉載請與作者聯系!
Linux 更改靜態路由