在我提出问题之前,让我先向各位版主澄清一下,我已经搜索了很多解决方案,但是 Askubuntu(和其他 Stackexchange 网站)上的所有问题/答案都没有解决我的问题。
我在 Debian 服务器和 Ubuntu 主机上设置了 openVPN,现在我试图通过 openVPN 隧道路由客户端的所有流量(DHCP 除外)。我阅读了网络上几乎所有的指南,但都没有成功。我读过这,这,这,这,这,这,这,这,这以及其他一些指南和文章。但没有一个能解决这个问题。如果我使用redirect-gateway def1
命令client.conf
(或从服务器端推送它(server.conf
)),在客户端我无法将域名解析为 IP(基本上 DNS 查询失败),但我可以 ping 公共(有效)IP,例如 Google 的 DNS 服务器(从我的客户端主机)。
这是我的 server.conf:
proto udp
port 1194
dev tun
ca ca.crt
cert myserver.crt
key myserver.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 3
这是我的client.conf
:
client
dev tun
proto udp
remote x.x.x.x 1194
nobind
persist-key
persist-tun
mute-replay-warnings
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
comp-lzo
verb 3
redirect-gateway def1 bypass-dns bypass-dhcp
在服务器端,我还发出了以下命令(对传入的 openVPN 流量进行 NAT):
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
这里有日志和openvpn 状态日志。
更新:
如果我在服务器端使用以下命令(重定向 DNS 查询)这里,问题得到解决(显然),但我如何确保流量通过 VPN 链接?
iptables -t nat -A PREROUTING -i tun+ -p udp --dport 53 -j DNAT --to-destination 8.8.8.8