NAT,iptables和有问题的端口

我正在用虚拟机构build一个小型办公室networking。 我的模式是这样的:

  • 计算机A :网关,ip 1.1.1.1 ,用于NATiptables [eth0 =公网dhcp,dhcp; ETH1 =网关]
  • 计算机B :使用来自计算机A的网关的客户端ip 1.1.1.2

NAT正在工作,而计算机B可以使用A的网关访问互联网。 我将一些传入端口从Aredirect到B(例如,如果A接收到端口80的请求,它将自动进入计算机B的Apache)。

问题是我真的不知道如何从计算机A打开/closures计算机B的端口。我知道如何closures一个端口:

iptables -A INPUT -p tcp --dport 80 -j DROP 

它将拒绝所有到端口80的input(不是输出)连接。但是,这对于主接口eth0是有效的。 举例来说,我试图为计算机B,端口80放入和传出连接:

 iptables -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -j DROP iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j DROP 

但它不起作用。 而我无法弄清楚我做错了什么。 任何线索?

第一条线应与运动(源端口是80)。 还要小心使用-A。 这将规则附加到链(最后添加规则)。 如果一条规则匹配,那么其余规则不再被评估。 所以如果你想确保使用-I(在链的开头插入):

 iptables -I FORWARD -i eth1 -o eth0 -p tcp --sport 80 -j DROP iptables -I FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j DROP 

我相信你错过了“OUTPUT”指令。

请试试这个:

 iptables -A OUTPUT -p tcp --dport 80 -j DROP 

这将丢弃端口80上的所有出站stream量。