wangyu- / UDPspeeder

A Tunnel which Improves your Network Quality on a High-latency Lossy Link by using Forward Error Correction, possible for All Traffics(TCP/UDP/ICMP)
MIT License
4.7k stars 827 forks source link

WIN10用openVPN配合虚拟路由udp2raw+udpspeeder.套接正常openVPN也提示连上去了但一旦连接成功就ping不通虚拟路由(不连的话正常) #108

Open ZSJsts opened 6 years ago

ZSJsts commented 6 years ago

(问题已经解决,我已经重新编辑修改了笔误并删掉次要内容,以方便后续其他人检索)

首先非常感谢作者的代码 (o-ωq)).oO并祝作者新年快乐

环境 电脑_WIN10+Vmware_LEDE虚拟路由(192.168.2.107)+VPS_centOS6. ipforward打开,防火墙除NAT转发外全部删除或关闭.

套接: 虚拟路由(桥接): ./speederv2_x86 -c -l0.0.0.0:3333 -r 127.0.0.1:8855 -f20:30 --mode 0 ./udp2raw_x86_asm_aes -c -l127.0.0.1:8855 -r 99.88.77.66:8866 -k "passwd" --raw-mode faketcp -a

VPS: ./udp2raw_x86_asm_aes -s -l0.0.0.0:8866 -r 127.0.0.1:7776 -k "passwd" --raw-mode faketcp -a ./speederv2_x86 -s -l127.0.0.1:7776 -r 127.0.0.1:1194 -f20:30 --mode 0 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 99.88.77.66

客户端配置文件(client.conf) client proto udp remote 192.168.2.107 3333 dev tun resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server auth SHA256 auth-nocache cipher AES-128-CBC tls-client tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 setenv opt block-outside-dns verb 3

服务器端配置文件 port 1194 proto udp dev tun user nobody group nobody persist-key persist-tun keepalive 10 120 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist list.txt #list.txt里是client 10.8.0.2 push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" push "redirect-gateway def1 bypass-dhcp" crl-verify crl.pem ca ca.crt cert server.crt key server.key tls-auth tls-auth.key 0 dh dh.pem auth SHA256 cipher AES-128-CBC tls-server tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-128-GCM-SHA256 status openvpn.log verb 3

VPS防火墙规则: [root@host-99-88-77-66 /]# service iptables status Table: nat Chain PREROUTING (policy ACCEPT) num target prot opt source destination

Chain POSTROUTING (policy ACCEPT) num target prot opt source destination
1 SNAT all -- 10.8.0.0/24 0.0.0.0/0 to:99.88.77.66

Chain OUTPUT (policy ACCEPT) num target prot opt source destination

Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination
1 udp2rawDwrW_d2990fcb_C0 tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8866

Chain FORWARD (policy ACCEPT) num target prot opt source destination

Chain OUTPUT (policy ACCEPT) num target prot opt source destination

Chain udp2rawDwrW_d2990fcb_C0 (1 references) num target prot opt source destination
1 DROP all -- 0.0.0.0/0 0.0.0.0/0

连接后本机 qq 20180105190616

结果: openVPN连接成功.查看日志并确定返回了正确的IP地址(10.8.0.2) 这表明整个套接是顺畅的. 但WIN10的所有联网软件和不使用代理的浏览器全都连不上网络. 且在不连接openVPN时可以正常访问192.168.2.107并打开虚拟路由的用户UI界面. 但openVPN一旦连接并提示成功后无法再如常访问虚拟路由地址.卡在LuCI - Lua Configuration Interface界面.

wangyu- commented 6 years ago

而且本身可以在浏览器访问192.168.2.107打开虚拟路由的用户UI界面的.但openVPN一旦连接并提示成功后就连接不上了.卡在LuCI - Lua Configuration Interface不停转圈.

OpenVPN连上以后,不应该影响“192.168.2.*“这个子网的访问,如果无法访问192.168.2.107,肯定是哪里出了问题。建议从这里入手。

有可能是OpenVPN连上之后,VMWARE桥接的网卡变了。要手动指定桥接的网卡,不能选“自动”。

贴一下桥接网卡的配置。

ZSJsts commented 6 years ago

qq 20180105192126 qq 20180105192143

wangyu- commented 6 years ago

VMWARE设置没问题。

你openvpn连上以后在电脑上ping 192.168.2.107,能ping通吗?

另外再贴一下电脑上的route print结果(在openvpn连上以前和openvpn连上以后,分别的)。

