我有一个使用 openvz 托管的 Ubuntu vps。一段时间以来,我在使用 iptables 中的接口名称时遇到了麻烦,例如:(已编辑)
-A INPUT -i venet0:0 -p tcp -m tcp --dport 80 -j ACCEPT
问题是 iptables 似乎不理解 venet0:0 是什么。我的网络配置也很奇怪。输出ifconfig -a
gre0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-20-4A-00-00-00-00-00-00-00-00
NOARP MTU:1476 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
gretap0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
BROADCAST MULTICAST MTU:1476 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
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:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
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.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:44859 errors:0 dropped:0 overruns:0 frame:0
TX packets:37950 errors:0 dropped:103 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9472928 (9.0 MiB) TX bytes:8953521 (8.5 MiB)
venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:xx.xx.xx.xx P-t-P:xx.xx.xx.xx Bcast:xx.xx.xx.xx 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:xy.xy.xy.xy P-t-P:xy.xy.xy.xy Bcast:xy.xy.xy.xy Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
我给我的 vps 提供商发了一封电子邮件,询问如何为 iptables 接口引用分配接口(例如和eth0
)eth1
,他们回答说这是不可能的,但venet
接口可以这样使用。然而,当我尝试使用它们时,什么也没发生。
我知道我肯定做错了什么或不明白什么。我也不明白gre0
和gretap0
接口是什么,也不明白它们的用途。有什么想法吗?
答案1
您不能使用 iptables 指定别名接口名称,只能指定实际接口名称。诀窍是添加目标 IP 地址作为附加条件。另外,您不需要该-m tcp
部分。因此,如果您想在两个别名接口上接受到端口 80 的流量,规则将是:
-A INPUT -i venet0 -d xx.xx.xx.xx -p tcp --dport 80 -j ACCEPT
-A INPUT -i venet0 -d xy.xy.xy.xy -p tcp --dport 80 -j ACCEPT