如何追加mysql访问iptables

在我的一台服务器上,我可以看到:

ACCEPT tcp -- distinct_server_ip anywhere tcp dpt:mysql 

通过做

 sudo iptables -L | grep distinct_server_ip 

 iptables -L -n -v | grep 3306 432K 26M ACCEPT tcp -- * * mydistinctip 0.0.0.0/0 tcp dpt:3306 90 5400 ACCEPT tcp -- * * mydistinctip2 0.0.0.0/0 tcp dpt:3306 

我想在另一台服务器上启用相同的function,请帮我用我使用的命令?

我正在考虑这样的事情:

 iptables -A INPUT -p tcp -s distinct_server_ip --sport 1024:65535 -d this_server_ip --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT 

iptables高度依赖于你的规则的顺序。 你的问题并不完全清楚,所以我会考虑你可能会做的两个可能性。

ServerA ,如果你想允许ServerB连接到它:

 iptables -A INPUT -p tcp -s ServerB --dport 3306 -j ACCEPT 

而且,对于ServerB上的出口规则(不推荐),如果您想允许它连接到ServerA

 iptables -A OUTPUT -p tcp -d ServerA --dport 3306 -j ACCEPT 

巨大的警告:您可能在INPUTOUTPUT链中有可能阻止这些规则被处理的东西。 为此,我们需要看看你所有的规则。

你不能这么做,因为iptables只接受一个ip规则(同样不代表端口,它们可以是mport模块生成的多个,由iptables在需要的时候自动加载)。

有可能你只是复制你的规则。 虽然很简单,但并不总是实用。

或者你可以模拟多ip的行为是创build一个新的表来过滤你给定的IP列表。 例如:

 Chain MY_WISHLIST (1 references) pkts bytes target prot opt in out source destination 0 0 ACCEPT all -- * * 1.2.3.4/19 0.0.0.0/0 0 0 ACCEPT all -- * * 1.2.0.0/17 0.0.0.0/0 0 0 ACCEPT all -- * * 1.3.0.0/16 0.0.0.0/0 0 0 ACCEPT all -- * * 1.4.128.0/20 0.0.0.0/0 0 0 ACCEPT all -- * * 1.5.152.0/21 0.0.0.0/0 0 0 ACCEPT all -- * * 1.6.0.0/15 0.0.0.0/0 

…你可以从任何地方引用这个链:

 0 0 MY_WISHLIST tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 2,3,5,7,11,13,17,19 

最后,围绕linux内核/networking方面有一个新的发展,那就是ipset 。 Ipset完全处理了iptables的这个实际缺陷(?),它将成为Linux的第四个防火墙命令行工具(在ipfwadm,ipchains和我们当前的iptables之后)。