其他

其他

我有一台连接到光纤互联网连接的 Debian 10 Buster 服务器。我正尝试在服务器的 53 端口上运行 DNS 服务。我应该使用哪些工具或技术来确定数据包未到达服务器上的 DNS 服务的原因?

系统设置

  • 一个网络适配器,eno1连接到光纤调制解调器。
  • 一个网络适配器,eno2连接到LAN。
  • 公共 IP 162.246.120.21
  • nftables作为我的数据包路由子系统。

nftables 规则

table ip filter {                                                                                                                     
        chain input {                                                                                                                 
                type filter hook input priority 0; policy accept;                                                                     
                ct state { established, related } accept
                iif "lo" accept
                tcp dport { ssh, 52, domain, http, https } counter log accept
                udp dport { 52, domain } counter log accept        
                iif "eno2" tcp dport { ssh, domain, http, https, microsoft-ds } counter log accept                                   
                iif "eno2" udp dport { domain, bootps, bootpc } accept
                iif "eno2" ip protocol icmp accept
                counter drop                                      
        }                                                                                                                            
 
        chain output {
                type filter hook output priority 0; policy accept;
                ct state { established, related, new } accept    
                iif "lo" accept                                                                                                      
        }                      
                                                
        chain forward {                                                                                                              
                type filter hook forward priority 0; policy accept;
                iif "eno1" oif "eno2" ct state { established, related } accept
                iif "eno2" oif "eno1" accept
                iif "eno1" oif "eno2" counter drop
                iif "eno1" oif "eno2" counter drop
        }
        chain postrouting {                                                                                                           
                type filter hook postrouting priority 0; policy accept;                                                               
        }                                                                                                                             
                                                                                                                                      
        chain INPUT {                                                                                                                 
                type filter hook input priority 0; policy accept;                                                                     
        }                                               
                               
        chain FORWARD {                                                      
                type filter hook forward priority 0; policy accept;
        }                                                                                                                            
                                                                      
        chain OUTPUT {                            
                type filter hook output priority 0; policy accept;
        }                                                                                                                            
}
table ip nat {                                                                                                                       
        chain postrouting {                                        
                type nat hook postrouting priority 100; policy accept;        
                oifname "eno1" masquerade   
        }                                         
}

测试

  • 如果我在端口 52 而不是 53 上运行 DNS 服务器,那么远程服务器的测试就可以正常工作。使用 进行测试dig @162.246.129.21 -p 52 dns.my.tld。响应快速且正确。
  • 如果我在端口 53 上运行 DNS 服务器并从 LAN 上的系统进行测试,则它可以正常工作。使用 进行测试dig @162.246.129.21 dns.my.tld
  • 如果我添加nft跟踪规则,则在端口 53 的跟踪中看不到远程流量,但可以在端口 52 的跟踪中看到。
chain trace_chain { # handle 39                                                                                                          
   type filter hook prerouting priority -301; policy accept;                                                            
   iif "eno1" tcp dport { 52, 53 } nftrace set 1 # handle 40                                                                    
}

其他

我的 ISP庄严宣誓它们不会阻止任何传入流量,包括端口 53。

我还应该尝试哪些其他工具或技术?

答案1

我终于让本地 ISP 承认封锁了端口 53,并通过从远程 shell 运行到端口 53 的跟踪路由(TCP 和 UDP)并通过电子邮件向他们发送结果来解除对端口 53 的封锁。在此之前,他们一直阻挠我 48 小时,坚称“不存在封锁”

相关内容