VPN 中用于 NAT 到 DNS 服务器的 Iptables 规则

VPN 中用于 NAT 到 DNS 服务器的 Iptables 规则

我目前正在设置 Raspberry Pi,以便在家中连接到公司的 VPN。Pi 具有以下接口:

  • eth0-- 连接到我的 ISP 路由器。
  • tun0-- 连接公司VPN的OpenVPN隧道接口。
  • wlan0——配置为无线接入点。

我已经设置了以下 iptables 规则来桥接wlan0和之间的所有流量tun0(已启用 NATing):

sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT

我的/etc/resolv.conf样子如下:

# Generated by resolvconf
search a.my-company.com b.my-company.com c.my-company.com
nameserver 10.0.0.1           # VPN DNS server
nameserver 10.4.0.1           # VPN DNS server
nameserver 194.168.4.100      # ISP DNS server
nameserver 194.168.8.100      # ISP DNS server

从 Pi,我可以解析并访问 VPN 主机和外部主机。但是,连接到无线接入点的设备无法解析任何一个(但通过 IP 访问 VPN 主机是可行的)。我不确定我的诊断是否正确解决了问题,但我注意到 TCPdump 包含tun0

IP 10.4.119.198.35387 > [VPN DNS SERVER 1].domain: 12662+ A? some.website.com. (38)
IP [VPN DNS SERVER 1].domain > 10.4.119.198.35387: 12662 1/13/13 A [Resolved IP] (486)
IP 10.4.119.198 > [VPN DNS SERVER 1]: ICMP 10.4.119.198 udp port 35387 unreachable, length 522

这似乎表明有一些东西正在过滤 DNS 响应。

我不熟悉如何配置此类设置,因此如能得到任何帮助我将不胜感激!如果需要,我当然很乐意提供更多信息。

相关内容