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.74k stars 833 forks source link

求教 openvpn+udp speeder route的具体例子 #55

Closed Skyblockrh closed 7 years ago

Skyblockrh commented 7 years ago

先感谢作者的项目 我是win7+vmware 使用的虚拟机是udp2raw中提供的lede路由固件 我ssh虚拟机 通过sftp将speedv2传到了虚拟机 目前我已经搭好了open VPN(直连可用)并开启了redirect Gateway 以下是问题: 1.麻烦帮我看一眼我上面那个将speederv2在lede固件中运行得方法行么?跟其他人用的路由插件有区别么? 2.如果我的openVPN服务器ip为45.66.77.88 端口是2000 通过udpspeeder 将端口映射至4200 本地虚拟机ip为192.168.1.4 内置udpspeeder将45.66.77.88:4200映射至192.168.1.4:1500 pc的ip为192.168.1.3请教一下如果用ip route add xx.xx.xx.xx via xx.xx.xx.xx 具体应该如何替换 使udpspeeder的流量不通过openvpn 或者说如果网页登录的话应该怎么填route (麻烦了 我是真的不会...) 3.看udp2raw的issue中有提到ocserv也能使用 那么如要使用anyconnect是否要用open VPN将其转换成udp才能通过udp2raw呢? 4.请教一下openvpn+udpspeeder+udp2raw的route填写和问题2的答案类似呢?

wangyu- commented 7 years ago

请教一下如果用ip route add xx.xx.xx.xx via xx.xx.xx.xx 具体应该如何替换

你先用ip route看一下输出。比如:

root@debian9:~/Desktop/udp2raw-tunnel# ip route
default via 192.168.100.1 dev ens33 proto static metric 100
169.254.0.0/16 dev ens33 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-832721119df5 proto kernel scope link src 172.18.0.1 linkdown
192.168.100.0/24 dev ens33 proto kernel scope link src 192.168.100.107 metric 100

对于这个输出就 ip route add 45.66.77.88 via 192.168.100.1。

4.请教一下openvpn+udpspeeder+udp2raw的route填写和问题2的答案类似呢?

一样的

3.看udp2raw的issue中有提到ocserv也能使用 那么如要使用anyconnect是否要用open VPN将其转换成udp才能通过udp2raw呢?

没用过这两个,不清楚。

1.麻烦帮我看一眼我上面那个将speederv2在lede固件中运行得方法行么?

方法没错,就是这样。

Skyblockrh commented 7 years ago

您好 我的ip route是这样的: tim 20171030224248 我 输出 ip route add 45.66.77.88 via 192.168.1.1 回复: ip : invalid argument '45.66.77.88' to ip 请教一下 这个是怎么回事 需要将光猫改为桥接模式么? @wangyu-

wangyu- commented 7 years ago

ip route add 44.55.66.77 via 192.168.1.1 dev eth0 src 192.168.1.4

不保证可以用,你尝试一下,如果加成功了,并且加了以后ping 44.55.66.77仍然可以ping通,那应该就是加对了。 (我查了一下,应该就是这样没错)

请教一下 这个是怎么回事 需要将光猫改为桥接模式么?

应该没有关系。

Skyblockrh commented 7 years ago

