我正在尝试创建一个新的子网,将其收到的连接重定向到特定网关。我希望对 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
包。