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 回應。

我不熟悉配置此類設置,因此我們將不勝感激!如果需要的話,我當然很樂意提供更多資訊。

相關內容