我的 NAT 设置出了点问题。
我正在尝试做的事情:
我有 2 个 VLAN(本例中为 100 和 200),希望它们可以通过单独的 IP 访问网络。这应该通过 NAT 来实现iptables
。我使用 pf(FreeBSD)创建了此设置,但不幸的是,我必须使用的硬件不兼容。我很想在我们的主路由器中实现这一点,但 CPU 无法处理这样的负载。使用 IP 表等。我只是个菜鸟 ;) 模式:
VLAN 100 上的用户 (10.100.0.0/24) -> 10.100.0.1 NAT xxx.yyy.zzz.6 -> 网络
VLAN 200 上的用户(10.200.0.0/24)-> 10.200.0.1 NAT xxx.yyy.zzz.7 -> 网络
所有这些都在同一个物理接口上,具有 VLAN 接口等。
这是我当前的配置:/etc/network/interfaces
瞧.... iface ens2f3 inet 静态 地址 xxx.yyy.zzz.6 网络掩码 255.255.252.0 自动 ens2f3.100 iface ens2f3.100 inet 静态 地址 10.100.0.1 网络掩码 255.255.255.0 vlan-原始设备 ens2f3 iface ens2f3 inet 静态 地址 xxx.yyy.zzz.7 网络掩码 255.255.252.0 自动 ens2f3.200 iface ens2f3.200 inet 静态 地址 10.200.0.1 网络掩码 255.255.255.0 vlan-原始设备 ens2f3
/etc/iptables/rules.v4(自动加载)
#NAT 表 *自然 :预路由接受 [0:0] :输入接受 [0:0] :输出接受 [0:0] :后路由接受 [0:0] -A POSTROUTING -s 10.100.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.6 -A POSTROUTING -s 10.200.0.0/24 -o ens2f3 -j SNAT --to-source xxx.yyy.zzz.7 犯罪 # 通用表 *筛选 :输入接受 [0:0] :转发接受 [0:0] :输出接受 [0:0] 犯罪 # 我知道这个设置非常不安全!当我让 NAT 工作时,我锁定了服务器
问题是,我可以使用 10.100.0.100 连接到 xxx.yyy.zzy.1,并且恰好使用此 IP(10.100.0.100;这应该是不可能的),而不是我应该通过 NAT 获得的 IP。
我也尝试过在数据包到达接口时对其进行标记,并为它们设置单独的路由表。上述问题不存在,但无法连接到任何地方
您能否为我提供一些关于如何使用基于 Linux 的操作系统实现这一点的提示。如果需要,我还有另一个 10G 接口可用
答案1
我还没有分析所有内容,但第一步是纠正这个问题:
-o ens2f3
由于您处于 postROUTING 状态,因此已经做出了路由决定,并且我预计数据包将直接到达网关 xxx.yyy.zzz.1,因此通过不同的接口:
-o enp3s0