我正在尝试配置我的服务器,但事实证明这是不可能的。因此,你是我最后的希望!
为了提供一些背景信息,我的虚拟服务器(Ubuntu 22.04 服务器 TLS)有 3 个连接到不同网络的网络设备:
- ens160 (互联网)
- ens192(服务)
- ens224 (管理)
在我的公司,必须将内部网络上的管理服务与 Web 服务分开。因此,我需要相应地路由传入流量。
据我所知,netplan 无法实现这一点,因为它基于静态路由。这就是为什么我尝试使用 PBR(iptables)来实现它,但我没有成功!
以下是我已采取的步骤:
- iptables -t mangle -A PREROUTING -i ens192 -j MARK --set-mark 1
- iptables -t mangle -A PREROUTING -i ens224 -j MARK --set-mark 2
- 在 /etc/iproute2/rt_tables 中添加表:
- 201 ens192_表
- 202 ens224_表
- ip 路由添加 10.10.0.0/16 dev ens192 表 ens192_table
- ip 路由添加 10.10.0.0/16 dev ens224 表 ens224_table
- ip 规则添加 fwmark 1 表 ens192_table
- ip 规则添加 fwmark 2 表 ens224_table
- 在 /etc/sysctl.conf 中取消注释 net.ipv4.ip_forward=1
- sudo sysctl-p
- 网络计划:
network:
version: 2
renderer: networkd
ethernets:
ens160:
dhcp4: no
addresses: [172.16.0.4/24]
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search: []
routes:
- to: 0.0.0.0/0
via: 172.16.0.1
ens192:
dhcp4: no
addresses: [172.16.1.4/24]
routes:
- to: 10.10.0.0/16
via: 172.16.1.1
ens224:
dhcp4: no
addresses: [172.16.2.4/16]
routes:
- to: 10.10.0.0/16
via: 172.16.2.1
本地和外围防火墙运行正常。
这是我面临的问题:当我从 IP 10.10.5.20 ping 到 IP 172.16.1.4 时,流量会通过 ens192 返回(正常)。但是,当我从 IP 10.10.5.20 ping 到 IP 172.16.2.4 时,流量也会通过 ens192 返回(不正常)。它应该通过 ens224 返回。
最后,我的问题是:
我能够实现我想要做的事情吗?
谢谢您的帮助。