由于某种原因,当我尝试运行时,sudo iptables -L
加载时间非常长。我正在从脚本加载规则,它位于具有 2MB 专用 RAM 的 VMWare Fusion 上的 Ubuntu 服务器虚拟机上。当我尝试运行脚本时,我偶尔也会收到其他错误,例如“另一个应用程序当前持有 xtables 锁。也许您想使用 -w 选项?”。sudo iptables -L
此错误往往会在服务器重新启动时消失,但有时当我回来时我的脚本已损坏。在对代码进行某些修改后,我还没有收到此错误。
我只能发布脚本的部分代码,因为这是家庭作业,但解决这个问题不是作业的一部分。
#flushing all the rules
iptables --flush
iptables -X
iptables --policy INPUT DROP
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD DROP
iptables -A INPUT -i lo -j LOG --log-prefix "LOOPBACK IN : "
iptables -A OUTPUT -o lo -j LOG --log-prefix "LOOPBACK OUT: "
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j LOG --log-prefix "Established-IN"
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j LOG --log-prefix "Established-OUT"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
...specific port acceptance per IP address, no NEW states (not sure if relevant)...
iptables -A INPUT -s $LOCAL_NETWORK -d $SERVER_IP -j LOG --log-prefix "Unauthorized local connection: "
iptables -A INPUT -s $LOCAL_NETWORK -d $SERVER_IP -j REJECT
答案1
iptables -L
默认情况下将尝试将 IP 地址解析为主机名。
我在这个系统上设置了一个小型 iptables 规则集,但是由于规则的原因,即使是这么小的列表也需要一段时间才能完成。
通过使用iptables -L -n
,它会以数字形式显示所有内容,并跳过 IP 解析和端口服务通用名称显示。它还应该显示得更快。(该-n
选项告诉它显示所有内容的数字条目,并且不会尝试解析 IP。缺点是,端口也将以数字形式显示,而不是例如端口 80 的 http。)