通过 OpenVPN 路由所有流量

通过 OpenVPN 路由所有流量

是的,这个问题已被问过一百遍了,我到处都搜索过,但无济于事。

标题确实说明了一切。

我有一个 OpenVPN 服务器(在 ubuntu 上),我可以通过我的客户端(Windows 8)连接到它...

当我尝试通过 VPN 路由所有流量时,问题就开始了。

push我在 server.conf 中添加了标志:

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

当我从客户端连接时,客户端输出:

Wed May 07 21:38:40 2014 SENT CONTROL [StretchVPN-CA]: 'PUSH_REQUEST' (status=1)
Wed May 07 21:38:41 2014 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 8.8.8.8,route-gateway <Remote Router IP>,ping 10,ping-restart 120,ifconfig 192.168.0.201 255.255.255.0'
Wed May 07 21:38:41 2014 OPTIONS IMPORT: timers and/or timeouts modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ifconfig/up options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route-related options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed May 07 21:38:41 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed May 07 21:38:41 2014 open_tun, tt->ipv6=0
Wed May 07 21:38:41 2014 TAP-WIN32 device [Local Area Connection 4] opened: \\.\Global\{1F145805-92FC-454E-8FD9-0A6017DD4AD1}.tap
Wed May 07 21:38:41 2014 TAP-Windows Driver Version 9.9
Wed May 07 21:38:41 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.0.201/255.255.255.0 on interface {1F145805-92FC-454E-8FD9-0A6017DD4AD1} [DHCP-serv: 192.168.0.0, lease-time: 31536000]
Wed May 07 21:38:41 2014 Successful ARP Flush on interface [35] {1F145805-92FC-454E-8FD9-0A6017DD4AD1}
Wed May 07 21:38:46 2014 TEST ROUTES: 1/1 succeeded len=0 ret=1 a=0 u/d=up
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD <Remote Router IP> MASK 255.255.255.255 172.20.10.1
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 Initialization Sequence Completed

我尝试在打开连接时在客户端使用标志:

openvpn --config "C:\Program Files\OpenVPN\config\client.ovpn" --redirect-gateway def1 --route-method exe

但是,当我访问 whatsmyip.org 时,它仍然显示我的客户端 IP。

有谁遇到过这个问题并成功解决了吗?

非常感谢

答案1

我已经使用 OpenVPN 服务器对此进行了测试,并且在客户端和服务器配置中设置redirect-gateway def1选项运行良好。

当我访问whatismyip.org,我看到了我的 OpenVPN 服务器的 IP。

以下是我使用的客户端配置:

client
dev tun
proto udp
# THE IP OF THE REMOTE OPENVPN SERVER:
remote ip_address port
resolv-retry infinite
nobind
persist-key
persist-tun
# THE CSR FILE:
pkcs12 certificate.p12
ns-cert-type server
cipher AES-256-CBC
comp-lzo
redirect-gateway def1
verb 3

我还测试了将 redirect-gateway def1 选项附加到 openvpn 命令,并获得了相同的结果。服务器配置为:

port 1194
proto udp
dev tun

dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
# ENSURE THE DOMAIN NAME/FILENAME IS CORRECT:
cert /etc/openvpn/easy-rsa/keys/cert.crt
key /etc/openvpn/easy-rsa/keys/cert.key

server 10.5.3.0  255.255.255.0
# YOUR LOCAL SERVER IP HERE:
client-config-dir ccd
route 10.5.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun

status log/openvpn-status.log 5
status-version 2
log-append log/openvpn.log
verb 3  # verbose mode
management localhost port /etc/openvpn/management-password

# ROUTE THE CLIENT'S INTERNET ACCESS THROUGH THIS SERVER:
push "redirect-gateway def1"
push "remote-gateway vpn_server_ip"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 60

答案2

也许你忘了修改 NAT?以 root 身份运行这 3 条命令

命令:

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

标题:

  • tun0:你的虚拟 VPN 网卡
  • eth0:你的普通网卡
  • 10.8.0.0:你的 VPN 网络 IP 地址块

答案3

经过一番努力寻找答案后,我似乎已经解决了这个问题,也许只是部分解决了,但至少非常简单:

我使用 Xubuntu 14.04 和主源中的 OpenVPN 包。在设置 > 系统 > 网络127.0.1.1,我用 Google 的替换了预装的 DNS 地址8.8.8.8,现在我可以看到所有通过 VPN 服务器的流量。

在 Wireshark 的表中,DNS 之类的字符串不存在:所有数据都像 TCP 一样通过加密通道传输。当我查看tun0(笔记本内部)时,我可以看到 DHCP 和 DNS 流量。当我探索wlan0流量(笔记本和 WiFi 路由器之间的外部)时,我只得到灰色 TCP 包。

我认为发生这种情况的原因是字符到数字解码不需要 DNS 查询,并且它像通常的数据包一样进入公共流。

我很高兴知道你的考虑,如果我完全错了,我也不会感到惊讶

答案4

在服务器端找到server.conf文件并将此行添加到其中

push "redirect-gateway autolocal"

它将通过隧道重定向所有客户端流量

相关内容