原文鏈接:https://www.cnblogs.com/lpfuture/p/5857738.html
考試題一:linux下如何添加路由(百度面試題)
以上是原題,老男孩老師翻譯成如下3道題。
a.如何用命令行方式給linux機器添加一個默認網關,假設網關地址為10.0.0.254?
b. 192.168.1.0網段, 192.168.1.1網關的某一服務器想連入172.16.1.0/24段,該如何添加路由(奇虎360)
c.如果添加一個主機路由?
請分別解答。
解答:route -net 172.16.1.0/24 gw 192.168.1.1
route 命令使用方法:
a.缺省網關路由
默認網關就是數據包不匹配任何設定的路由規則,最后流經的地址關口!網關按字面意思就是網絡的關口,就相當於我們家里房子的門一樣,如果外出就要經過房門,數據包也是一樣。
本題的答案:
route del default gw 10.0.0.254
解答實踐:
[root@oldboy ~]# route -n #==>查看路由表,netstat -rn也可以。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
#==>這里就是系統的默認網關信息,表示去任何地方(0.0.0.0),都發給10.0.0.254,因為是默認網關,所以,放在了最后一條。路由也是有順序的,如果不符合任何一條規則就交給默認網關處理。
[root@oldboy ~]# route del default gw 10.0.0.254 #==>這個命令是刪除默認的網關。
[root@oldboy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[root@oldboy ~]# route add default gw 10.0.0.254 #==>這個命令是添加默認的網關,也是本題的答案。
[root@oldboy ~]# netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0 #==>又回來了
[root@oldboy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0 #這里就是添加的默認網關記錄。
特別強調:實際上route add default gw 10.0.0.254 就相當於route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254
b.網絡路由:即去往某一網絡或網段的路由
一般多網段之間互相通信,希望建立一條優先路由,而不是通過默認網關時就可以配置網絡路由。還是拿房子比喻,你現在不是要出門,而是卧室,衛生間,去卧室就要經過卧室的門,去衛生間也要經過衛生間的門,這里的卧室和衛生間的門就可以認為是去往某一網段的路由,而不是默認路由(即房子的門。)
實際工作中會有需求,兩個不同的內部網絡之間互訪,而不是出網訪問,就是上面例子的情況。
本題的答案:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
解答實踐:
[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
SIOCADDRT: 網絡不可達 #==>當連不通地址192.168.1.1時,無法添加路由。
[root@oldboy ~]# ifconfig eth0:0 192.168.1.1/24 up #==>添加一個IP別名用於臨時測試,如果永久生效最好加雙網卡或寫入到配置文件。
[root@oldboy ~]# ifconfig eth0:0 #==>查看添加的IP別名(網絡里把這種多IP的方式稱為子接口)
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:65:A4:FD
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
再來添加去192.168.1.0的數據包,交給192.168.1.1處理。
[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
[root@oldboy ~]# netstat -rn #==>和route -n很像。
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0 #==>這就是網絡路由
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
拓展:其他寫法
[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 #==>指定設備而不是地址。
[root@oldboy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 192.168.1.1 255.255.255.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
[root@oldboy ~]# route del -net 192.168.1.0/24 dev eth0
[root@oldboy ~]# route add -net 192.168.1.0/24 dev eth0
[root@oldboy ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth0
總結:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.1.0/24 dev eth0
route del -net 192.168.1.0/24 dev eth0
特別強調:以上配置在重啟網絡時都會失效,那么如何讓它永久生效呢?
如果要是永久生效,有如下幾種方法:
方法一:
vi /etc/sysconfig/network-scripts/route-eth0 #默認不存在此文件
加入如下內容:
192.168.1.0/24 via 192.168.1.1
提示:寫到配置里,重啟網絡服務和重啟系統都會生效!
方法二:
vi /etc/sysconfig/static-routes #默認不存在此文件
加入如下內容:
any net 192.168.1.0/24 gw 192.168.1.1
提示:寫到配置里,重啟網絡服務和重啟系統都會生效!
方法三:
vi /etc/rc.local
加入如下內容:
route add -net 192.168.1.0/24 gw 192.168.1.1
PS: 方法一推薦生產環境使用
提示:方法三寫到/etc/rc.local里只在開機時加載,當手工重啟網絡后會失效,但是重啟系統后會生效!
如果是配置默認路由網關可以再網卡配置里:
[root@oldboy ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.254
c.主機路由:就是去往某個主機地址如何配置路由
/sbin/route add -host 192.168.2.13 dev eth2
/sbin/route add -host 202.81.11.91 dev lo
例如:keepalived或heartbeat高可用服務器對之間的使用單獨網卡接心跳線通信就會用到以上主機路由。
route命令拓展:
刪除一條默認路由:
route del default gw 10.0.0.254
刪除一條靜態路由:
route del –net 目標網絡 netmask
如:route del -net 192.168.1.0/24 或route del -net 192.168.1.0 netmask 255.225.255.0
刪除一條主機路由:
route del -host 192.168.1.10 dev eth0
有關route命令更詳細的內容需要大家執行man route查看幫助,並仔細總結。
有關此題,我們談下多網段生產環境網段划分及路由的解決方案(1000台機器划分網段方案)。我們能感受到route命令不同功能應用案例
---------------------
作者:zqixiao_09
來源:CSDN
原文:https://blog.csdn.net/zqixiao_09/article/details/53401818
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
原文鏈接:http://blog.51cto.com/13574027/2084953
一 路由的基礎知識:
1)路由概念
路由: 跨越從源主機到目標主機的一個互聯網絡來轉發數據包的過程
路由器:能夠將數據包轉發到正確的目的地,並在轉發過程中選擇最佳路徑的設備
路由表:在路由器中維護的路由條目,路由器根據路由表做路徑選擇
直連路由:當在路由器上配置了接口的IP地址,並且接口狀態為up的時候,路由表中就出現直連路由項
靜態路由:是由管理員手工配置的,是單向的。
默認路由:當路由器在路由表中找不到目標網絡的路由條目時,路由器把請求轉發到默認路由接口 。
2)靜態路由和默認路由的特點
靜態路由特點:
路由表是手工設置的;
除非網絡管理員干預,否則靜態路由不會發生變化;
路由表的形成不需要占用網絡資源;
適用環境:一般用於網絡規模很小、拓撲結構固定的網絡中。
默認路由特點:
在所有路由類型中,默認路由的優先級最低
適用環境:一般應用在只有一個出口的末端網絡中或作為其他路由的補充
浮動靜態路由:
路由表中存在相同目標網絡的路由條目時,根據路由條目優先級的高低,將請求轉發到相應端口;
鏈路冗余的作用;
3)路由器轉發數據包時的封裝過程
源IP和目標IP不發生變化,在網絡的每一段傳輸時,源和目標MAC發生變化,進行重新封裝,分別是每一段的源和目標地址
4)要完成對數據包的路由,一個路由器必須至少了解以下內容:
a)目的地址
b)相連路由器,並可以從哪里獲得遠程網絡的信息
c)到所有遠程網絡的可能路由
d)到達每個遠程網絡的最佳路由
e)如何維護並驗證路由信息
f)路由和交換的對比
路由工作在網絡層
a)根據“路由表”轉發數據
b)路由選擇
c)路由轉發
交換工作在數據鏈路層
d)根據“MAC地址表”轉發數據
e)硬件轉發
二.命令參數:
-c 顯示更多信息
-n 不解析名字
-v 顯示詳細的處理信息
-F 顯示發送信息
-C 顯示路由緩存
-f 清除所有網關入口的路由表。
-p 與 add 命令一起使用時使路由具有永久性。
add:添加一條新路由。
del:刪除一條路由。
-net:目標地址是一個網絡。
-host:目標地址是一個主機。
netmask:當添加一個網絡路由時,需要使用網絡掩碼。
gw:路由數據包通過網關。注意,你指定的網關必須能夠達到。
metric:設置路由跳數。
Command 指定您想運行的命令 (Add/Change/Delete/Print)。
Destination 指定該路由的網絡目標。
mask Netmask 指定與網絡目標相關的網絡掩碼(也被稱作子網掩碼)。
Gateway 指定網絡目標定義的地址集和子網掩碼可以到達的前進或下一躍點 IP 地址。
metric Metric 為路由指定一個整數成本值標(從 1 至 9999),當在路由表(與轉發的數據包目標地址最匹配)的多個路由中進行選擇時可以使用。
if Interface 為可以訪問目標的接口指定接口索引。若要獲得一個接口列表和它們相應的接口索引,使用 route print 命令的顯示功能。可以使用十進制或十六進制值進行接口索引。
三 命令使用例子
1.添加到主機的路由
#route add -host 192.168.1.2 dev eth0:0
#route add -host 10.20.30.148 gw 10.20.30.40
2.添加到網絡的路由
#route add -net 10.20.30.40 netmask 255.255.255.248 eth0
#route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
#route add -net 192.168.1.0/24 eth1
3.添加默認路由
#route add default gw 192.168.1.1
4.刪除路由
#route del -host 192.168.1.2 dev eth0:0
#route del -host 10.20.30.148 gw 10.20.30.40
#route del -net 10.20.30.40 netmask 255.255.255.248 eth0
#route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
#route del -net 192.168.1.0/24 eth1
#route del default gw 192.168.1.1 //route del default 刪除所有的默認路由
添加一條默認路由
#route add default gw 10.0.0.1 //默認只在內存中生效開機自啟動可以追加到/etc/rc.local文件里
#echo "route add default gw 10.0.0.1" >>/etc/rc.local
添加一條靜態路由
#route add -net 192.168.2.0/24 gw 192.168.2.254
要永久生效的話要這樣做:
#echo "any net 192.168.2.0/24 gw 192.168.2.254" >>/etc/sysconfig/static-routes
添加到一台主機的靜態路由
route add -host 192.168.2.2 gw 192.168.2.254
要永久生效的話要這樣做:
#echo "any host 192.168.2.2 gw 192.168.2.254 " >>/etc/sysconfig/static-routes
注:Linux 默認沒有這個文件 ,得手動創建一個
5設置包轉發
在Linux中默認的內核配置已經包含了路由功能,但默認並沒有在系統啟動時啟用此功能;
開啟Linux的路由功能可以通過調整內核的網絡參數來實現,方法如下:
臨時開啟路由功能:
#echo 1 > /proc/sys/net/ipv4/ip_forward
或者# sysctl -w net.ipv4.ip_forward=1
永久開啟路由功能
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
#sysctl -p
6.靜態路由配置
添加靜態路由到路由表的語法如下:
1.ip route [destination_network] [mask] [next-hop_address]administrative_distance]
參數解析:
ip route 用於創建靜態路由的命令。
Destination_network 需要發布到路由表中的網段。
Mask 在這一網絡上使用的子網掩碼。
Next-hop_address 下一跳路由器的地址。
administrative_distance 默認時,靜態路由有一個取值為1 的管理性距離。在這個命令的尾部添加管理權來修改這個默認值。
例如
ip route 172.16.1.0 255.255.255.0 172.16.2.1
查看路由表除了使用route -n命令外,還可以使用ip route
[root@dev~]# ip route
192.168.1.17 dev ppp0 proto kernel scope link src 192.168.1.190
10.1.32.14 dev tun0 scope link
10.1.32.12 dev tun0 scope link
10.4.8.2 via 192.168.9.254 dev eth0 src 192.168.9.200 mtu 1500 advmss 1460
10.4.9.0/24 dev tun0 scope link
192.168.9.0/24 dev eth0 proto kernel scope link src 192.168.9.200 metric 1
10.2.0.0/16 dev tun0 scope link
10.0.0.0/16 dev tun0 scope link
10.1.0.0/16 dev tun0 scope link
192.168.0.0/16 dev tun0 scope link
default via 192.168.9.254 dev eth0
[root@dev ~]# ip route
192.168.1.17 dev ppp0 proto kernel scope link src 192.168.1.190
10.1.32.14 dev tun0 scope link
10.1.32.12 dev tun0 scope link
10.4.8.2 via 192.168.9.254 dev eth0 src 192.168.9.200 mtu 1500 advmss 1460
10.4.9.0/24 dev tun0 scope link
192.168.9.0/24 dev eth0 proto kernel scope link src 192.168.9.200 metric 1
10.2.0.0/16 dev tun0 scope link
10.0.0.0/16 dev tun0 scope link
10.1.0.0/16 dev tun0 scope link
192.168.0.0/16 dev tun0 scope link
default via 192.168.9.254 dev eth0
二. linux網卡命令
Centos6
ifconfig 查看所有網卡
ifconfig -網卡名 查看單個網卡信息
ifconfig up 網卡名 重啟網卡
ifconfig down 網卡名 禁用網卡
/etc/sysconfig/network-scripts/ 網卡配置文件
Centos6手動改網卡:
vim /etc/sysconfig/network-scripts/ifcfg-ethX
DEVICE=eth0 //設備名字
ONBOOT=yes //是否開啟
NM_CONTROLLED=yes //是否實時生效
BOOTPROTO=static //ip的狀態
IPADDR=172.18.253.211 //ip
PREFIX=16 //ip id
GATEWAY=172.18.0.1//網關
DNS1=172.18.0.1 //域名
HWADDR=00:0C:29:55:04:FE //mac地址
Centos7 nmlic命令集
顯示所有網絡連接:nmcli con show
顯示活動網絡連接:nmcli con show -active
顯示指定網絡連接的詳情:nmcli con show eno16777728
顯示網絡設備連接狀態:nmcli dev status
顯示所有網絡設備的詳情:nmcli dev show
顯示指定網絡設備的詳情:nmcli dev show eno16777728
啟用網絡連接:nmcli con up eno16777728 停用網絡連接(可被自動激活):nmcli con down eno33554960
禁用網卡,防止被自動激活:nmcli dev dis eth0
刪除網絡連接的配置文件:nmcli con del eno33554960
重新加載配置網絡配置文件:nmcli con reload
動態獲取IP方式的網絡連接配置:nmcli con add con-name eno16777728 type ethernet ifname eno16777728
指定靜態IP方式的網絡連接配置:nmcli con add con-name eno16777728 ifname eno16777728 autoconnect yes type ethernet ip4 10.1.254.254/16 gw4 10.1.0.1
啟用/關閉所有的網絡連接:nmcli net on/off 禁用網絡設備並防止自動激活:nmcli con dis eno33554960
查看添加網絡連接配置的幫助:nmcli con add help
修改網絡連接單項參數
nmcli con mod IF-NAME connection.autoconnect yes修改為自動連接
nmcli con mod IF-NAME ipv4.method manual | dhcp修改IP地址是靜態還是DHCP
nmcli con mod IF-NAME ipv4.addresses “172.25.X.10/24 172.25.X.254”修改IP配置及網關
nmcli con mod IF-NAME ipv4.gateway 10.1.0.1修改默認網關
nmcli con mod IF-NAME +ipv4.addresses 10.10.10.10/16添加第二個IP地址
nmcli con mod IF-NAME ipv4.dns 114.114.114.114添加dns1
nmcli con mod IF-NAME +ipv4.dns 8.8.8.8添加dns2
nmcli con mod IF-NAME -ipv4.dns 8.8.8.8刪除dns