Linux使用ip命令设置路由

时间:2020-01-09 10:40:25  来源:igfitidea点击:

您能解释ip命令在基于Linux的系统上设置路由吗?
如何使用ip命令配置Linux内核的路由表?

ip命令可在Linux上用于以下

  • 显示/操纵路线
  • 显示/操作设备
  • 路由策略
  • 隧道

如何查看或显示Linux路由表

执行以下命令:

$ ip route show

或者

$ ip route list

输出示例:

10.0.31.18 dev ppp0  proto kernel  scope link  src 10.1.3.103 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.1 
192.168.1.0/24 dev ra0  proto kernel  scope link  src 192.168.1.106 
169.254.0.0/16 dev eth0  scope link  metric 1000 
10.0.0.0/8 dev ppp0  scope link 
default via 192.168.1.1 dev ra0  metric 100

每个条目不过是路由表(Linux内核路由表)中的一个条目。
例如,以下行表示本地网络的路由。
到同一网络中系统的所有网络数据包都直接通过设备ra0发送:

192.168.1.0/24 dev ra0  proto kernel  scope link  src 192.168.1.106

我们的默认路由是通过ra0接口设置的,即所有无法根据路由表的先前条目发送的网络数据包都是通过此条目中定义的网关发送的,即192.168.1.1是我们的默认网关。

如何在Linux上设置到本地连接的网络eth0的路由

输入以下命令以直接通过设备eth0:将所有数据包发送到本地网络192.168.1.0,执行:

# ip route add 192.168.1.0/24 dev eth0

或通过192.168.1.254网关为192.168.1.0/24网络路由流量:

# ip route add 192.168.1.0/24 via 192.168.1.254 dev eth0

设置默认路由

无法根据路由表的先前条目发送的所有网络数据包都通过以下默认网关发送:

# ip route add default via 192.168.1.254

从路由表中删除路由

输入以下命令

# ip route delete 192.168.1.0/24 dev eth0

让我们也删除默认路由:

# ip route add default via 192.168.1.254 dev eth0

Linux使用ip命令添加默认路由/静态路由或删除路由。

如何验证路由配置?

使用ping命令或host命令命令来确保您可以访问网关:

ping Your-Gateway-Ip-Here
ping Your-DNS-Server-IP-Here
ping 192.168.1.254
ping www.theitroad.local
host www.theitroad.local

Linux使用ip命令设置路由并将其保存到配置文件

重新启动Linux服务器时,使用ip工具(或route命令)进行的所有路由设置都将丢失。
请参阅我们有关在Debian/Ubuntu或CentOS/Red Hat Enteprise Linux系统中配置静态路由的前一篇文章。

如何在Ubuntu或Debian上添加静态路由

这是使用cat命令显示的eth0的示例

cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto eth0
iface eth0 inet static
    address 192.168.1.24
    gateway 192.168.1.254

在CentOS/RHEL上添加静态路由

为接口eth0创建一个名为/etc/sysconfig/network-scripts/route-eth0的文件,并添加静态路由条目:

10.105.28.0/24 via 10.105.28.1 dev eth0

保存并关闭文件。
重新启动网络服务:

sudo service network restart

或者

sudo systemctl restart network