Ocserv 的 TCP 加速问题

2015-02-23 13:41:15 +08:00
 jaleo

VPS装了Ocserv、SS和LotServer,Lotserver的配置文件里accif="eth0 vpns0",对两个接口都进行加速,
但vpns0这个接口由Ocserv产生,但在anyconnect断开连接后就消失了,因此每次连接anyconnect,都得在服务器上重新加载Lotserver的配置文件,否则Lotserver不会对vpns0接口加速。
我对Linux不熟悉,有什么办法可以让vpns0接口固定下来?

2439 次点击
所在节点    VPS
43 条回复
jaleo
2015-02-25 20:32:41 +08:00
经过推特网友指点,终于搞定了Cisco anyconnect TCP加速。

1. 随便在某个目录下建一个脚本 比如ocserv-script,内容:
#!/bin/sh
/appex/bin/lotServer.sh reload

2. chmod +x ocserv-script

3. vi /usr/local/etc/ocserv/ocserv.conf
找到 #connect-script = /scripts/ocserv-script
修改为 connect-script = ocserv-script (此处填写脚本的实际路径)

4. systemctl stop ocserv systemctl start ocserv

5. vi /appex/etc/config
修改为 accif="eth0 vpns0"

ok了。只要移动端的anyconnect连接上,就会自动执行脚本,重新加载Lotserver配置文件。

以上在Centos 7系统通过。

希望对大家有用。
现在的ipad上有越狱版的SS和anyconnect,单位100M电信下,youtube可以5MB/s。
hejiaxian
2015-02-25 20:55:23 +08:00
其实ac只要udp不出问题,都是用发的udp包,除非你在ocserv.conf下把udp端口注释掉。
jaleo
2015-02-25 21:13:16 +08:00
@hejiaxian UDP端口没注释掉,这么说Lotserver对UDP也有效?不加速的话速度真的很慢,家里只有100-200KB/s,单位里最多500多KB/s,
hejiaxian
2015-02-25 22:25:37 +08:00
@jaleo 锐速只对tcp有效吧,虽然配置文件里面有个选项可以配置对udp加速,但是据说是没用的,我自己没试过。我锐速就对ac没效,同一台vps,我ss能跑60+mbps,但是ac就大概20Mbps左右。
jaleo
2015-02-26 08:59:30 +08:00
@hejiaxian 有些服务器装了加速软件后,速度会变慢,按照网上的教程,把rsc="1"打开速度就快了。
关于加速软件为何可以对UDP有效,我也不清楚。但速度确实挺快的。
hejiaxian
2015-02-26 10:34:31 +08:00
@jaleo 我知道,DO linodo这些都要打开rsc,这是收发合并
iCodex
2015-03-05 01:00:26 +08:00
接口写死是会出问题的。建议写多一个读取网卡接口的判断,比如下面这样,放到一个文件里,赋予执行权限

```
wanif=$(ip a|grep vpns|grep peer|awk '{print $NF}')
sed -i "10s/^accif=.*$/accif=\"eth0 $(echo $wanif)\"/" /serverspeeder/etc/config
sleep 1
/serverspeeder/bin/serverSpeeder.sh reload
```

connect-script = /usr/local/sbin/Speeder_reload.sh
disconnect-script = /usr/local/sbin/Speeder_reload.sh
然后连接上的来执行一次,断开也执行一次
iCodex
2015-03-05 02:25:36 +08:00
后来才看到有一个更简单的办法。直接执行/serverspeeder/bin/setConfig.sh wanIf vpns0即可
jaleo
2015-03-05 09:13:34 +08:00
@iCodex 谢谢你的建议,这个脚本不错。
我Linux新手,有几个问题不明白。
1、脚本里的wanif会获取所有的tun接口,对吗?
2、sed -i 的用法不熟悉,10s什么作用? -i 后为何是双引号?我在centos 7里测试,只能单引号成功,比如sed -i 's/accif="eth0"/accif="eth0 vpns0"/g' /appex/etc/config
3、cisco anyconnect断开后,vpns*接口会消失,这个disconnect脚本的执行是在接口消失之前还是之后?
jaleo
2015-03-05 14:25:29 +08:00
@iCodex 我把grep后面的peer改成inet,另外10s是不是第10行的意思?,我改成了s。
wanif=$(ip a|grep vpns|grep inet|awk '{print $NF}')
sed -i "s/^accif=.*\$/accif=\"eth0 $(echo $wanif)\"/" /appex/etc/config
/appex/bin/lotServer.sh reload

成功了,这样多人使用anyconnect客户端加速也没有问题了。
非常感谢。
kkxxxxxxx
2015-03-09 15:16:42 +08:00
@jaleo 对Ocserv vpnsXX 的最终加速脚本是怎样的,也会对后面连接的用户端口生效么
jaleo
2015-03-09 15:58:53 +08:00
@kkxxxxxxx 可以的,上面的脚本就是这个效果。在ocserv的配置里修改connect-script和disconnect-script的路径为脚本的路径即可。
kkxxxxxxx
2015-03-09 16:34:39 +08:00
@jaleo 我按你最后面这个内容建了个文件,chmod +x,然后 ocserv配置里添加路径。(放在哪里都不影响吧)。客户端重新连接anyconnect,再./lotServer status查看,还是只有eth0的信息。这样算执行了么
kkxxxxxxx
2015-03-09 16:40:50 +08:00
@jaleo 可以,谢谢
jaleo
2015-03-09 17:13:37 +08:00
@kkxxxxxxx 搞定了?
kkxxxxxxx
2015-03-09 17:32:26 +08:00
@jaleo 嗯,搞定了,非常感谢,./lotServer status 有看到多了个vpns0,应该就可以了吧
jaleo
2015-03-09 18:13:07 +08:00
@kkxxxxxxx 是这样的,祝贺。
kkxxxxxxx
2015-03-10 09:10:44 +08:00
@jaleo 现在有个问题是运行一段时间lotserver就当掉了,启动报错:Device "vpns0" does not exist(有时候是vpns1...)
kkxxxxxxx
2015-03-10 09:13:45 +08:00
@jaleo 似乎是anyconnect客户端断开后,有时候没有执行脚本,/appex/etc/config里仍然保留了断开的端口,导致lotServer服务无法加载配置中止
jaleo
2015-03-10 09:46:44 +08:00
@kkxxxxxxx 你是linode的vps吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/172292

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX