iptables:如何通过特定的端口只允许一个IP?

我怎么能在我的Ubuntu服务器,在Iptables只允许一个特定端口上的IP地址?

谢谢

一个class轮:

iptables -I INPUT \! --src 1.2.3.4 -m tcp -p tcp --dport 777 -j DROP # if it's not 1.2.3.4, drop it 

更优雅的解决scheme:

 iptables -N xxx # create a new chain iptables -A xxx --src 1.2.3.4 -j ACCEPT # allow 1.2.3.4 iptables -A xxx --src 1.2.3.5 -j ACCEPT # allow 1.2.3.5 iptables -A xxx --src 1.2.3.6 -j ACCEPT # allow 1.2.3.6 iptables -A xxx -j DROP # drop everyone else iptables -I INPUT -m tcp -p tcp --dport 777 -j xxx # use chain xxx for packets coming to TCP port 777 

以下是我的一个CentOS系统的例子(地址被混淆了):

 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 1.2.3.4 -d 5.6.7.8 --dport 22 -j ACCEPT 

我使用shorewall来configurationIP表。 使用规则喜欢从一个主机接受端口123。

ACCEPT net:192.0.2.1 $ FW tcp 1234