安装ocserv

目前Cisco的AnyConnect似乎是唯一可行的iOS非越狱翻墙客户端,为了看油管和其他内容大家也是操碎了心。这里就放一下在CentOS 7下配置ocserv(OpenConnect Server)的过程和笔记。由于OpenConnect采用的是SSL的方式,所以一般来说采用的是443端口,迫使防火墙不好封端口。所以只要能正常访问https,都可以正常访问oc server。

安卓客户端推荐OpenConnect,AnyConnect会有问题,而且不能保存密码。

我用的是账户密码登陆的形式,使用证书的配置请找找别的资料。

以下所有操作都在root用户下进行。

0. 申请SSL证书
可参考这个https://www.d0z.net/?s=ssl找到一家便宜的证书提供商,或者自己签。这里不阐述。
把私钥、证书和公钥放在/etc/ocserv/ssl/下,分别命名为server.keyserver.crt以及ca.crt

1. 安装EPEL源。

yum install epel-release -y

2. 安装ocserv

yum install ocserv -y

通过以下命令生成强dhparam,当然文件夹要事先建立好。

openssl dhparam -out /etc/ocserv/dhparam.pem 2048

3. 配置ocserv
/etc/ocserv/ocserv.conf

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
tcp-port = 443
udp-port = 443
run-as-user = ocserv
run-as-group = ocserv
socket-file = ocserv.sock
chroot-dir = /var/lib/ocserv
isolate-workers = true
max-clients = 64
max-same-clients = 5
keepalive = 32400
dpd = 1800
mobile-dpd = 1800
try-mtu-discovery = true
server-cert = /etc/ocserv/ssl/server.crt
server-key = /etc/ocserv/ssl/server.key
dh-params = /etc/ocserv/ssl/dhparam.pem
ca-cert = /etc/ocserv/ssl/ca.crt
cert-user-oid = 0.9.2342.19200300.100.1.1
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0"
auth-timeout = 40
min-reauth-time = 300
max-ban-score = 50
ban-reset-time = 300
cookie-timeout = 32400
deny-roaming = false
rekey-time = 172800
rekey-method = ssl 
use-occtl = true
pid-file = /var/run/ocserv.pid
device = vpns
predictable-ips = true
default-domain = your-domain.com
ipv4-network = 192.168.238.0
ipv4-netmask = 255.255.255.0
dns = 8.8.8.8
dns = 8.8.4.4
ping-leases = false 
no-route = 192.168.0.0/255.255.0.0
no-route = 172.16.0.0/255.240.0.0
no-route = 169.254.0.0/255.255.0.0
no-route = 10.0.0.0/255.0.0.0
no-route = 127.0.0.0/255.0.0.0
cisco-client-compat = true

4. 增加用户

ocpasswd -g groupname user1

记得改变groupname 和 username,接下来会要敲两遍密码。

5. 配置防火墙
把以下内容保存为/etc/firewalld/services/ocserv.xml



    ocserver
    Cisco AnyConnect
    
    

增加防火墙规则:

firewall-cmd --permanent --add-service=ocserv
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

通过firewall-cmd --list-all-zones检查是否正确开启ocserv服务。

6. 启动ocserv

systemctl enable ocserv
systemctl start ocserv

7. 查看是否报错:

systemctl status ocserv

如果有一个绿色的running那就赶快连接吧!

8. 自动部署
https://github.com/hlx98007/deployment-scripts/blob/master/ocserv/setup.sh

作者:小老外

我还需要不断地学习。

2条评论

  1. echo “password” | sudo openconnect -u username –passwd-on-stdin –no-cert-check server_url

  2. 至于no-route国内IP直接访问的规则,请参考github.com/CNMan的相关配置。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据