现在的位置: 首页 > 综合 > 正文

Linux源地址路由

2018年02月21日 ⁄ 综合 ⁄ 共 1134字 ⁄ 字号 评论关闭

IPV4的源地址路由配置:
==============================================================================
1. 打开Linux路由功能
echo 1 > /proc/sys/net/ipv4/ip_forward

2.关联一个规则到路由表
ip rule add from 192.168.1.2 table 100
from表示源IP为192.168.1.2的包,查询路由表100. 自定义的路由表应介于0到252.

3.添加路由表
ip route add 172.25.2.0/24 via 192.168.1.5 table 100

172.25.2.0、24表示发往的网段

via表示192.168.1.5表示网关

4.刷新路由缓存
ip route flush cache

IPV6的源地址路由配置:
==============================================================================

方法基本一样,命令加上-6就行了,如:

ip -6 route

ip -6 rule

查询:
==============================================================================
1.查看路由table
cat /etc/iproute2/rt_tables

2.查看某个路由table内容

ip ro ls table 5



通过route命令配置基于目的IP的路由:
==============================================================================
route del -net 172.25.2.0 netmask 255.255.255.0 gw 192.168.1.5
route del -net 192.168.2.0 netmask 255.255.255.0 gw 172.25.2.100

route -A inet6 add 2001:da8:200::/64 gw 2001:da8:207::9401
route -A inet6 del 2001:da8:207::/64 gw 2001:da8:200::9401

关于RAW socket和源地址路由

最近在项目里面发现,如果使用raw socket接口发包,那么其发包时不会查找策略路由表,只会用系统的main路由表,似乎策略路由表直接给忽略了。即使只是指定了三层IP的值,也就是不填写2层MAC地址,也还是不会根据源地址路由找到下一跳,把这个下一跳的MAC值填上。

暂时没有更深入的找到原因和解决办法,因此,若想使用源地址路由,发包时要使用普通的socket接口。

抱歉!评论已关闭.