PBR 路由在 Ubuntu 22.04 Server 上不起作用

PBR 路由在 Ubuntu 22.04 Server 上不起作用

我正在尝试配置我的服务器,但事实证明这是不可能的。因此,你是我最后的希望!

为了提供一些背景信息,我的虚拟服务器(Ubuntu 22.04 服务器 TLS)有 3 个连接到不同网络的网络设备:

  • ens160 (互联网)
  • ens192(服务)
  • ens224 (管理)

在我的公司,必须将内部网络上的管理服务与 Web 服务分开。因此,我需要相应地路由传入流量。

据我所知,netplan 无法实现这一点,因为它基于静态路由。这就是为什么我尝试使用 PBR(iptables)来实现它,但我没有成功!

以下是我已采取的步骤:

  1. iptables -t mangle -A PREROUTING -i ens192 -j MARK --set-mark 1
  2. iptables -t mangle -A PREROUTING -i ens224 -j MARK --set-mark 2
  3. 在 /etc/iproute2/rt_tables 中添加表:
  • 201 ens192_表
  • 202 ens224_表
  1. ip 路由添加 10.10.0.0/16 dev ens192 表 ens192_table
  2. ip 路由添加 10.10.0.0/16 dev ens224 表 ens224_table
  3. ip 规则添加 fwmark 1 表 ens192_table
  4. ip 规则添加 fwmark 2 表 ens224_table
  5. 在 /etc/sysctl.conf 中取消注释 net.ipv4.ip_forward=1
  6. sudo sysctl-p
  7. 网络计划:
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 返回。

最后,我的问题是:

我能够实现我想要做的事情吗?

谢谢您的帮助。

相关内容