尝试在 iptables 上启用网络地址转换

尝试在 iptables 上启用网络地址转换

我有一个具有两个接口的 vps:

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:113 errors:0 dropped:0 overruns:0 frame:0
      TX packets:113 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
          RX bytes:11005 (11.0 KB)  TX bytes:11005 (11.0 KB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:127.0.0.1  P-t-P:127.0.0.1  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: ::1/128 Scope:Host
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:714 errors:0 dropped:0 overruns:0 frame:0
          TX packets:604 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:108787 (108.7 KB)  TX bytes:281389 (281.3 KB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:87.118.124.244  P-t-P:87.118.124.244  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

venet0:1  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:87.118.125.244  P-t-P:87.118.125.244  Bcast:0.0.0.0  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

iptables -t nat -A POSTROUTING -o vnet0:0 -j MASQUERADE

Warning: weird character in interface `vnet0:0' (No aliases, :, ! or *).
iptables: No chain/target/match by that name.

我尝试更改接口名称,但失败了。有什么建议吗?

答案1

我发现两个问题。您写错了,vnet0把改为venet0,而您正尝试在 IP 别名上配置规则。

这个问题使用带有 IP 别名的 iptables应该可以帮助您解决第二个问题。

答案2

我无法使用 MASQUERADE,因为它尚未被虚拟化为模块,而我应该使用 SNAT。

这是我使用的命令,希望它能对其他人有所帮助!

iptables -t nat -A POSTROUTING -s 0.0.0.0/24 -j SNAT --to-source <one of my external IPs>

相关内容