IPTables多VLAN NAT到多个IP

我的NAT设置有一个小问题。

我在做什么:

我有2个VLAN(在本例中为100和200),并希望他们可以通过单独的IP访问networking。 这应该通过iptables NAT来完成。 我用pf(FreeBSD)创build了这个设置,但不幸的是我必须使用的硬件不兼容。 我很喜欢在我们的主路由器,但是CPU不能处理这样的负载。 与IP表等我只是一个小白;)架构:

用户VLAN 100(10.100.0.0/24) – > 10.100.0.1 NAT xxx.yyy.zzz.6 – >networking

VLAN 200上的用户(10.200.0.0/24) – > 10.200.0.1 NAT xxx.yyy.zzz.7 – >networking

所有这些都在同一个物理接口上,具有VLAN接口等

这是我目前的configuration:/ etc / network / interfaces

    罗...

     iface ens2f3 inet static
        地址xxx.yyy.zzz.6
        networking掩码255.255.252.0

 auto ens2f3.100
 iface ens2f3.100 inet static
        地址10.100.0.1
        networking掩码255.255.255.0
         vlan-raw-device ens2f3

 iface ens2f3 inet static
        地址xxx.yyy.zzz.7
        networking掩码255.255.252.0

 auto ens2f3.200
 iface ens2f3.200 inet static
        地址10.200.0.1
        networking掩码255.255.255.0
         vlan-raw-device ens2f3

/etc/iptables/rules.v4(自动加载)

 #NAT桌子
 * NAT
 :PREROUTING ACCEPT [0:0]
 :input接受[0:0]
 :OUTPUT ACCEPT [0:0]
 :POSTROUTING ACCEPT [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

承诺

 #总表
 *过滤
 :input接受[0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
承诺

 #我知道这个设置是非常不安全的! 当我有NAT工作时,我locking服务器

问题是,我可以得到一个10.100.0.100我可以连接到xxx.yyy.zzy.1正是这个IP(10.100.0.100;这应该是不可能的),而不是我应该通过NAT获得的IP。

我也试着在包裹到达界面的时候给它们打上标记,并为它们分配了路由表。 有上面的问题不存在,但没有任何连接到任何地方是可能的

你能否提供一些关于如何用基于Linux的操作系统来实现这一点的技巧。 如果有必要,我有另一个10G接口可用

我没有分析一切,但第一步是纠正这一点:

 -o ens2f3 

因为你是postROUTING,路由决定已经完成,我期望这个数据包直接通过一个不同的接口直接到网关xxx.yyy.zzz.1:

 -o enp3s0