好的 谢谢回复 UPDATE: @wangyu- 加是加成功了 但是ping不通 而且今天UDPspeeder 运行中 有几次出现了: speederv2_amd64: fec_manager.cpp:162: int fec_encode_manager_t::re_init(int, int, int, int, int, int): Assertion `data_num+redundant_num<max_fec_packet_num' failed. Aborted 不知道为什么 然而我重新运行了UDPspeeder之后就没在出现错误了 现在的情况是OpenVPN能connected 但是无法上网 ping不通45.66.77.88 正在尝试使用netcat排查问题 但如果按照上面所言 ping不通代表加错了?所以还是route的问题么? 说个情况吧 不知道你们有没有 直连OPENVPN 可正常上网 但Windows却提示no internet access 烦请给个排查方向 已根据#43 确保openvpn监听在0.0.0.0:2000 且通过netcat发现虚拟机与服务器双向通信没问题

Skyblockrh commented 7 years ago

请教一下 是我没贴配置文件还是我的问题太基础了 为什么不回复我了🌚

wangyu- commented 7 years ago

当时有点没看明白,后来就忘了

现在的情况是OpenVPN能connected 但是无法上网 ping不通45.66.77.88 正在尝试使用netcat排查问题 但如果按照上面所言 ping不通代表加错了?所以还是route的问题么?

这里是用VPN分配的ip ping还是用真实ip ping的?

wangyu- commented 7 years ago

如果是ping OpenVPN的ip ping不通,那90%可能是route的例外没添加对,OpenVPN刚connect上以后添加了重定向的规则,然后把UDPspeeder流量劫持了,造成了能connect但是ping不通。

如果是ping真实ip ping不通,可能是iptables没配好之类的原因。

Skyblockrh commented 7 years ago

用的vpn分配的ip ping的 啊 那我这个route该咋整 😂

Skyblockrh commented 7 years ago

是用的openvpn分配的ip ping的服务器的IP ping不通 而且openvpn连虚拟机以后 网络跟断了一样 网也上不去 请问这个也是route不对的原因么?

Skyblockrh commented 7 years ago

麻烦了 老是打扰作者 但我实在是没查出来应该怎么办 看了其他几个issue 貌似除了一位用WSL的 没几个人选择win+内置虚拟机的人 🌚 都是刷的路由 真的是每天就琢磨这点东西了 这东西配不好 打游戏感觉就像吃了X一样难受.......

Skyblockrh commented 7 years ago

顺便问一下需要我提供VPS么 如果需要请说 虽然open VPN直连能用 但就怕哪里配置不当 结果我想差了 没想到 然后就尴尬了

Skyblockrh commented 7 years ago

不管怎么说 我再查查我这种route应该怎么填吧 感谢作者回复 起码给了个排查方向🙏

wangyu- commented 7 years ago

ip route add 44.55.66.77 via 192.168.1.1 dev eth0 src 192.168.1.4。

我刚才自己开了个虚拟机试了,就是这么加没错的, 而且貌似桥接的虚拟机不添加这条例外也没问题。

你手动在vmware里指定一下桥接的网卡,确保它桥接到了你的无线网卡,不要选自动,自动经常出问题。

wangyu- commented 7 years ago

另外,你是不是没按照openvpn配置教程里面说的设置 mssfix和fragment为1200?

UDPspeeder里面报什么错?贴一下log。

Skyblockrh commented 7 years ago

我用的有线网卡 其他的网卡我都禁用掉了 vmware指定的是vmnet0 貌似连上以后啥报错都没有 很迷茫

wangyu- commented 7 years ago

你是不是没按照openvpn配置教程里面说的设置 mssfix和fragment为1200?

Skyblockrh commented 7 years ago

设置了 之前怀疑过这个 服务端和客户端都设置了 Client: tim 20171104003508 Server: tim 20171104003701

Skyblockrh commented 7 years ago

mtu也限制为1200了 但是连上以后还是没网。。。。

Skyblockrh commented 7 years ago

这是服务端的iptables: tim 20171104004436 客户端的iptables我没动过 服务端的ip route: tim 20171104004650

Skyblockrh commented 7 years ago

客户端ip route tim 20171104004844

wangyu- commented 7 years ago

我刚才试了一下

client端:

client
dev tun100       #也可只写dev tun       也可用tap
proto udp            #需要和server一致

remote 192.168.100.59 1234
resolv-retry infinite  #无限次尝试连接服务器
nobind  #???
persist-key  #断线重连不重新读取key
persist-tun  #断线重连不up/down close/reopen tun接口

ca ./ca.crt
cert ./client.crt
key ./client.key

redirect-gateway def1  #让openvpn来修改路由表
dhcp-option DNS 8.8.8.8

keepalive 3 20

verb 3
mute 20

comp-lzo no
cipher none #不和server设成一样会报warrning
auth none

fragment 1200
mssfix 1200

sndbuf 4000000
rcvbuf 4000000
#txqueuelen 4000
mute-replay-warnings

server端:

local 0.0.0.0

port 7777 #端口,需要与客户端配置保持一致
proto udp #使用协议,需要与客户端配置保持一致
dev tun100 #也可以选择tap模式

ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

server 10.222.2.0 255.255.255.0 #给客户的分配的IP段,注意不要与客户端网段冲突!
ifconfig 10.222.2.1 10.222.2.6

client-to-client #client 间可见
duplicate-cn #允许同一个证书建立多个连接
keepalive 10 60 #每10秒一ping 连续60秒没消息就认为连接失败

#comp-lzo #启用压缩 ,客户端也需要开启
comp-lzo no
cipher none #传输数据不加密,但不关闭验证
auth none
max-clients 50

persist-key
persist-tun

status /etc/openvpn/openvpn-status.log
#log-append /etc/openvpn/openvpn.log# 添加这行以后所有输出都写到openvpn.log

verb 3
mute 20  #mute重复消息

mssfix 1200
fragment 1200

sndbuf 4000000
rcvbuf 4000000
txqueuelen 4000

客户端运行在win10,udpspeeder client运行在虚拟机;server是Vultr日本的VPS,debian系统。不需要用ip route添加例外。直接就好使了,打开ip138显示的是VPS的IP。

唯一遇到的问题是,貌似win 10上的dns设置有点BUG,win 10总是用我无线网卡上的DNS查域名,获得到了被污染的地址,打不开google系的网站;我把无线网卡的DNS改成1.1.1.1(一个无效的值),强制windows不用无线网卡查DNS,然后就完全正常了。

补充

VPS里的UDPspeeder命令:

./speederv2_amd64 -s -l0.0.0.0:8855 -r127.0.0.1:7777  --mode 0  --report 20

虚拟机里的UDPspeeder命令:

./speederv2_x86  -c -r45.76.100.53:8855 -l0.0.0.0:1234  --mode 0  --report 20

server上全部的网络设置如下:

echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.222.0.0/16 -j SNAT --to-source 44.55.66.77

虚拟机上没有做过任何网络设置。windows上除了前面说到的dns设置,没有任何其他网络设置。

以上贴出来的就是所有配置和命令了,再也没有其他的了。

Skyblockrh commented 7 years ago

哇 难道是centos有毒?我回来试试改成debian试试 🌝

Skyblockrh commented 7 years ago

有点累了 准备先歇了 明天再反馈 请作者找到休息......

wangyu- commented 7 years ago

image

open2

确保你的桥接设置跟我图里的一样。

leepoi commented 7 years ago

这么晚了还在战斗,简直是夜魔侠

Skyblockrh commented 7 years ago

谢谢回复 已经按图对照了 但是貌似还是不行 准备待会改debian试试 诶 想用centos。。。

Skyblockrh commented 7 years ago

哦 对了 这是我的openvpn的log 您看看吧 也许能分析出什么。。。。

Skyblockrh commented 7 years ago

tim 20171104091712

wangyu- commented 7 years ago

换台VPS或者换台电脑试试吧。

Skyblockrh commented 7 years ago

还想再做个挣扎 麻烦您再帮帮忙 @wangyu- 刚刚稍微再想了想 应该还是本地到虚拟机之间的问题 因为我通过udpspeeder连上openvpn后不能ping通192.168.1.4(本地虚拟机地址) 裸连就没事

Skyblockrh commented 7 years ago

请教一下 这个是怎么回事? 服务器配置没变 客户端使用vbox 安装的是centos官网的最新minimal版本 已确认服务器和客户端使用的release是同一版本 tim 20171109192344

wangyu- commented 7 years ago

你试一下在vbox里ssh那台机器看能否连上

Skyblockrh commented 7 years ago

可以的 tim 20171109194345

wangyu- commented 7 years ago

你那个log的IP显示的是255.255.255.255,有可能你的参数里有中文字符,把参数搞乱了

你尝试重新输入一下参数试试

Skyblockrh commented 7 years ago

问题已解决 感谢回复!

Skyblockrh commented 7 years ago

这次换了vbox 与之前不一样的是 虚拟机里的系统换为了centos 7 可惜貌似还是不能通 具体表现为over speeder后 主机不能上网 但是虚拟机可以ping通 baidu.com等外网 但是不能ping通主机IP(192.168.1.3) UPDATE:已确认 虚拟机内的centos关闭了firewall和iptables

Skyblockrh commented 7 years ago

问题成功解决了!!!!!!!!!!! 在windows中指定网关为虚拟机地址后成功上网了 美滋滋!!!!!!!!! 感谢作者的一路帮助

wangyu- commented 7 years ago

在windows中指定网关为虚拟机地址后成功上网了

你是把OpenVPN client跑在虚拟机里了吗?

Skyblockrh commented 7 years ago

没有啊 但是确实通过udpspeeder能上网了.....

wangyu- commented 6 years ago

这个问题貌似是push "redirect-gateway def1"的bug。

去掉push "redirect-gateway def1",手动在win10上添加路由表可以解决。

https://github.com/wangyu-/UDPspeeder/issues/108