如何在 Ubuntu 上添加重定向到其他子网的子网?

如何在 Ubuntu 上添加重定向到其他子网的子网?

我正在尝试创建一个新的子网,将其收到的连接重定向到特定网关。我希望对 10.1.1.x 发出的任何请求都重定向到 192.168.1.x。例如,如果我 ping 10.1.1.23,它应该 ping 192.168.1.23,或者如果我向 10.1.1.25 发出 HTTP 请求,它应该向 192.168.1.25 发出请求。有人知道这在 Ubuntu 上是否可行吗?

答案1

对于源自网关外部的数据包:

iptables -t nat -A PREROUTING -d 10.1.1.0/24 -j NETMAP --to 192.168.1.0/24

对于源自网关本身的数据包:

iptables -t nat -A OUTPUT -d 10.1.1.0/24 -j NETMAP --to 192.168.1.0/24

(如果需要的话,你可以同时做这两件事。)

此扩展的手册位于man iptables-extensions,但它很短:

   NETMAP
       This target allows you to statically map a whole network of
       addresses onto another network of addresses.  It can only be
       used from rules in the nat table.

       --to address[/mask]
              Network  address  to  map  to.  The resulting address
              will be constructed in the following way: All 'one' 
              bits in the mask are filled in from the new `address'.
              All bits that are zero in the mask are filled in from 
              the original address.

       IPv6 support available since Linux kernels >= 3.7.

请注意,这不会在重启后保留。为此,您需要使用netfilter-persistent iptables-persistent包。

相关内容