使用 IP 转发跨多个接口路由时出现的 NAT/IPTables 功能问题

使用 IP 转发跨多个接口路由时出现的 NAT/IPTables 功能问题

如下图所示,我目前有三个系统联网在一起:


                             Interface eno2
                             IP Addresses Assigned:
                             192.10.10.12───────────┐
                                                    │                       ┌─────────────────────────┐
                        ┌─────────────────────────┐ │                       │                         │
                        │                         │ │                       │                         │
                        │                         │ │                       │  Computer C             │
                        │  Computer A             ├─┤   ETH INTERFACE     ┌─┤                         │
                        │                         │ │◄───────────────────►│ │                         │
                        │                         ├─┘                     ├─┤                         │
                        │                         │                       │ │                         │
                        │                         │                       │ └─────────────────────────┘
Interface enp134s0f1    └───────────┬──┬──────────┘                       │
IP Addresses Assigned               ├─▲┘                                  │
192.168.200.12                      │ │                                   │
192.168.200.11                      │ │                                   │
                                    │ │                                   │                  Interface eno1
                 ───────────────────┘ │                                   └───────────────── IP Addresses Assigned:
                                      │                                                      192.10.10.13
                                      │                                                      192.168.200.13
                                      │                                                      5.5.5.1
                                      │ETH
    Interface enp134s0f1              │INTERFACE
    IP Addresses Assigned             │
    192.168.200.10                    │
    5.5.5.3 ────────────────────────┐ │
                                    ├─▼─┐
                         ┌──────────┴───┴──────────┐
                         │                         │
                         │                         │
                         │  Computer B             │
                         │                         │
                         │                         │
                         │                         │
                         │                         │
                         └─────────────────────────┘

目标是通过简单的 ping 和 ssh 会话在计算机 C 和计算机 B 之间实现双向通信。

对于计算机 B,我已将以下地址和路由添加到系统:

ip route add 192.168.200.0/24 via 192.168.200.12
ip route add 5.5.5.1/32 via 192.168.200.12

接口 enp134s0f1 分配的 IP 地址:

  • 192.168.200.12
  • 5.5.5.3

对于计算机 A,添加了以下地址和路由,并对 NAT 表进行了修改:

ip route add 192.168.200.13/32 via 192.10.10.12
ip route add 5.5.5.1/32 via 192.10.10.12

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eno2 -j SNAT --to-source 192.10.10.12

接口 eno2 分配的 IP 地址:

  • 192.10.10.12

接口 enp134s0f1 分配的 IP 地址:

  • 192.168.200.11
  • 192.168.200.12

对于计算机 C,我已将以下地址和路由添加到系统:

ip addr add 5.5.5.1/24 dev eno1
ip addr add 192.168.200.13/24 dev eno1
ip route add 192.168.200.0/24 via 192.10.10.13 dev eno1
ip route add 5.5.5.0/24 via 192.10.10.13 dev eno1

接口 eno1 分配的 IP 地址:

  • 192.10.10.13
  • 192.168.200.13
  • 5.5.5.1

我目前可以通过此网络配置从计算机 B 到计算机 C 进行以下方向的通信:

+------------+    PING or SSH    +------------+    PING or SSH    +------------+
| Computer B |   ------------>   | Computer A |   ------------>   | Computer C |    ✓
+------------+                   +------------+                   +------------+

但是,我在相反方向进行 ping 或 ssh 会话时却没有任何效果。

+------------+    PING or SSH    +------------+    PING or SSH    +------------+
| Computer B |   <------------   | Computer A |   <------------   | Computer C |    X
+------------+                   +------------+                   +------------+

每台计算机都运行不同版本的 Linux:

  • 计算机A:Ubuntu 16.04 LTS
  • 计算机B:CentOS7
  • 计算机 C:Ubuntu 20.04 LTS

我不确定我对 NAT 规则的修改是否设置正确。

相关内容