我有一台运行Fedora 15的服务器。我的最终目标是能够通过随机端口号(通过iptables规则指定)转发任何协议。现在,我想暂时将端口12345转发到一个web服务器里面networking。 我们会说这个networking服务器是192.168.0.10:80。
添加规则到iptables打开端口如下所示:
-Ainput-m状态 – 状态新-m tcp -p tcp –dport 12345 -j ACCEPT
我重新启动iptables,然后运行:
nmap -p 12000-13000本地主机
nmap不显示该端口是打开/closures的。 然后我用如下的semanage定义端口:
semanage port -a -t http_port_t -p tcp 12345
nmap仍然看不到端口。
如果我然后完全禁用selinux,nmap显示端口为“closures”。
我似乎无法find打开端口的方法。 我已经在网上search了好几天了,但是我一直无法解决这个问题。 我可以提供任何你想要的其他configuration数据。 有什么build议么?
编辑:添加iptables -L -n -v输出iptables -L -n -v :
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 641 3038K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 12 720 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 261 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:12345 1 52 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT 663 packets, 3044K bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:12345
如果你想FORWARDstream量,你使用FORWARD链,而不是INPUT链。
INPUT链将仅适用于实际发往防火墙的数据包(例如,具有其中一个防火墙地址的目标地址)。
其次,请记住,FORWARDINGstream量意味着不会对数据包本身执行任何操作。 所以,目标服务器必须打开端口12345。
(如果您想操纵源/目标地址和/或端口,请使用SNAT / DNAT)
我不知道这是肯定的,但我怀疑问题是,你的-A INPUT ...是添加你的许可证后一些一揽子预先存在的DROP规则。 在添加规则之后,我们需要查看iptables -L -n -v的输出; 如果你想粘贴到你的问题上面,这将是有益的。
iptables规则处理是第一种方式 – 匹配胜利; 也就是说,它按顺序经过了规则,而第一个与你的数据包相匹配并处理掉的数据包将对这个数据包有最后的发言权。
所以,在简洁的元编码中,像规则集一样没有任何意义
permit any any port 80 deny any any permit any any port 12345
第2行将匹配预期用于端口12345的数据包 – 因为它匹配任何不用于端口80的数据包 – 并拒绝它。 可怜的数据包永远不会达到第3行的许可。
我很抱歉,如果你已经知道这一切,这不是问题。 看到iptables输出结果仍然有帮助,可以进一步探索。
编辑 :好的,它看起来像规则sorting不是问题。 是什么让你觉得它不工作? 当你做一个telnet localhost 12345时候,服务器上会发生什么?