Iptables 和 bind9 转发到 google 的 dns

Iptables 和 bind9 转发到 google 的 dns

你好,我很难相处iptablesbind9作为我的内部网络 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

我认为这会有用:)

相关内容