最近这段时间我朝的墙是越来越猛,有点赶尽杀绝的意思,也不知道是有什么重要日子?
对于搭自用梯子的话,目前有一个比较好的方案可以非常有效的“防封”,就是今天要给大家介绍的Ocserv(OpenConnect)以下简称Ocserv。
因为Anyconnect是思科开发出来的,众所周知思科的网络设备天下第一,很多大型的企业都是用思科的设备,包括Anyconnect这种VPN解决方案,所以墙不敢随便封这种协议的梯子。
但是由于思科只允许Anyconnect运行在思科的设备上,所以就有了今天的Ocserv服务端。Ocserv诞生的主要目的就是可以让任何设备都能安装上Anyconnect而不在局限于思科。
因为最近墙实在是太鸡儿猛了,所以没办法才用Anyconnect的,一般情况下这玩意我都不想碰,毕竟搭建和配置都比较麻烦,而且也不是很好配合其他的加速软件,所以就一直没想写这方面的文章,今天就详细写一下吧。
为了教程更简便,这里我直接用EPEL源安装Ocserv,可以省去麻烦的编译过程。首先安装EPEL源:
yum -y install epel-release
然后就可以直接YUM安装Ocserv了:
yum -y install ocserv
新建一个目录,用来存放SSL证书相关文件,然后进入到这个目录内:
mkdir ssl cd ssl
新建一个证书模板:
vi ca.tmpl
写入:
cn = "LALA" organization = "LALA.IM" serial = 1 expiration_days = 9999 ca signing_key cert_signing_key crl_signing_key
注:LALA和LALA.IM可以根据自己的需要更改,反正都是自签证书,随便瞎鸡儿写也没关系。。。
然后生成私钥和CA证书:
certtool --generate-privkey --outfile ca-key.pem certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
接着来生成服务器证书,还是老样子新建一个证书模板:
vi server.tmpl
写入:
cn = "你的服务器IP" organization = "LALA.IM" expiration_days = 9999 signing_key encryption_key tls_www_server
注:cn后面的值改成你的服务器公网IP。
然后生成私钥和证书:
certtool --generate-privkey --outfile server-key.pem certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
然后我们把证书文件用移动到Ocserv默认的目录下:
cp server-cert.pem /etc/pki/ocserv/public/ cp server-key.pem /etc/pki/ocserv/private/ cp ca-cert.pem /etc/pki/ocserv/cacerts/
现在编辑ocserv的配置文件(需要改动的地方很多,如果vi不好用就自己用SFTP把这个文件下载到本地用专业的编辑器编辑):
vi /etc/ocserv/ocserv.conf
让我们一起来看看需要改哪些地方:
1、auth也就是验证方式要改为:
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
如图所示:
2、默认的监听端口为443,如果你的服务器上跑着HTTPS的WEB站点,那么443端口肯定是被占用了的,所以如果有需求的话,可以更改下面的值:
# TCP and UDP port number tcp-port = 443 udp-port = 443
如图所示:
3、Anyconnect有一个设置连接欢迎信息的功能,也就是你在连接的时候会弹出一个提示框,提示框的内容就可以自行设置,如有需要可以更改下面的值:
# A banner to be displayed on clients banner = "Welcome LALA.IM"
如图所示:
4、Anyconnect可以限制最大允许连接的设备数量,如有需要可以更改下面这两个值:
max-clients = 16 max-same-clients = 2
如图所示:
5、更改服务器证书以及私钥的路径为我们刚才移动的路径:
server-cert = /etc/pki/ocserv/public/server-cert.pem server-key = /etc/pki/ocserv/private/server-key.pem
如图所示:
6、更改CA证书的路径为我们刚才移动的路径:
ca-cert = /etc/pki/ocserv/cacerts/ca-cert.pem
如图所示:
7、取消如下几个参数的注释(去掉#号就是去掉注释):
ipv4-network ipv4-netmask
如图所示:
8、去掉如下参数的注释以及设置DNS服务器地址:
tunnel-all-dns = true dns = 8.8.8.8 dns = 8.8.4.4
如图所示:
确定你已经修改好上面的内容,然后保存即可。
现在来创建一个VPN用户:
ocpasswd -c /etc/ocserv/ocpasswd lala
盲输两遍密码即可。如果不想让这个用户继续使用了,可以执行下面的命令删除指定的用户:
ocpasswd -c /etc/ocserv/ocpasswd -d lala
现在我们开启机器的IPV4转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后启动CentOS7的Firewalld防火墙:
systemctl start firewalld.service
放行Anyconnect的端口(我这里之前设置的是默认的443端口,如果你修改了端口,那么这里也要对应):
firewall-cmd --permanent --zone=public --add-port=443/tcp firewall-cmd --permanent --zone=public --add-port=443/udp
设置转发:
firewall-cmd --permanent --add-masquerade firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -o eth0 -j MASQUERADE
注:eth0是你的公网网卡名字,每个机器的名字可能都不一样,自己用ifconfig命令查一下就行了。
重加载,让新的配置生效:
firewall-cmd --reload
现在就可以尝试运行一下Ocserv了:
ocserv -f -d 1
如果一切正常,回显的内容大致如下图所示:
确定正常后按键盘组合键Ctrl+C退出运行,现在我们就可以直接用systemctl来管理Ocserv的进程。
设置Ocserv开机启动:
systemctl enable ocserv
启动Ocserv:
systemctl start ocserv
Anyconnect支持多平台客户端,Win/iOS/Android都是支持的,软件下载地址:
https://software.cisco.com/download/home/286281283/type/282364313/release/4.6.01103
iOS的话直接在商店里面搜索Anyconnect安装就行了。下面我拿iOS设备示范一下。
首先打开APP点击“设置”,把“阻止不信任的服务器”这个选项关闭,如图所示:
接着点击“连接”-“添加VPN连接”,按如下图配置:
现在就可以连接了,会提示你不信任的服务器,点“继续”:
然后就是输入用户名密码了,这里就不多说了,用户名和密码就是之前你自己在终端内创建的那个,如果用户名和密码验证正确的话,那么最后就会弹出你设置的欢迎信息:
现在就开始爱国吧。。。
写在最后:
其他客户端的配置都大同小异。因为我们是自签的证书,所以不管在哪个客户端上只要把“阻止不信任的服务器”这种类似的功能关闭就行了。
能否使用泛域名证书呢
这个我还没试过,但是按理论上来说的话,只要是个证书应该都行吧,毕竟自签都支持= =
PS:这评论速度快的猝不及防。。。
这叫随时关注大佬动态
大佬来个一键脚本方便我们这些小白吧。
逗比聚集地有一键
写不出来好脚本。。。
出现错误:PAM-auth pam_auth_pass: User not known to the underlying authentic ation module
验证方式你没改,默认是pam要改成plain。
按照你上面更改验证方式。我是改过的,难道这也要改掉。auth = “pam” 这个也要改成plain嘛
要注释掉auth=pam,然后去掉plain的注释。
这种方式爬梯速度跟酸酸乳之类的比之如何?
如果服务器本身线路够好的话速度没区别,线路渣点的话,酸酸毕竟可以配合一些其他的加速软件,而这个就不是很好配合了。
可以放路由条目吗? 现在的情况是所有的访问都走国外了
有没有easy connect的搭建教程呢,找不到
网站域名当时脑子一抽抽,转到阿里云被DNS阻断了,时断时续,部分地区打不开看看一个月以后转出去会不会恢复! 新建一个www.jiikii.com 给个友情链接呗!
新域名还是算了,再说你这个域名只是暂时的吧,旧的肯定会恢复的。
照着一步一步做,anyconnect 连接成功过了,但是连接后,上不了网了。 断开anyconnect之后,上网正常。 SS和SSR也是正常工作的。。 博主知道是为什么吗。
防火墙设置了没?
所有搭建都正常,最后客户端连接后输完账号密码,显示完banner后,提示failed to download the AnyConnect profile.Please retry.
这就有点玄学了,我表示不清楚。。。
您好,我想问一下,如果搭建客户端啊,我自己搜了搜但是一直连不上,但是windows可以连接,就是我的centos不能连接,能不能指导一下,可以是有偿的。
感谢。已经按照步骤试验成功。
有个问题,成功连接以后,访问国内网站等速度回变慢,传输文件的时候只有极慢。
是因为都走国外了吗?
是的,这是全局代理。
yum -y install ocserv
提示No package ocserv available
这是啥情况?
你确定你的EPEL源安装成功了吗?
瓦工。
安装EPEL源时提示
Package epel-release-7-11.noarch already installed and latest version
Nothing to do
如果执行 yum -y install ocserv 就提示No package ocserv available
那这就有点玄学了,装EPEL源竟然会提示找不到包。。
note: setting ‘plain’ as primary authentication method
GnuTLS error (at tlslib.c:1132): Base64 unexpected header error.
求解?????
这文档质量相当高!!!!大写的赞
请博主写个ubuntu 20和Debian 11系统下Ocserv搭建Anyconnect服务器教程,谢谢
客气了不用谢,我最近有点忙,有空的话就写一篇。