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