ZSJsts commented 6 years ago

ping不通.显示请求超时.

wangyu- commented 6 years ago

不开VPN时候能否ping通?

ZSJsts commented 6 years ago

不开VPN的时候,能ping通.一切正常.

wangyu- commented 6 years ago

再贴一下电脑上的route print结果(在openvpn连上以前和openvpn连上以后,分别的)。

wangyu- commented 6 years ago

再测试一下openvpn连上以后在虚拟机里ping VPS的ip是否可以ping通。

ZSJsts commented 6 years ago

openVPN连上后 1

openVPN不连接时 1

openVPN连上时,虚拟机路由pingVPS的IP可以ping通.ping其他常规网站也能ping通. 我用cat /etc/resolv.conf命令查看虚拟机路由的DNS返回的是 search lan nameserver 127.0.0.1 这正常吗?

我回复可能会有点慢(火狐卸载现在只有chrome用.openVPN关来关去再发帖导致看帖回帖有点受影响).

wangyu- commented 6 years ago

我用cat /etc/resolv.conf命令查看虚拟机路由的DNS返回的是 search lan nameserver 127.0.0.1 这正常吗?

这个是正常的。

现在的主要问题是ping不通192.168.2.107,不受dns影响,暂时不用考虑dns的问题。

应该是OpenVPN添加的路由表有问题,具体是什么问题我现在不清楚,我再试。

我觉得你可以尝试把server端的push "redirect-gateway def1 bypass-dhcp"去掉,不要让openvpn自动添加路由表,然后重新试一下ping 192.168.2.107能不能ping通。如果能ping通的话,自己手动加一下路由表应该就能解决问题了。

ZSJsts commented 6 years ago

删掉push "redirect-gateway def1 bypass-dhcp"后能ping通192.168.2.107了 谢谢你. 我现在在手动添加路由表.后续结果我会在完成后写在这里的

wangyu- commented 6 years ago

删掉push "redirect-gateway def1 bypass-dhcp"后能ping通192.168.2.107了

现在vpn连上以后,ping 10.8.0.1能否ping通?

ZSJsts commented 6 years ago

能ping通.

wangyu- commented 6 years ago

那应该就是push "redirect-gateway def1 bypass-dhcp"这条命令的问题了。

这条命令在VPN连上以后,把本机到虚拟机的连接搞坏了。

去掉这条命令后,现在你ping 10.8.0.1能ping通说明VPN已经连上了,只是没有添加路由表,现在流量默认不走VPN。

你用管理员权限开个cmd,执行:

route ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.1
route ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.1

这样应该就能让本机的流量默认走VPN了;不过我不熟悉windows下的路由表,不确定。

ZSJsts commented 6 years ago

你用管理员权限开个cmd,执行:

route ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.1 route ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.1 这样应该就能让本机的流量默认走VPN了;不过我不熟悉windows下的路由表,不确定。

路由表添写好了,现在都连上了.所有连接都连上啦!^ ^ 问题解决了,谢谢你^ ^ 不过不知道为什么我METRIC指定后按route print出来的表写的应该是259才对但为什么是10.......

wangyu- commented 6 years ago

不过不知道为什么我METRIC指定后按route print出来的表写的应该是259才对但为什么是10.......

不清楚。

不用指定metric,路由表查询优先按最精确的原则匹配,只有在精确匹配出现了平局的时候才会用metric。

wangyu- commented 6 years ago

提醒一下看到此issue的其他人:

route ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.1
route ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.1

这里的10.8.0.1不一定是.1,楼主的情况是 .1,因为他client分配到的ip是10.8.0.2

如果你的 openvpn client分配到的ip是10.8.0.x,应该用:

route ADD 0.0.0.0 MASK 128.0.0.0 10.8.0.x-1(减一)
route ADD 128.0.0.0 MASK 128.0.0.0 10.8.0.x-1
mebest100 commented 6 years ago

我的route print如下,openvpn没有配udpspeeder之前是可以正常工作的: image

现在server.conf里面去掉“push "redirect-gateway def1 bypass-dhcp"”

然后按照你上面的方法添加windows路由(openvpn客户端分配的ip是10.8.0.6),但是还是不能上网:

wangyu- commented 6 years ago

@ZSJsts 貌似有更简单的办法。

只要在openvpn client端的配置文件里加上:

route 0.0.0.0 128.0.0.0
route 128.0.0.0 128.0.0.0

可以免去每次用route ADD手动添加路由的操作。