iptables 脚本中断互联网连接

iptables 脚本中断互联网连接

寻求一些帮助,看看我iptables长期使用的脚本出了什么问题。

我在 Ubuntu Server 16.04 上使用它没有任何问题,我已经升级到 19.04(是的,这是一个全新安装)并且突然遇到了似乎无法克服的问题......

脚本如下:

*filter    
:INPUT DROP
:FORWARD DROP
:OUTPUT DROP
-A INPUT -s 192.168.1.1/24 -j ACCEPT
-A OUTPUT -d 192.168.1.1/24 -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A OUTPUT -d 127.0.0.1 -j ACCEPT
-A OUTPUT -d *VPN IP here* -p udp -j ACCEPT
-A INPUT -s *VPN IP Here* -p udp -j ACCEPT
-A INPUT -i tun0 -j ACCEPT
-A OUTPUT -o tun0 -j ACCEPT
COMMIT

如果没有这些规则iptables,VPN 在 19.04 上可以完美运行。
一旦我将这些规则提交给iptables,互联网就会关闭,我无法从 获得 IP 读回curl ipecho.net/plain,它只是说...

无法解析主机名

...但是我可以 ping google (8.8.8.8),而且 ping 得很顺畅。
我甚至无法从 ubuntu 获取任何更新列表apt-get update

我已检查适配器名称是否正确,并且 VPN 是否正确tun0,所以不是那样的。

如果 VPN 连接出现问题(网线拔出、路由器重置等 VPN 服务器停机),该脚本旨在关闭互联网,但 VPN 可以正常工作并已连接,所以我不确定为什么它不能按预期工作。

正如我所说,它在 16.04 上运行良好,但在 19.04 上却不行。困惑。

如能提供任何帮助我将非常感激。

答案1

该消息can't resolve hostname表明问题在于名称解析。

在 Ubuntu 的最新版本中,DNS 通过本地缓存服务器运行,该服务器在合适的 loobpack 地址上监听端口 53 - 但是,特定地址不是127.0.0.1您已经允许的规范地址。

例如,16.04 系统默认dnsmasq使用127.0.1.1

$ sudo netstat -nlp | grep LISTEN | grep :53
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1020/dnsmasq    

而 18.04 使用systemd-resolved127.0.0.53

$ sudo netstat -nlp | grep LISTEN | grep :53
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      3677/systemd-resolv

为了解析 DNS 查询,您需要允许相应地址上的入站连接(尽管您可以将这些连接限制到特定端口53)。

相关内容