比情人节一个人过更杯具的就是一大早起床然后收到一封邮件,RIJX说不好意思我们要跑路了,请尽快申请退款和备份你的资料。。。太坑爹了吧。。。我去哪里找那么便宜的还提供2个ip的VPS啊。。。看了看手头还有100刀DigitalOcean给的券,勉为其难用一下吧。。。然后发现上海电信连DO的网络真是各种酸爽,新加坡节点ping值平均350ms丢包率58%。。。三藩和纽约的节点更加无语。。。于是只好上LEB看了一眼,买了个5刀一年的达拉斯的白菜。。。8G硬盘+128M内存+128M swap+250G流量。。。好吧反正就是用作VPN,应该够了。。。
考虑到自己之前各种摸索也没有记录啥东西,索性整理一下,万一以后被封掉什么的。。。省得再到处找。。。
系统:Debian x86
上来先搞libgnutls28-dev:
|
|
安装各种依赖。。。
|
|
关于freeradius,有了freeradius之后增减用户很方便,而且也可以统计流量,但缺点在于freeradius不支持一个用户对应多个组,而我是打算在连接的时候选择全局还是区分流量的,如下图:
所以freeradius的部分就掠过吧,有兴趣的网上教程一搜一大把,照做就行了。至于LZ4,目前只有openconnect客户端支持,AnyConnect还是LZS压缩,所以作为懒人我也跳过吧。。。
为了避免出现烦人的不受信任服务器的提醒,强烈建议搞一个SSL的证书,startssl有免费的,教程也是一搜一大把,略过不表。假设现在从startssl那里搞来的证书是cert.crt,私钥是cert.key。首先新建一个文件夹:
|
|
然后把cert.crt和cert.key上传到那个文件夹中去。然后生成证书链。话说之前没搞证书链,AnyConnect一直提示不受信任的服务器,但是用FF打开却显示证书正确。。。一直到看了文末的那篇文章才知道问题的根源。。。
|
|
所以再接下来就是安装ocserv了,目前最新版是0.9.0.1,采用下载源码然后编译的方式,我偏好把源码放在/usr/src/下面。
|
|
看一眼,有没有啥出错的提示,一般来说,应该没有。。。然后再看看有啥想要的功能显示了no。。。
|
|
然后就修改配置文件吧,一行行来。。。
第37行,auth = "plain[./sample.passwd]",修改为auth = "plain[/etc/ocserv/ocpasswd]"
第44行,isolate-workers = true,改为false
第104行,try-mtu-discovery = false,改成true
第116和117行,按照实际证书位置修改,如果是按照我的操作的话就改成这样:
server-cert = /etc/ocserv/server-cert.pem
server-key = /etc/ocserv/cert.key
第162行,#compression = true,去掉开始的#
第168行,#no-compress-limit = 256,同样是去掉#
第205行,cookie-timeout = 300,鉴于肾机关屏断VPN解锁重连的特性,建议这里设置大一点,省得每次都要手动重连。如果2小时话,就写7200
第268行,run-as-group = daemon改为run-as-group = nogroup
第275行,#net-priority = 3,删掉#,然后把优先级提高,我自己设置了5
第290行,predictable-ips = true,设为false
第305行,dns = 192.168.1.2改为8.8.8.8
第345,346行,route = **************,都在最前面加上#,注释掉
第354行,#select-group = group1,改为select-group = global
第355行,#select-group = group2[My special group],改为select-group = routed
第379行,#config-per-group = /etc/ocserv/config-per-group/,去掉一开始的#
第384行,#default-group-config = /etc/ocserv/defaults/group.conf,去掉一开始的#
第414行,#cisco-client-compat = true,去掉一开始的#
保存退出。
然后建立分组的配置文件:
|
|
写入以下内容:
route = 0.0.0.0/128.0.0.0
route = 128.0.0.0/128.0.0.0
然后,新建推送的路由表:
|
|
接下来是新建用户了。我们将会定义2个组,一个组是global,所有流量都经过服务器转发,而另一个组叫routed,只有部分流量通过服务器转发,可以保证国内网站的速度,节约VPN的流量。假设用户名是user。注意不同用户组用英文逗号隔开。
|
|
输入2遍密码。以后新增用户也这么进行即可。
搞一个自动脚本,并设置开机自动启动:
|
|
打开端口转发:
|
|
设置iptables。linode的这篇文章的确不错,可以按照他的设置,但是记得要把-A FORWARD -j DROP这一行删掉,以及在最后的COMMIT之前加下面一句:
-A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A INPUT -p udp --dport 443 -j ACCEPT
然后在COMMIT之后再加下面这一段:
*nat
-A POSTROUTING -j MASQUERADE
COMMIT
接下来,就可以运行一下,看看是不是正常,可以debug了。。。
|
|
如无意外,大功告成~
参考的文章:
http://aenes.com/post/716.html