1
jasontse 2015-03-29 09:58:29 +08:00 via iPad
理论上是 PPTP 的 GRE 封装比 UDP 快
|
2
liuchen9586 OP @jasontse 是的,但是我测试了十几个用户,都说OpenVPN的UDP封装比PPTP的速度快得多,玩游戏也是OpenVPN UDP性能更优秀。
所以我感觉,按照实际上来比较好。 |
3
hadoop 2015-03-29 10:09:25 +08:00
感谢lz,改天试试。
|
4
pwinner 2015-03-29 10:54:29 +08:00 via Android
pptp怎么优化至今还没搞定,自己的Linode跑pptp能看网页但是速度奇慢,只有不到0.5Mbps,楼主方案是一个很不错的解决办法啊。(用Debian残念的看着你
|
5
liuchen9586 OP @pwinner 命令都是差不多的(认真
命令可以翻译成不同版本的。 |
6
pwinner 2015-03-29 10:59:58 +08:00 via Android
@liuchen9586 这个我也知道啦:p
顺便我发现国内中转好像也没什么优势嘛,自己的杭州阿里云ping我的日本linode丢包,延迟还不如自己家。。。 |
7
hjc4869 2015-03-29 11:08:14 +08:00
感谢楼主。已收藏,等我搞到靠谱的我朝服务器后试试。
|
8
laincat 2015-03-29 11:24:26 +08:00
好文,留个记号以后用。
|
9
liuchen9586 OP |
10
zk8802 2015-03-29 12:11:50 +08:00
祝贺楼主成功完成了配置!
|
12
datou 2015-03-29 12:33:31 +08:00
玩东南亚csgo匹配的话,办个移动宽带比啥都强
0loss,70ms左右的延迟 |
13
guojing 2015-03-29 12:53:45 +08:00
@liuchen9586 对linux不是太熟悉,可能理解错。看你配置的步骤感觉有重复:步骤2,5重复,步骤3,4重复。能说明一下吗?谢谢
|
14
liuchen9586 OP @guojing iptables 和ip rule要配合工作的,缺少一样都跑不起来。
2和5真没重复,一个是NAT翻译,改变source IP的,一个是规定路由表,没routing table数据包是不知道怎么走的。 |
15
Yien 2015-03-29 13:52:22 +08:00
感谢楼主分享!
|
16
treo 2015-03-29 14:04:32 +08:00
为啥要这么折腾,server端多开几个shadowvpn,让客户端直接运行shadowvpn不就行了
需要墙内服务器中转的,就由墙内服务器直接转发udp包到墙外server端 |
17
liuchen9586 OP @treo 那你是没玩过高级策略路由特性。粗暴的端口转发方式,稍微高级点的路由特性都不支持,比如多重转接。
|
18
welsmann 2015-03-29 18:00:52 +08:00
先收藏+感谢,得空来试试
|
19
XiaoxiaoPu 2015-03-29 18:56:15 +08:00
步骤 3 和 4 确实重复了,只要 4 就够了。iptables 的 mark 和 ip rule 配合适合用来做不同端口走不同路由。
|
20
liuchen9586 OP @XiaoxiaoPu 嗯,不过既然能用而且能起到控制路由走向,就木有问题啦。
(其实我想说我这个CentOS 6.x,3和4步骤缺一不可……不知道为啥) |
21
XiaoxiaoPu 2015-03-29 21:09:37 +08:00
@liuchen9586 我自己的没用 iptables 的 mark,一点问题也没有(archlinux 大法好)
|
22
rainy3636 2015-03-29 21:31:25 +08:00
转发不该是这个吗?
iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -j SNAT --to-source [你的ShadowVPN interface IP] 没有-t nat的话 debian 下提示iptables: No chain/target/match by that name. |
23
Leafove 2015-03-29 21:38:47 +08:00
@rainy3636
@liuchen9586 而且非ovz下应该是iptables -t nat -A POSTROUTING -s [源地址段] -o tunX (你的ShadowVPN interface) -j MASQUERADE |
24
Leafove 2015-03-29 21:39:47 +08:00
@liuchen9586 特别感谢,周五还在发帖询问相关方案
|
25
rainy3636 2015-03-29 21:51:05 +08:00
|
26
liuchen9586 OP |
27
Sagiri 2015-03-29 22:53:01 +08:00
收藏 感谢分享
|
28
free1 2015-03-29 23:01:11 +08:00 via iPhone
感谢分享,标记一下~
|
29
phoenixlzx 2015-03-29 23:09:52 +08:00 via Android
我一直是 chnroutes + ip rule,国内节点正好当BGP加速解决跨运营商访问慢
|
30
hzqim 2015-03-29 23:59:16 +08:00
感觉比 shadowsocks 麻烦一些,请问 openvpn 比 shadowsocks 胜在哪里?
|
31
nlzy 2015-03-30 01:19:48 +08:00
感谢分享,不过这好麻烦,,,我打CSGO匹配用奇游80ping,已经很满足了=A=
|
32
yy1984 2015-03-30 09:02:37 +08:00
我感觉不需要openvpn,只要shadowvpn一个就足够了。
我目前就是用shadowvpn+ipset+dnsmasq-full+gfwlist智能翻墙,唯一的麻烦在于shadowvpn与MWAN3多拨不兼容。 |
33
liuchen9586 OP @yy1984 我这个不是翻墙的……我这个是策略路由,而且并不是在家用路由器上面做的QAQ
|
34
lhuiwu6 2015-03-30 09:39:04 +08:00
犀利的楼主。有时间再瞧瞧。
|
35
yy1984 2015-03-30 10:34:07 +08:00
@liuchen9586 智能翻墙就是用策略路由实现的,也是iptables设置mask,然后ip rule分流。
家用路由器上的openwrt也是linux,本质上跟你的方法没区别。 所以我觉得openvpn或shadowvpn有点多余,留一个就行 |
36
liuchen9586 OP @yy1984 我服务器是放在公网的,根本不是家用路由器啊
给人玩东南亚游戏加速用的 |
37
loca1h0st 2015-04-06 17:34:20 +08:00
@liuchen9586
我按照你的教程确实已经配置成功了,非常感谢。 但现在有一个想法,拉入chnroutes在整个网络拓扑内。 我尝试在国内的跳板机上配置根据目的地地址的ip rule策略,达到国内的流量走国内的跳板机的目的。 但是现在配置完成之后国内的地址就无法访问了,我估计是因为iptables把我openvpn的地址转成shadowvpn的了? 想问问楼主你对这个问题有没有什么好的看法? |
38
liuchen9586 OP @loca1h0st chnroute给的下一跳地址是eth0?如果不是那就没法访问的。
表要打入对应编号的路由表内,不然也不行 |
39
loca1h0st 2015-04-06 22:37:39 +08:00 via iPad
@liuchen9586 我是写的openvpn的网卡as0t1,如果写eth0不会因为nat的原因数据包无法转发么?
|
40
loca1h0st 2015-04-06 22:44:07 +08:00 via iPad
@liuchen9586 你好,我刚刚尝试了如下操作。
添加自定义路由表china 然后设置ip route add default dev eth0 table china ip rule from openvpn to chnroutes table china 然后测试访问国内的网站发现Chrome的提示是因防火墙或代理错误无法访问。 这个是不是因为走国内的线路并没有对数据包进行NAT抓换造成的? |
41
liuchen9586 OP @loca1h0st chnroute下一跳写物理网卡出接口。
|
42
loca1h0st 2015-04-07 08:33:33 +08:00
@liuchen9586 物理网卡是eth0...
|
43
liuchen9586 OP @loca1h0st 知道,Chnroute下一跳写eth0,default gw写ShadowVPN的interface
|
44
loca1h0st 2015-04-07 09:56:58 +08:00
|
45
liuchen9586 OP @loca1h0st ip rule抓的流量是让它强制使用这个路由表,真正控制数据包走向还是靠路由表里面的路由条目。
default gw就是你写的这个。 chnroute下一跳写eth0就是指明它直接走物理网卡。 然后补上一条NAT语句: iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -j SNAT --to-source [你的eth0 IP] NAT Translation只有在数据包到达接口的时候才会触发。 |
46
kacong 2015-04-07 11:36:56 +08:00
终极解决方案之一,只要出国网络还通,就有希望ok,谢谢。
|
47
loca1h0st 2015-04-07 19:49:43 +08:00
@liuchen9586 刚刚测试了下还是不行。。
默认情况: ip route add default dev tun0 table vpn ip rule add from openvpn table vpn iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -j SNAT --to-source [你的tun0 IP] chnroutes ip route add default dev eth0 table china ip rule add from openvpn to chnroutes table china iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -j SNAT --to-source [你的eth0 IP] ip route flush cache 访问国内的网站还是出现网络防火墙或代理错误 |
48
loca1h0st 2015-04-07 19:58:20 +08:00
@liuchen9586 按如上的配置完成之后本地访问的同时对网卡进行抓包。
出现的是10.7.0.2(shadowvpn的interface ip)发出的arp报文,报文内容为ARP, Request who-has a.b.c.d tell 10.7.0.2, length 28 |
49
liuchen9586 OP @loca1h0st chnroute的路由条目放到vpn路由表内
|
50
loca1h0st 2015-04-07 21:56:01 +08:00
@liuchen9586 已经解决了,非常谢谢指导。
记录下解决方案,也许会对别人有帮助 1.把两条SNAT的命令修改成如下: iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -o tun[x] -j SNAT --to-source [你的tun0 IP] iptables -t nat -A POSTROUTING -s [你的openvpn源地址段] -o eth[x] -j SNAT --to-source [你的eth0 IP] 然后再抓包发现还是有ARP报文,但是IP地址从10.7.0.2变成了eth0的IP地址。 这里是感到奇怪的一点,明明有子网掩码的计算了,不应该出现ARP,应该就去找网关地址了。 2.然后修改自定义路由表的默认网关信息。 由ip route add default dev eth0 table china修改为: ip route add default via [gw_ip] dev eth0 table china ip route flush cache之后达到目标。。。 |
51
KCheshireCat 2015-04-27 10:55:26 +08:00 1
其实还有个隧道选项 走UDP的静态l2tpV3,比较新的内核直接就支持。
然后3.18内核开始还有个foo over udp的新静态隧道。 UDP的好处是可以穿ISP的NAT。 |
52
1nt 2015-05-22 11:45:58 +08:00
|
53
liuchen9586 OP @1nt 我用的是Ustack,30Mbps能跑到28Mbps,还可以
|
54
g552656 2015-06-08 16:10:55 +08:00
@liuchen9586 愿意有偿咨询几个问题,可否给个联系方式?
|
55
liuchen9586 OP @g552656 其实我对linux不太熟悉
你可以发邮件到我ID@google邮箱 |
56
NickLiulol 2015-07-03 00:04:33 +08:00
@liuchen9586 太感谢了,AZURE北京+日本某机房成功配置,但是北京机房ping还是丢包,所以买了个softlayer香港的机房试试
|
57
NickLiulol 2015-07-03 23:41:39 +08:00
IP是pmang黑色沙漠游戏服务器,国内是ping不通的,现在是武汉电信+香港CN2+日本ConoHa,原本ConoHa机房是丢包之王不用看,其他的KDDI/NTT/IIJ机房半夜不丢包稳定下来也70左右。 另外我不知道为什么用OPENVPN会莫名其妙200+ms,以为是干扰,但是XOR PATCH也没有用,就索性改了PPTP+shadowvpn的组合,把MTU改成1396,之后就成功了。 多谢楼主,简直是完美解决我玩日服的难题。 |
58
liuchen9586 OP @NickLiulol 我现在都已经淘汰了这种双重NAT的方案了……直接在内网跑个BGP路由,添加删除服务器更方便,而且还能自动愈合自动切换
|
59
NickLiulol 2015-07-04 01:25:16 +08:00 via iPhone
@liuchen9586 这应该就很接近/就是很多网游加速器的做法了吧,
|
60
liuchen9586 OP @NickLiulol 这个嘛,就不知道了
因为BGP方便,没双重NAT那么死板,加一台服务器/一个网段只要一条命令就够了 |
61
zixia 2015-07-20 21:28:32 +08:00
@NickLiulol 我最近一直在找 XOR PATCH ,可不可以帮忙推荐一些资料?
|
62
NickLiulol 2015-07-21 01:08:39 +08:00
@zixia
这个PATCH只支持2.3.6 https://github.com/clayface/openvpn_xorpatch 架设可以参考 http://www.lowendtalk.com/discussion/21539/tutorial-build-your-ultimate-scrambled-vpn 客户端也需要PATCHED过的版本,可以自己编译也可以下别人编译好的。https://scramblevpn.wordpress.com/2013/09/28/build-patched-windows-openvpn-client/ |
63
macdovell 2015-08-25 17:54:13 +08:00
你好,我想请问下,除了 shadowvpn ,中间的桥接过程还有别的替代方案吗?
|
64
liuchen9586 OP @macdovell openvpn-statickey l2tpv3 都行
|
65
macdovell 2015-08-26 01:13:23 +08:00
@liuchen9586 楼主你好,我照着你的方案配置了一下,但是最后一步的 SNAT 中始终没有包,请问这有可能是哪里的问题呢
|
66
liuchen9586 OP @macdovell 没包可能是你 snat 网卡 IP 写错了
|
67
macdovell 2015-08-26 10:39:37 +08:00
@liuchen9586 嗯, ip 没错,包都走到了 MASQUERADE 去了,是之前加的规则,我删除后, SNAT 中有包,但还是没网络,准备下班了去抓包看
|
68
ultimate010 2015-09-11 23:49:17 +08:00
按照你的方法 work 了,请教有没有方法让目的地是国内的 ip ,直接在国内 server 上转发,不跑去香港。
|
69
liuchen9586 OP @ultimate010 chnroute
|
70
ultimate010 2015-09-12 12:17:53 +08:00
@liuchen9586 在国内的 vpn 服务器上设置 chnroute ?我的目的是客户端不需要任何设置,国内流量从国内 vpn 服务器走,国外从国外服务器走,有好的实现吗?话说我用 shadowvpn ,因为基于 udp ,阿里云到香港跑满了才 400k ,而 tcp 的直接 http 测试,可以达到 7mb ,中转了一路不如直接连 tcp 快。
|
71
lc19920108 2017-06-08 22:21:47 +08:00
楼主你好,请问可以一台国内服务器同时中转多个国外服务器么,像现在的各种加速器一样
|
72
liuchen9586 OP @lc19920108 自己写路由表,根据源地址来走不同策略表或者根据目标地址走不同隧道。
|
73
Damaidaner 2018-04-04 15:22:54 +08:00
收藏感谢!!
|