【分享】Linux系统下通过策略路由实现多默认路由-一一网络 【分享】Linux系统下通过策略路由实现多默认路由 – 一一网络

【分享】Linux系统下通过策略路由实现多默认路由

问题简述

一般地说,在Linux系统路由表内只能有一条默认路由。当出站数据包根据目的IP地址选路失败后,执行默认路由,交默认路由指向的下一跳路由器(默认网关)转发数据包。
现需要同时存在两条默认路由。数据包通过何种默认路由,由程序指定(或根据规则)。数据包通过特定的路由规则转发到对应的路由器。
在下文中,我们以如下的拓扑为例,介绍如何通过策略路由来实现上述需求。

  • 服务器上安装有两块网卡,分别为p7p1和p7p2;
  • 网卡p7p1:192.168.1.1/24,连接至路由器R1;
  • 网卡p7p2:192.168.2.1/24,连接至路由器R2;
  • 路由器R1:192.168.1.254/24;
  • 路由器R2:192.168.2.254/24。

我们要实现的选路策略:

  • 根据源IP地址选路,所有源IP地址为192.168.1.1的报文,通过eth0转发到路由器R1,所有源IP地址为192.168.2.1的报文,通过eth0转发到路由器R2;
  • 进一步地,本机程序发送IP报文,由程序选择从何出口转发到对应的路由器。

实现思路

通过多张路由表和策略路由实现上述的配置需求。

  • 路由表1:默认路由指向R1,即192.168.1.254;
  • 路由表2:默认路由指向R2,即192.168.2.254
  • 策略路由,优先级高于local路由表:
    • 源IP为192.168.1.1的报文,执行路由表1;
    • 源IP为192.168.2.1的报文,执行路由表2;

路由表配置

1.创建路由表

# echo "10 eth1table" >> /etc/iproute2/rt_tables
# echo "20 eth2table" >> /etc/iproute2/rt_tables

2.配置路由表,添加默认路由

# 本机与默认网关的路由,否则会显示路由不可达
# ip route add 192.168.1.0/24 dev eth1 table eth1table
# ip route add 192.168.2.0/24 dev eth2 table eth2table
# 默认网关
# ip route add default via 192.168.1.254 table eth1table
# ip route add default via 192.168.2.254 table eth2table

3.配置策略路由

# ip rule add from 192.168.1.1/32 table eth1table
# ip rule add from 192.168.2.1/32 table eth2table

测试

为了方便,通过静态ARP配置,模拟下一跳路由器。

# arp -s 192.168.1.254 aa:bb:cc:dd:ee:ff
# arp -s 192.168.2.254 11:22:33:44:55:66

利用NC工具发送UDP报文,设置源IP地址为192.168.1.1,即

nc -s 192.168.1.1 -u 202.202.202.202

在网卡p7p1上运行tcpdump命令捕包。

# tcpdump -i p7p1 -e

结果:

15:39:36.225020 e8:61:1f:18:ef:24 (oui Unknown) > aa:bb:cc:dd:ee:ff (oui Unknown), ethertype IPv4 (0x0800),
length 51: 192.168.1.1.46399 > 202.202.202.202.31337: UDP, length 9

类似地,设置源IP地址为192.168.2.1,通过tcpdump在p7p2上捕获得

15:42:11.157252 e8:61:1f:18:ef:25 (oui Unknown) > 11:22:33:44:55:66 (oui Unknown), ethertype IPv4 (0x0800),
length 48: 192.168.2.1.39107 > 202.202.202.202.31337: UDP, length 6

参考文献

[1] https://networkengineering.st…

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » 【分享】Linux系统下通过策略路由实现多默认路由

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情