如何在Linux中route?add命令添加路由(Linux?route)
route add命令是一個用于管理Linux操作系統(tǒng)網(wǎng)絡(luò)路由的命令。它允許用戶添加、刪除或修改網(wǎng)絡(luò)路由表中的條目。route add命令用于在Linux系統(tǒng)上添加靜態(tài)路由。靜態(tài)路由是手動配置的路由,它指定了數(shù)據(jù)包從一個網(wǎng)絡(luò)到達另一個網(wǎng)絡(luò)的路徑。通過添加靜態(tài)路由,可實現(xiàn)網(wǎng)絡(luò)分段、轉(zhuǎn)發(fā)和通信等功能。
使用 ip 添加路由
這是最簡單的方式。
<network_ip>/<cidr>
是希望能到達的網(wǎng)絡(luò),<gateway_ip>
是這條路由所使用的網(wǎng)關(guān)。若不指定所用的網(wǎng)卡設(shè)備,則會自動選擇電腦上的第一個網(wǎng)卡(不包括 loopback)。若要指定設(shè)備,可以在命令后面指明:
$ ip route add <network_ip>/<cidr> via <gateway_ip> ? # 例: $ ip route add 10.0.3.0/24 via 10.0.3.1
這里用連通兩個 LAN 來舉例:本網(wǎng)絡(luò)拓撲中有三個 Linux 主機:
- IP 地址為
10.0.2.2/24
的 Ubuntu 主機 - IP 地址為
10.0.3.2/24
的 Ubuntu 主機 - 作為上述兩個主機所在網(wǎng)絡(luò)的路由器的 RHEL8 主機
由于這兩個 Ubuntu 主機在不同的子網(wǎng)中(10.0.2.0 和 10.0.3.0),而它們的 ping 命令又是通過各自的默認網(wǎng)關(guān)向外發(fā)出請求,因此兩個主機目前并不能 ping 通。
要查看當前主機(10.0.2.2)的路由,可以使用 ip route
(或簡寫為 ip r
)
譯注:dev enp0s3
指本條路由對應(yīng)的網(wǎng)卡設(shè)備proto
指協(xié)議 "protocol",代表該條路由的路由協(xié)議(routing protocol)。其通常有如下幾個值:
- redirect - 該路由是由 ICMP 重定向添加的
- kernel - 該路由是在自動配置(autoconfiguration)時,由內(nèi)核添加的
- boot - 該路由是在啟動過程中配置的,會在路由守護進程(routing daemon)啟動時清除
- static - 該路由是由系統(tǒng)管理員手動添加的,會覆蓋動態(tài)路由(dynamic routing)。路由守護進程將按照它們的值運行,而且可能會把這些路由發(fā)給 peers - ra - 該路由是由路由發(fā)現(xiàn)協(xié)議(Router Discovery protocol)添加的scope
指本條路由到達目的地網(wǎng)絡(luò)的距離
- host - 該條路由的目的地地址為 localhost
- link - 該條路由的目的地地址為本地網(wǎng)絡(luò)(local network)
- universe - 該條路由的目的地地址在一跳之外(one hop away)src
指使用本條路由發(fā)送數(shù)據(jù)時要經(jīng)由的網(wǎng)絡(luò)接口 IP 。這里的意思是說發(fā)往 10.0.2.0/24 網(wǎng)絡(luò)的包都會從 10.0.2.2 地址的網(wǎng)卡發(fā)出。
設(shè)置方式例如:ip route add 78.22.45.0/24 via 10.45.22.1 src 10.45.22.12
這樣新創(chuàng)建的路由就是:經(jīng)由 10.45.22.1 發(fā)往 78.22.45.0/24 網(wǎng)絡(luò)的數(shù)據(jù)包,都會從 10.45.22.12 地址的網(wǎng)卡發(fā)出。但注意這只能影響真正發(fā)出這個包的主機,無法影響轉(zhuǎn)發(fā)——畢竟幫別的主機轉(zhuǎn)發(fā)包,肯定不能把人家 IP 包里的源地址給改了(當然 NAT 就是完全另外一回事了)
這個就是 Linux 系統(tǒng)的路由表,每個電腦都有一個。路由器會管理很多的路由。
接下來我們一條一條看看這三條路由
- 默認 情況下,對網(wǎng)絡(luò)發(fā)出的數(shù)據(jù)會被轉(zhuǎn)發(fā)到本地默認網(wǎng)關(guān)
10.0.2.1
- 除非 數(shù)據(jù)是發(fā)往
10.0.2.0/24
網(wǎng)絡(luò)的。如果是,則通過默認物理鏈路發(fā)送(比如 CAT 網(wǎng)線)到本地網(wǎng)絡(luò) - 除非 數(shù)據(jù)是發(fā)往
169.254.0.0/16
網(wǎng)絡(luò)的。如果是,則將通過默認物理鏈路發(fā)送到本地網(wǎng)絡(luò)
169.254.0.0/16 地址被稱為 APIPA (用于自動 IP 地址尋址 - Automatic IP Address Addressing)。這是系統(tǒng)在無法連接到網(wǎng)絡(luò)上 DHCP 服務(wù)器時使用的默認地址
在 10.0.2.2 主機當前的路由配置下(也就是上面圖中的),要發(fā)往 10.0.3.2/24 的數(shù)據(jù)都會被轉(zhuǎn)發(fā)給 10.0.2.1 路由器
然而,這個路由器會把我們發(fā)過去的數(shù)據(jù)再轉(zhuǎn)發(fā)到 10.0.3.0/24 網(wǎng)絡(luò)嗎?
在路由器上執(zhí)行一下 ip r
即可知道答案:
這里只有到 10.0.2.0/24 網(wǎng)絡(luò)的路由,顯然是有問題的。因此我們需要添加路由規(guī)則
$ ip route add 10.0.3.0/24 via 10.0.3.1
現(xiàn)在再 ping 就應(yīng)該能通了
在 Ubuntu 上配置永久路由
有三種方式:
- 將新路由添加進 NetworkManager 配置文件
- 添加進 Netplan YAML 配置文件
- 添加進
/etc/network/interfaces
配置文件(較老版本系統(tǒng))
NetworkManager
修改 /etc/NetworkManager/system-connections
目錄下的連接文件。該文件下會有以當前系統(tǒng)中網(wǎng)絡(luò)接口命名的配置文件
在網(wǎng)絡(luò)配置文件的 IPv4 部分添加一個 route1
屬性
使用下面的命令來讓設(shè)置生效
Netplan
Netplan 是一個 ubuntu 獨占的工具,但用起來很簡單
打開對應(yīng)的配置文件
$ sudo vi /etc/netplan/<configuration_file>.yaml
/etc/network/interfaces
如果發(fā)行版使用的是 ifup 和 ifdown 管理網(wǎng)絡(luò)接口,那么可以修改 /etc/network/interfaces
文件來添加路由:
$ sudo vi /etc/network/interfaces ? auto eth0 iface eth0 inet static address 10.0.2.2 netmask 255.255.255.0 up route add -net 10.0.3.0 netmask 255.255.0.0 gw 10.0.2.1
在 RHEL / CentOS 上添加永久路由配置
需要在 /etc/sysconfig/network-scripts
目錄中創(chuàng)建一個名為 route-<device>
的配置文件
使用 nmcli
$ sudo nmcli connection modify <interface_name> +ipv4.routes "<network_ip> <gateway_ip>"
例如,添加一條上文中講過的路由:
$ sudo nmcli connection modify enp0s3 +ipv4.routes "10.0.3.0/24 10.0.3.1"
執(zhí)行下面的命令生效:
$ sudo nmcli connection reload
解決互聯(lián)網(wǎng)連接問題
假設(shè)你用來連接互聯(lián)網(wǎng)的路由器是 192.168.178.1/24
檢查當前的路由表,就很容易猜出來無法連接網(wǎng)絡(luò)的原因了。思路如下:
- 要到達的 IP 在我當前的子網(wǎng)內(nèi)嗎?
- 若在,則不用通過路由器就能訪問,ARP 和以太網(wǎng)就能實現(xiàn)了
- 若不在,則需要確保自己的電腦有能夠到達聯(lián)網(wǎng)路由器的路由
首先要理出你所在網(wǎng)絡(luò)的架構(gòu),如下圖
無論解決什么網(wǎng)絡(luò)連接問題,都可以從路由下手:我的電腦有沒有到達目標電腦的路由?
在我和目標地址之間的計算機和路由器,都有沒有正確配置為可以為我進行路由?
如果能夠到達目標地址,那這個目標地址發(fā)回來的信息能否到達我的電腦?
能夠解決這些問題,網(wǎng)絡(luò)連接基本也就沒問題了
附加命令說明
1、添加網(wǎng)絡(luò)路由
route add -net 目標網(wǎng)段 網(wǎng)關(guān) [設(shè)備]
例如,將目標網(wǎng)絡(luò)192.168.1.1/24的數(shù)據(jù)包通過網(wǎng)關(guān)192.168.1.1進行路由:
route add -net 196.168.1.0/24 gw 192.168.1.1
2、添加主機路由
route add -host 目標主機地址 網(wǎng)關(guān) [設(shè)備]
例如:將單個主機192.168.1.100的數(shù)據(jù)包通過網(wǎng)關(guān)192.168.1.1進行路由:
route add -host 192.168.1.100 gw 192.168.1.1
3、指定網(wǎng)絡(luò)設(shè)備
在某些情況下,可能需要指定要使用的網(wǎng)絡(luò)設(shè)備。例如:
route add -net 192168.1.0/24 gw 192.168.1.1 dev eth0
4、查看路由表
可以使用route -n命令查看當前路由表
route -n
5、刪除路由
如果不再需要路由,可以使用route del命令刪除它:
route del 目標網(wǎng)關(guān) [設(shè)備]
總結(jié)
route add命令是Linux系統(tǒng)中管理網(wǎng)絡(luò)路由的重要工具。通過使用該命令,可以方便地添加、刪除和修改路由條目,以及查看和永久設(shè)置路由信息。掌握routeadd命令,可以更好地管理和配置Linux操作系統(tǒng)的網(wǎng)絡(luò)連接。
到此這篇關(guān)于如何在Linux中route add命令添加路由(Linux route)的文章就介紹到這了,更多相關(guān)Linux中route add命令添加路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux系統(tǒng)中.bash_profile文件詳解
大家好,本篇文章主要講的是Linux系統(tǒng)中.bash_profile文件詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01SpringBoot + Vue 項目部署上線到Linux 服務(wù)器的教程詳解
這篇文章主要介紹了SpringBoot + Vue 項目部署上線到Linux 服務(wù)器,本文給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08