我正在学习如何使用iptables,并且正在Ubuntu上编写一个非常简单的防火墙。
仅使用筛选器表,我添加了以下规则
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP因为我只想通过我想要的数据包。
然后我尝试添加规则来建立简单的HTTP连接,因此,对于第一次尝试,我添加了
iptables -A INPUT -p tcp -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT接受所有TCP通信量的第一行和接受DNS答案的第二行。
类似地,对于输出链,我添加了
iptables -A OUTPUT -p tcp -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT但是当我尝试使用lynx时,连接不会发生。
我认为唯一的问题是DNS,因为所有的TCP流量都被接受了。但是进出端口53的数据包可以通过防火墙.那么问题在哪里?
我添加了以下两条规则,现在起作用了。
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT使用Wireshark,我意识到DNS请求也是往返于环回接口的。我从没想过..。为什么?
发布于 2012-11-06 10:19:03
只需使用iptables-save并重新启动计算机。这将使您的iptables设置工作。
如果您正在设置防火墙,那么为什么要启用所有tcp端口。我宁愿只允许选定的端口。给林克斯用的。我会用:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables-save
sudo init 6还有你为什么要用
sudo iptables -A OUTPUT -j DROP这将从所有端口丢弃所有传出通信量。
https://askubuntu.com/questions/213532
复制相似问题