![cover](https://img-blog.csdnimg.cn/img_convert/4f39252e6c254036bc851fc80756c6ab.png)
ip route 路由命令详解
(523条消息) ip route 命令详解_thj_blog的博客-CSDN博客_ip route命令详解
Linux如何查看网关地址 - study_goup - 博客园 (cnblogs.com)
ip route add 10.204.0.0/16 via 10.204.0.10 dev enp0s31f6.204 proto static metric 200
10.0.0.0/8 dev enp0s31f6.204 proto kernel scope link src 10.204.0.10 metric 200
:~$ sudo ip route del 10.0.0.0/8 dev enp0s31f6.204
sudo ip route del default via 10.138.8.1 dev enx0826ae3de5a2
添加路由192.20.30.0/24网段走eth0网卡
ip route add 192.20.30.0/24 dev eth0 table local
Linux下ip route、ip rule、iptables的关系(转) - EasonJim - 博客园 (cnblogs.com)
(608条消息) ip rule,ip route,iptables 三者之间的关系_iptables route_bob62856的博客-CSDN博客
android 添加特定IP走局域网 - MayBreath - 博客园 (cnblogs.com)
如何在Linux中检查路由表? - 知乎 (zhihu.com)
配置来自172.20.30.3的ip数据转发到rmnet_data0网卡(自动获取网卡ip)
iptables -t nat -I POSTROUTING -s 172.20.30.3 -o rmnet_data0 -j MASQUERADE
以一例子来说明:公司内网要求192.168.0.100 以内的使用 10.0.0.1 网关上网 (电信),其他IP使用 20.0.0.1 (网通)上网。
-
首先要在网关服务器上添加一个默认路由,当然这个指向是绝大多数的IP的出口网关:ip route add default gw 20.0.0.1
-
之后通过 ip route 添加一个路由表:ip route add table 3 via 10.0.0.1 dev ethX (ethx 是 10.0.0.1 所在的网卡, 3 是路由表的编号)
-
之后添加 ip rule 规则:ip rule add fwmark 3 table 3 (fwmark 3 是标记,table 3 是路由表3 上边。 意思就是凡事标记了 3 的数据使用 table3 路由表)
-
之后使用 iptables 给相应的数据打上标记:iptables -A PREROUTING -t mangle -i eth0 -s 192.168.0.1 - 192.168.0.100 -j MARK --set-mark 3
因为 mangle 的处理是优先于 nat 和 fiter 表的,所以在数据包到达之后先打上标记,之后再通过 ip rule 规则,对应的数据包使用相应的路由表进行路由,最后读取路由表信息,将数据包送出网关。
三、ip rule
策略路由规则管理工具。Linux系统在启动时,内核会为路由策略数据库配置三条缺省的规则:
1)优先级:0,匹配任何数据包,查询路由表local(ID 255)。local表是一个特殊的路由表,包含本地和广播地址的高优先级控制路由,使用者不应删除或重写它
2)优先级:32766,匹配任何数据包,查询路由表main(ID 254)。main表是包含所有非策略路由的常规路由表。管理员可以删除或用其他规则重写此规则
3)优先级:32767,匹配任何数据包,查询路由表default(ID 253)。default表是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理,可以删除此规则
1. 命令格式
ip rule [ list | add | del | flush] SELECTOR ACTION
常见操作如下:
metric M | 设置路由的metric字段(路由跳数)。它用在路由表里存在多个路由时选择与转发包中的目标地址最为匹配的路由,所选的路由具有最少的跃点数,故Metric值越小,优先级越高。 |
$ ip route
default via 10.55.52.1 dev enp0s3 proto dhcp metric 100
default via 172.16.0.1 dev enp0s8 proto dhcp metric 101
10.55.52.0/24 dev enp0s3 proto kernel scope link src 10.55.52.4 metric 100
169.254.0.0/16 dev enp0s3 scope link metric 1000
172.16.0.0/22 dev enp0s8 proto kernel scope link src 172.16.0.76 metric 101
sunsy@sunsy-VirtualBox:~$
ip route | 查看默认路由表(main)路由 |
Linux系统route、ip route、ip rule简介 (taodudu.cc)
(597条消息) 策略路由/路由表/ip rule/ ip route --全网最清晰解释_策略路由表_it潮人的博客-CSDN博客
(597条消息) ip rule 命令_from all lookup main_乘风入海的博客-CSDN博客
路由表的查看可有以下二种方法:
ip route list table table_number
ip route list table table_name
路由表序号和表名的对应关系在/etc/iproute2/rt_tables中,可手动编辑
路由表添加完毕即时生效,下面为实例
ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1
ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2
注:各路由表中应当指明默认路由,尽量不回查路由表.路由添加完毕,即可在路由规则中应用..
二、高级路由重点之一路由规则 ip rule
列出路由表条目
ip命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。
在这个例子中,有几个路由条目。这个结果显示有几个设备通过不同的网络接口连接起来。它们包括WIFI、以太网和一个点对点连接。
$ ip route show
ip route show
假设现在你有一个IP地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):
$ ip route get 10.42.0.47
ip route get
更改默认路由
要更改默认路由,使用下面ip命令:
$ sudo ip route add default via 192.168.0.196
default route
显示网络统计数据
使用ip命令还可以显示不同网络接口的统计数据。
ip statistics all interfaces
当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项ls即可。使用多个选项-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。
$ ip -s -s link ls p2p1
ip link statistics
ARP条目
地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。
$ ip neighbour
ip neighbour
监控netlink消息
也可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:
$ ip monitor all
ip monitor all
激活和停止网络接口
你可以使用ip命令的up和down选项来激某个特定的接口,就像ifconfig的用法一样。
在这个例子中,当ppp0接口被激活和在它被停止和再次激活之后,你可以看到相应的路由表条目。这个接口可能是wlan0或者eth0。将ppp0更改为你可用的任意接口即可。
$ sudo ip link set ppp0 down
$ sudo ip link set ppp0 up
ip link set up and down
获取帮助
当你陷入困境,不知道某一个特定的选项怎么用的时候,你可以使用help选项。man页面并不会提供许多关于如何使用ip选项的信息,因此这里就是获取帮助的地方。
比如,想知道关于route选项更多的信息:
$ ip route help
ip route help
小结
对于网络管理员们和所有的Linux使用者们,ip命令是必备工具。是时候抛弃ifconfig命令了,特别是当你写脚本时。
————————————————
版权声明:本文为CSDN博主「thj_blog」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
更多推荐
所有评论(0)