记录一下,网上的介绍文章各有一些不正确的地方
20150816再次修正
系统版本 centos6
vps记得先开下tun/tap
基本的包
yum install autoconf automake gcc libtasn1-devel zlib zlib-devel trousers trousers-devel gmp-devel gmp xz texinfo libnl-devel libnl tcp_wrappers-libs tcp_wrappers-devel tcp_wrappers dbus dbus-devel ncurses-devel pam-devel readline-devel bison bison-devel flex gcc automake autoconf wget expat-devel openssl-devel
编译安装
nettle
wget http://www.lysator.liu.se/~nisse/archive/nettle-2.7.tar.gz
tar xvf nettle-2.7.tar.gz
cd nettle-2.7
./configure –prefix=/opt/
make && make install
unbound
wget http://unbound.nlnetlabs.nl/downloads/unbound-1.4.22.tar.gz
tar zxf unbound–1.4.22.tar.gz && cd unbound–1.4.22
./configure —prefix=/opt && make && make install
libnl
wget http://www.carisma.slowglass.com/~tgr/libnl/files/libnl-3.2.24.tar.gz
tar xvf libnl-3.2.24.tar.gz
cd libnl-3.2.24
./configure –prefix=/opt/
make && make install
gnutls
wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/gnutls-3.2.12.tar.xz
tar xvf gnutls-3.2.12.tar.xz
cd gnutls-3.2.12
export LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
NETTLE_CFLAGS=”-I/opt/include/” NETTLE_LIBS=”-L/opt/lib64/ -lnettle” HOGWEED_CFLAGS=”-I/opt/include” HOGWEED_LIBS=”-L/opt/lib64/ -lhogweed” ./configure –prefix=/opt/
make && make install
cd ..
gnutls这里如果不用opt prefix的话 上面环境变量里面的/opt全部换成/usr/local,如果不是64位系统,那么上面环境变量里面的lib64的64去掉,如果你要手敲的话,注意上面的cflags里面是HIJK的I。下同
wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.7.tar.xz
tar xvf ocserv-0.10.7.tar.xz
cd ocserv-0.10.7
LIBGNUTLS_CFLAGS=”-I/opt/include/” LIBGNUTLS_LIBS=”-L/opt/lib/ -lgnutls” LIBNL3_CFLAGS=”-I/opt/include” LIBNL3_LIBS=”-L/opt/lib/ -lnl-3 -lnl-route-3″ ./configure –prefix=/opt/
make && make install
关于证书,使用自签的说明有很多,这里记录下使用正规证书的方法。
正规证书签下来crt和key两个文件,crt记得合并下中间人证书
cat ssl.crt > server-cert.pem;
cat sub.class1.server.ca.pem >> server-cert.pem;
cat ca.pem >> server-cert.pem
自己的证书在前,接下来是中间人证书、根证书,得到的是pem
私钥key文件也要转成pem
openssl rsa -in ssl.key -out server-key.pem
路由表配置参考
https://github.com/rankjie/anyconnect-gfw-list/blob/master/gfwiplist.txt
ipv4重定向系统配置、iptables nat配置 有这条配置好像不需要其他文章里面那两条针对网段的配置
iptables -t nat -A POSTROUTING -j MASQUERADE
sysctl里面打开ipv4包转发
/etc/sysctl.conf net.ipv4.ip_forward = 1
sysctl -p生效
创建账户
/opt/bin/ocpasswd -c /opt/etc/ocserv/ocserv.passwd horsley
然后注意一下 通过supervisord来管理的时候 需要在supervisord配置里面添加环境变量导出
[program:ocserv]
environment=LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
command=/opt/sbin/ocserv -c /opt/etc/ocserv/ocserv.conf -f
autorestart=true
或者你把这一句写到.bash_profile里面也可以
export LD_LIBRARY_PATH=/opt/lib/:/opt/lib64/
客户端方面,要取消组织连接不安全的服务器的设置,如果使用自签证书
##关于使用证书免密码登录
网上大多是在说怎么用gnutls里面的certtool通过模板生成证书,而且都不怎么关注具体鉴权问题
配置项是cert-user-oid 这个oid表明了ocserv应该从客户端证书的哪个地方取用户名,在多用户的时候或者需要做管理的时候还是需要分开用户名,而不是一份客户端证书大家共用
下面有一个脚本说明了openssl如何生成客户端证书
https://gist.github.com/LimeQM/db93c17cc54e9b13e33e#file-createclientcert-sh
主参考文章
https://botu.me/install-ocserv-on-centos6/ (链接失效 使用下面那个)
https://botu.me/post/3960.html
https://blog.qmz.me/zai-vpsshang-da-jian-anyconnect-vpnfu-wu-qi/
其他参考 (可以不看)
https://www.stunnel.info/%E5%9C%A8centos-6-5%E4%B8%8A%E9%85%8D%E7%BD%AEcisco-anyconnect-vpn/
http://itony.me/765.html
http://imkevin.me/post/80157872840/anyconnect-iphone