一、Iproute2簡(jiǎn)介
Iproute2是一個(gè)在Linux下的高級(jí)網(wǎng)絡(luò)管理工具軟件。實(shí)際上,它是通過rtnetlink sockets方式動(dòng)態(tài)配置內(nèi)核的一些小工具組成的,從Linux2.2內(nèi)核開始,Alexey Kuznetsov 實(shí)現(xiàn)了通過rtnetlink sockets用來配置網(wǎng)絡(luò)協(xié)議棧,它是一個(gè)現(xiàn)代的強(qiáng)大的接口。
centos安裝iproute2命令:
yum install -y iprouteip -V
二、iproute2常用命令
net-tools和iproute2的大致對(duì)比:
net-tools | iproute2 | 功能 |
netstat -r/route -n | ip route show | |
route add | ip route add | 添加路由 |
route del | ip route del | 刪除路由 |
ifconfig | ip link | 顯示up狀態(tài)(激活狀態(tài))的網(wǎng)卡信息 |
ifconfig -a | ip addr show | 顯示所有網(wǎng)卡的信息,包含未up的 |
ifconfig -s | ip -s link | 顯示摘要信息 |
ifconfig -help | ip -help | 查看幫助 |
ifconfig eth0 up | ip link set eth0 up | 啟動(dòng)網(wǎng)卡 |
ifconfig eth0 down | ip link set eth0 down | 停掉網(wǎng)卡 |
netstat | ss | 監(jiān)控工具 |
netstat -l | ss -l | 查看listen監(jiān)聽狀態(tài)的連接信息 |
iptunnel | ip tunnel | ip隧道 |
netstat -g/ipmaddr | ip maddr | 多播地址管理 |
arp -na | ip neigh | arp地址解析信息ip->mac地址 |
三、路由(ip rule、ip route)
1)路由策略(ip rule)
基于策略的路由比傳統(tǒng)路由在功能上更強(qiáng)大,使用更靈活,它使網(wǎng)絡(luò)管理員不僅能夠根據(jù)目的地址而且能夠根據(jù)報(bào)文大小、應(yīng)用或IP源地址等屬性來選擇轉(zhuǎn)發(fā)路徑。
ip rule 命令:
Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 刪除; llist 列表)
1、添加規(guī)則
1)Source IP
根據(jù)來源端IP來決定數(shù)據(jù)包參考哪個(gè)路由表發(fā)送出去。以下兩個(gè)示例分別指出,如果數(shù)據(jù)包的來源端IP是192.168.182.10,就參考路由表10;如果來源端IP為192.168.182.0/24網(wǎng)段的IP,就參考路由表20。
ip rule add from 192.168.182.10 table 10 ip rule add from 192.168.182.0/24 table 20
2)Destination IP
根據(jù)目的端IP來決定數(shù)據(jù)包參考哪個(gè)路由表發(fā)送出去。以下兩個(gè)示例分別指出,如果數(shù)據(jù)包的目的端IP是192.168.183.1,就參考路由表10;如果目的端IP是192.168.183.0/24網(wǎng)段的IP,就參考路由表20。
ip rule add to 192.168.183.1 table 10 ip rule add to 192.168.183.0/24 table 20
2、示例
# 添加路由表echo ‘1024 tab1’ >> /etc/iproute2/rt_tables# 通過路由表 tab1 路由來自源地址為192.168.182.0/24的數(shù)據(jù)包,優(yōu)先級(jí)220ip rule add from 192.168.182.0/24 table tab1 prio 220# 把源地址為192.168.182.247的數(shù)據(jù)報(bào)的源地址轉(zhuǎn)換為192.168.182.130,并通過表tab1進(jìn)行路由ip rule add from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320# 刪除ip rule del from 192.168.182.0/24 table tab1 prio 220ip rule del from 192.168.182.247 nat 192.168.182.130 table tab1 prio 320
我們執(zhí)行ip rule show命令所顯示內(nèi)容的第一個(gè)字段就是優(yōu)先級(jí)別(prio),數(shù)字越小,代表優(yōu)先級(jí)別越高,也代表這條規(guī)則可以排得越靠前,如此數(shù)據(jù)包在進(jìn)行條件匹配時(shí),就會(huì)越早匹配到這條規(guī)則,從輸出的數(shù)據(jù)中,默認(rèn)優(yōu)先級(jí)別0、32766及32767已被占用,因此,在添加規(guī)則時(shí),如果沒有特別設(shè)置優(yōu)先級(jí)別,那么,優(yōu)先級(jí)別默認(rèn)會(huì)從32766開始遞減,如32765、32764……,如果我們需要特別設(shè)置優(yōu)先級(jí)別,可以在ip rule add命令的最后加上prio XXX參數(shù)。
2)路由表 (使用 ip route 命令操作靜態(tài)路由表)
所謂路由表,指的是路由器或者其他互聯(lián)網(wǎng)網(wǎng)絡(luò)設(shè)備上存儲(chǔ)的表,該表中存有到達(dá)特定網(wǎng)絡(luò)終端的路徑。路由器的主要工作就是為經(jīng)過路由器的每個(gè)數(shù)據(jù)包尋找一條最佳的傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)。為了完成這項(xiàng)工作,在路由器中保存著各種傳輸路徑的相關(guān)數(shù)據(jù)——路由表(Routing Table),供路由選擇時(shí)使用,表中包含的信息決定了數(shù)據(jù)轉(zhuǎn)發(fā)的策略。路由表根據(jù)其建立的方法,可以分為動(dòng)態(tài)路由表和靜態(tài)路由表。
linux 系統(tǒng)中,可以自定義從 1-252個(gè)路由表,其中,linux系統(tǒng)維護(hù)了4個(gè)路由表:
0: 系統(tǒng)保留表253: defulte table 沒特別指定的默認(rèn)路由都放在改表254: main table 沒指明路由表的所有路由放在該表,**默認(rèn)表**255: locale table 保存本地接口地址,廣播地址、NAT地址 由系統(tǒng)維護(hù),用戶不得更改
備注:我們使用ip route list 或 route -n 或 netstat -rn查看的路由記錄,也都是main表中記錄。
路由表的查看可有以下二種方法:
ip route list table table_numberip route list table 1204ip route list table table_nameip route list table tab1
路由表序號(hào)和表名的對(duì)應(yīng)關(guān)系在 /etc/iproute2/rt_tables 文件中,可手動(dòng)編輯。路由表添加完畢即時(shí)生效,下面為實(shí)例(最好把默認(rèn)路由最后添加):
ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
默認(rèn)路由需要特別注意,走默認(rèn)路由的話會(huì)導(dǎo)致非同一子網(wǎng)內(nèi)的訪問失敗
3)route 命令里面的metric是做什么用的?
metric 為路由指定所需躍點(diǎn)數(shù)的整數(shù)值(范圍是 1 ~ 9999),它用來在路由表里的多個(gè)路由中選擇與轉(zhuǎn)發(fā)包中的目標(biāo)地址最為匹配的路由。所選的路由具有最少的躍點(diǎn)數(shù)。躍點(diǎn)數(shù)能夠反映躍點(diǎn)的數(shù)量、路徑的速度、路徑可靠性、路徑吞吐量以及管理屬性。
路由算法使用了許多不同的metric以確定最佳路徑。復(fù)雜的路由算法可以基于多個(gè)metric選擇路由,并把它們結(jié)合成一個(gè)復(fù)合的metric。常用的metric如下:
1、路徑長(zhǎng)度
【路徑長(zhǎng)度】是最常用的路由metric。一些路由協(xié)議允許網(wǎng)管給每個(gè)網(wǎng)絡(luò)鏈接人工賦以代價(jià)值,這種情況下,路由長(zhǎng)度是所經(jīng)過各個(gè)鏈接的代價(jià)總和。其它路由協(xié)議定義了跳數(shù),即分組在從源到目的的路途中必須經(jīng)過的網(wǎng)絡(luò)產(chǎn)品,如路由器的個(gè)數(shù)。
2、可靠性
可靠性,在路由算法中指網(wǎng)絡(luò)鏈接的可依賴性(通常以位誤率描述),有些網(wǎng)絡(luò)鏈接可能比其它的失效更多,網(wǎng)路失效后,一些網(wǎng)絡(luò)鏈接可能比其它的更易或更快修復(fù)。任何可靠性因素都可以在給可靠率賦值時(shí)計(jì)算在內(nèi),通常是由網(wǎng)管給網(wǎng)絡(luò)鏈接賦以metric值。
3、延遲
路由延遲指分組從源通過網(wǎng)絡(luò)到達(dá)目的所花時(shí)間。很多因素影響到延遲,包括中間的網(wǎng)絡(luò)鏈接的帶寬、經(jīng)過的每個(gè)路由器的端口隊(duì)列、所有中間網(wǎng)絡(luò)鏈接的擁塞程度以及物理距離。因?yàn)檠舆t是多個(gè)重要變量的混合體,它是個(gè)比較常用且有效的metric。
4、帶寬
帶寬指鏈接可用的流通容量。在其它所有條件都相等時(shí),10Mbps的以太網(wǎng)鏈接比64kbps的專線更可取。雖然帶寬是鏈接可獲得的最大吞吐量,但是通過具有較大帶寬的鏈接做路由不一定比經(jīng)過較慢鏈接路由更好。例如,如果一條快速鏈路很忙,分組到達(dá)目的所花時(shí)間可能要更長(zhǎng)。
5、負(fù)載
負(fù)載指網(wǎng)絡(luò)資源,如路由器的繁忙程度。負(fù)載可以用很多方面計(jì)算,包括CPU使用情況和每秒處理分組數(shù)。持續(xù)地監(jiān)視這些參數(shù)本身也是很耗費(fèi)資源的。
6、通信代價(jià)
通信代價(jià)是另一種重要的metric,尤其是有一些公司可能關(guān)系運(yùn)作費(fèi)用甚于性能。即使線路延遲可能較長(zhǎng),他們也寧愿通過自己的線路發(fā)送數(shù)據(jù)而不采用昂貴的公用線路。
四、ip route基本用法
1)顯示ip地址
ip aip address showip addr show dev ens33ip a sh ens33
2)列出規(guī)則,查看表
ip ruleip rule listip rule show
3)增加/刪除/清空規(guī)則
# 增加規(guī)則ip rule add from 192.168.1.10 table 10 ip rule [del|delete]ip rule del from 192.168.1.10 table 10# 清空所有規(guī)則,沒有參數(shù)ip rule flush
4)列出路由
ip route listip route showip route# 顯示所有路由表的路由ip route show table all
5)查看指定網(wǎng)段的路由
ip route list 192.168.182.0/24
6)添加路由
ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1# 添加默認(rèn)路由ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
7)刪除路由
ip route del 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab1ip route del default via 192.168.182.2 dev ens33 proto static metric 100 table tab1
8)清空指定網(wǎng)絡(luò)的路由
# 清空默認(rèn)表路由ip route flush# 清空指定表路由ip route flush table tab1# 模糊匹配清空路由ip route flush 192.168.182.0/24 #這個(gè)是清理所有192.168.182.0/24相關(guān)的所有路由,#有時(shí)候設(shè)置錯(cuò)網(wǎng)關(guān)存在多條記錄,就需要一次性清空相關(guān)路由再進(jìn)行添加
五、路由分類之動(dòng)態(tài)路由
動(dòng)態(tài)路由是指路由器能夠自動(dòng)地建立自己的路由表,并且能夠根據(jù)實(shí)際情況的變化適時(shí)地進(jìn)行調(diào)整。它是與靜態(tài)路由相對(duì)的一個(gè)概念,指路由器能夠根據(jù)路由器之間的交換的特定路由信息自動(dòng)地建立自己的路由表,并且能夠根據(jù)鏈路和節(jié)點(diǎn)的變化適時(shí)地進(jìn)行自動(dòng)調(diào)整。當(dāng)網(wǎng)絡(luò)中節(jié)點(diǎn)或節(jié)點(diǎn)間的鏈路發(fā)生故障,或存在其它可用路由時(shí),動(dòng)態(tài)路由可以自行選擇最佳的可用路由并繼續(xù)轉(zhuǎn)發(fā)報(bào)文。
常見的動(dòng)態(tài)路由協(xié)議有以下幾個(gè):
路由信息協(xié)議(RIP)、OSPF(Open Shortest Path First開放式最短路徑優(yōu)先)、IS-IS(Intermediate System-to-Intermediate System,中間系統(tǒng)到中間系統(tǒng))、邊界網(wǎng)關(guān)協(xié)議(BGP)是運(yùn)行于 TCP 上的一種自治系統(tǒng)的路由協(xié)議。
六、ip route結(jié)合iptables做高級(jí)路由策略
1、創(chuàng)建路由表tab2
echo ‘1025 tab2’ >> /etc/iproute2/rt_tables
2、添加 ip rule 規(guī)則
ip rule add fwmark 3 table tab2
(fwmark 3是標(biāo)記,table tab1是路由表tab1。 意思就是凡是標(biāo)記了 3 的數(shù)據(jù)使用tab1 路由表)3、添加路由規(guī)則
ip route add 192.168.182.0/24 dev ens33 proto kernel scope link src 192.168.182.130 metric 100 table tab2# 添加默認(rèn)路由ip route add default via 192.168.182.2 dev ens33 proto static metric 100 table tab2
4、使用iptables給相應(yīng)的數(shù)據(jù)打上標(biāo)記:
iptables -A PREROUTING -t mangle -i ens33 -s 192.168.182.130-192.168.182.180 -j MARK –set-mark 3
因?yàn)閙angle的處理是優(yōu)先于 nat 和fiter表的,所以相應(yīng)數(shù)據(jù)包到達(dá)之后先打上標(biāo)記,之后再通過ip rule規(guī)則。對(duì)應(yīng)的數(shù)據(jù)包使用相應(yīng)的路由表進(jìn)行路由,最后讀取路由表信息,將數(shù)據(jù)包送出網(wǎng)關(guān)。
七、traceroute命令使用
1)簡(jiǎn)介
traceroute指令讓你追蹤網(wǎng)絡(luò)數(shù)據(jù)包的路由途徑,預(yù)設(shè)數(shù)據(jù)包大小是40Bytes,用戶可另行設(shè)置。當(dāng)然每次數(shù)據(jù)包由某一同樣的出發(fā)點(diǎn)(source)到達(dá)某一同樣的目的地(destination)走的路徑可能會(huì)不一樣,但基本上來說大部分時(shí)候所走的路由是相同的。linux系統(tǒng)中,我們稱之為traceroute,在 Windows中為tracert。 traceroute通過發(fā)送小的數(shù)據(jù)包到目的設(shè)備直到其返回,來測(cè)量其需要多長(zhǎng)時(shí)間。一條路徑上的每個(gè)設(shè)備traceroute要測(cè)3次。輸出結(jié)果中包括每次測(cè)試的時(shí)間(ms)和設(shè)備的名稱(如有的話)及其IP地址。
2)命令格式:
traceroute [-dFlnrvx][-f][-g…][-i][-m][-p][-s][-t][-w][主機(jī)名稱或IP地址][數(shù)據(jù)包大小]
命令參數(shù):
-d 使用Socket層級(jí)的排錯(cuò)功能。-f 設(shè)置第一個(gè)檢測(cè)數(shù)據(jù)包的存活數(shù)值TTL的大小。-F 設(shè)置勿離斷位。-g 設(shè)置來源路由網(wǎng)關(guān),最多可設(shè)置8個(gè)。-i 使用指定的網(wǎng)絡(luò)界面送出數(shù)據(jù)包。-I 使用ICMP回應(yīng)取代UDP資料信息。-m 設(shè)置檢測(cè)數(shù)據(jù)包的最大存活數(shù)值TTL的大小。-n 直接使用IP地址而非主機(jī)名稱。-p 設(shè)置UDP傳輸協(xié)議的通信端口。-r 忽略普通的Routing Table,直接將數(shù)據(jù)包送到遠(yuǎn)端主機(jī)上。-s 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。-t 設(shè)置檢測(cè)數(shù)據(jù)包的TOS數(shù)值。-v 詳細(xì)顯示指令的執(zhí)行過程。-w 設(shè)置等待遠(yuǎn)端主機(jī)回報(bào)的時(shí)間。-x 開啟或關(guān)閉數(shù)據(jù)包的正確性檢驗(yàn)。
3)簡(jiǎn)單使用
1、不加任何參數(shù)
$ traceroute www.baidu.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packets 1 gateway (192.168.182.2) 0.094 ms 0.077 ms 0.044 ms 0.079 ms 2 * * * * 3 * * * * 4 * * * * 5 * * * * 6 * * * * 7 * * * * 8 * * * * 9 * * * *10 * * * *11 * * * *12 * * * *13 * * * *14 * * * *15 * * * *16 * * * *17 * * * *18 * * * *19 * * * *20 * * * *21 * * * *22 * * * *23 * * * *24 * * * *25 * * * *26 * * * *27 * * * *28 * * * *29 * * * *30 * * * *
說明:
- 記錄按序列號(hào)從1開始,每個(gè)紀(jì)錄就是一跳 ,每跳表示一個(gè)網(wǎng)關(guān),我們看到每行有三個(gè)時(shí)間,單位是ms,其實(shí)就是-q的默認(rèn)參數(shù)。探測(cè)數(shù)據(jù)包向每個(gè)網(wǎng)關(guān)發(fā)送3個(gè)數(shù)據(jù)包后,網(wǎng)關(guān)響應(yīng)后返回的時(shí)間;如果您用 traceroute -q 4 www.baidu.com ,表示向每個(gè)網(wǎng)關(guān)發(fā)送4個(gè)數(shù)據(jù)包。
- 有時(shí)我們traceroute一臺(tái)主機(jī)時(shí),會(huì)看到有一些行是以星號(hào)表示的。出現(xiàn)這樣的情況,可能是防火墻封掉了ICMP的返回信息,所以我們得不到什么相關(guān)的數(shù)據(jù)包返回?cái)?shù)據(jù)。
- 有時(shí)我們?cè)谀骋痪W(wǎng)關(guān)處延時(shí)比較長(zhǎng),有可能是某臺(tái)網(wǎng)關(guān)比較阻塞,也可能是物理設(shè)備本身的原因。當(dāng)然如果某臺(tái)DNS出現(xiàn)問題時(shí),不能解析主機(jī)名、域名時(shí),也會(huì)有延時(shí)長(zhǎng)的現(xiàn)象;您可以加-n 參數(shù)來避免DNS解析,以IP格式輸出數(shù)據(jù)。
2、跳數(shù)設(shè)置(-m)
$ traceroute -m 10 www.taobao.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 10 hops max, 60 byte packets 1 gateway (192.168.182.2) 0.116 ms 0.095 ms 0.036 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * *10 * * *
3、顯示IP地址,不查主機(jī)名(-n)
$ traceroute -n -m 4 www.baidu.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets 1 192.168.182.2 0.079 ms 0.039 ms 0.037 ms 2 * * * 3 * * * 4 * * *
4、探測(cè)包使用的基本UDP端口設(shè)置8080(-p)
$ traceroute -p 8080 -m 4 www.baidu.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets 1 gateway (192.168.182.2) 0.096 ms 0.042 ms 0.067 ms 2 * * * 3 * * * 4 * * *
5、繞過正常的路由表,直接發(fā)送到網(wǎng)絡(luò)相連的主機(jī)(-r)
$ traceroute -r www.baidu.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 30 hops max, 60 byte packetsconnect: Network is unreachable
6、把對(duì)外發(fā)探測(cè)包的等待響應(yīng)時(shí)間設(shè)置為3秒(-w)
$ traceroute -w 3 -m 4 www.baidu.com
輸出:
traceroute to www.baidu.com (183.232.231.174), 4 hops max, 60 byte packets 1 gateway (192.168.182.2) 0.102 ms 0.065 ms 0.066 ms 2 * * * 3 * * * 4 * * *