基礎命令學習目錄首頁html
原文連接:https://www.cnblogs.com/lpfuture/p/5857738.htmllinux
考試題一:linux下如何添加路由(百度面試題)面試
以上是原題,老男孩老師翻譯成以下3道題。vim
a.如何用命令行方式給linux機器添加一個默認網關,假設網關地址爲10.0.0.254?緩存
b. 192.168.1.0網段, 192.168.1.1網關的某一服務器想連入172.16.1.0/24段,該如何添加路由(奇虎360)服務器
c.若是添加一個主機路由?網絡
請分別解答。less
解答:route -net 172.16.1.0/24 gw 192.168.1.1oop
route 命令使用方法:post
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命令不一樣功能應用案例
原文連接: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地址是靜態仍是DHCPnmcli 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添加dns1nmcli con mod IF-NAME +ipv4.dns 8.8.8.8添加dns2nmcli con mod IF-NAME -ipv4.dns 8.8.8.8刪除dns