你好,我很难相处iptables和bind9作为我的内部网络 DNS 服务器。它配置为将我的查询转发到 Google 的 DNS(8.8.8.8)。
主要问题是我无法配置 iptables 以允许与我的 dns 通信。我的主要规则是删除所有 INPUT 和 OUTPUT 连接,仅允许某些服务和 bind9 所需的连接。
这是我的 iptables 现在的样子
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:1155
ACCEPT tcp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp spt:1155 state RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT all -- anywhere anywhere
我试过用什么这用户说但没有运气。
我也尝试了很多允许 udp 和 tcp 使用端口 53 的组合,就像这样
sudo iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 53 -j ACCEPT
sudo iptables -A INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 53 -j ACCEPT
这是我得到的 sudo netstat -anp | grep -e tcp -e udp
tcp 0 0 0.0.0.0:1155 0.0.0.0:* LISTEN 969/sshd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1179/apache2
tcp 0 0 192.168.0.22:53 0.0.0.0:* LISTEN 1087/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1087/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 1087/named
tcp 0 0 192.168.0.22:1155 192.168.0.20:50016 ESTABLISHED 1263/sshd: giorgos
tcp6 0 0 :::1155 :::* LISTEN 969/sshd
tcp6 0 0 :::53 :::* LISTEN 1087/named
tcp6 0 0 ::1:953 :::* LISTEN 1087/named
udp 0 0 192.168.0.22:53 0.0.0.0:* 1087/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 1087/named
udp 0 0 0.0.0.0:68 0.0.0.0:* 943/dhclient3
udp6 0 0 :::53 :::* 1087/named
答案1
好的,iptables 规则可以是这样的
这将接受 dns 请求
sudo iptables -t nat -A INPUT -s 192.168.0.0/24 -m state --state NEW -p tcp --dport 53 -j ACCEPT
sudo iptables -t nat -A INPUT -s 192.168.0.0/24 -m state --state NEW -p udp --dport 53 -j ACCEPT
这将创建捕获 DNS 请求的链
sudo iptables -t nat -N CATCH_DNS
sudo iptables -t nat -A CATCH_DNS -p udp -m udp --dport 53 -j REDIRECT --to-ports 53
sudo iptables -t nat -A CATCH_DNS -p tcp -m tcp --dport 53 -j REDIRECT --to-ports 53
然后您可以在 INPUT 上应用规则
sudo iptables -t nat -A INPUT -s 192.168.0.0/24 -j CATCH_DNS
我认为这会有用:)