Linux - Iptable 的使用
ipatable
是 Linux 内核自带的防火墙解决方案。它通过对经由网络的每一个包进行一系列的规则验证来决定该如何处理。
我们可以匹配协议类型、源地址和目的地址或者端口、接口以及它们和之前的包的关系等等。这些规则会被进一步的结构化成为规则链,网络包将会顺序地被规则链中的规则一一检查。它们可以被按需生成,但是有3种默认的规则:
INPUT
:处理流入服务器的流量。OUTPUT
:处理流出服务的流量。FORWARD
:处理流经服务器的流量而不停止它们。
列出当前的规则:
1 | $ iptables -L -n |
列出当前的 NAT
规则:
1 | $ iptables -L -n -t nat |
阻断指定 IP 的流量:
1 | $ iptables -I INPUT -s 10.10.10.10 -j DROP |
允许指定 IP 的流量:
1 | $ iptables -I INPUT -s 10.10.10.10 -j ACCEPT |
允许指定端口的流量:
1 | $ iptables -I INPUT -p tcp -m tcp --dport 31415 -j ACCEPT |
-I
和 -A
参数的区别在于 -I
将会把指定的规则插入到规则链的最开始来抑制 -A
所增加的附带规则。
我们可以通过以下命令来检查当前路由表的防火墙状态:
1 | $ sudo iptables -L -n -v |
其中 -L
列出规则,-v
显示详细信息,我们通过 -n
标识禁止 DNS 方案来提高列出规则的速度。我们可以看到类似以下的输出:
1 | Chain INPUT (policy ACCEPT 0 packets, 0 bytes) |
其中有一条激活的 INPUT
规则,其阻止了来自 192.64.174.69 的所有流量。
更多有关
ipatable
的使用,请参阅相关资料。