Debian中ocserv(OpenConnect server)搭建配置教程

作者:袖梨 2022-11-14

为什么选择ocserv呢,因为ocserv在配置稍微简单很多.后期有时间或好好整理一下资料说明其他的配置.在安装配置前呢,先普及一下小知识
ocserv简介
官方介绍:http://www.infradead.org/ocserv/index.html
OpenConnect VPN server 简称 ocserv,是一个 GNU/Linux 服务器,实现了 AnyConnect SSL VPN协议,兼容与 OpenConnect VPN 客户端。其目的是成为一个小巧、安全和可配置的VPN服务器,依赖于类似 TLS1.2 标准协议和TLS 数据报 。AnyConnect SSL VPN 协议是最接近的协议以符合此标准。
ocserv环境
ocserv使用GnuTLS作为SSL的library,所以我们需要 back­ports源来安装.具体后面详说.
加入backports源
Shell

echo "deb http://ftp.debian.org/debian wheezy-backports main contrib non-free" >> /etc/apt/sources.list
更新源
Vim


apt-get update && apt-get upgrade -y
安装依赖库
Shell

apt-get -t wheezy-backports install gnutls-bin libgnutls28-dev libseccomp-dev -y
apt-get install openssl autogen gperf pkg-config make gcc m4 build-essential libgmp3-dev libwrap0-dev libpam0g-dev libdbus-1-dev libnl-route-3-dev libopts25-dev libnl-nf-3-dev libreadline-dev libpcl1-dev libtalloc-dev -y
ocserv编译
下载安装然后编译ocserv,这里选择的官方最新的版本为:0.10.9,为10月30日更新的版本.
Shell


wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.9.tar.xz
tar Jxvf ocserv-0.10.9.tar.xz
cd ocserv-0.10.9
./configure --prefix=/usr --sysconfdir=/etc --enable-static
make && make install
知道官方的经常挂,
本博客提供的源镜像(12个小时更新一次)
Shell

wget --no-check-certificate https://ussoft.111com.net/server/ocserv/ocserv-0.10.9.tar.xz
tar Jxvf ocserv-0.10.9.tar.xz
cd ocserv-0.10.9
./configure --prefix=/usr --sysconfdir=/etc --enable-static
make && make install
创建证书/模版
首先需要自己创建相关的证书文件,个人感觉还是统一放置,不然找不到就不好了
3.1建立文件夹
Shell

mkdir cert
cd cert
3.2.1创建生成 CA 证书
创建ca.tmpl文件
Shell


vim ca.tmpl
添加以下内容:
Vim


cn = "Bxl"
organization = "Bxl Me"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
3.2.2生成密钥和证书
Shell


certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
3.3.1生成服务器证书
创建server.tmpl文件
Shell


vim server.tmpl
添加以下内容:这里需要注意的是:www.111com.net,一定要替换为IP或者是域名
Vim


cn = "www.111com.net"
organization = "Bxl Me"
serial = 2
expiration_days = 3650
encryption_key
signing_key
tls_www_server
3.3.2生成服务器密钥与证书
Shell

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
证书生成部分就完成了,主要是自签证书.所以会提示不信任等情况.后面补充使用正规SSL证书的设置.
下面我们需要保存一下相关的证书文件.设置一些文件夹以便后面使用..
Shell

mkdir /etc/ssl/selfsigned
mkdir /etc/ssl/selfsigned/certs
mkdir /etc/ssl/selfsigned/private
cp ca-cert.pem /etc/ssl/selfsigned/certs
cp ca-key.pem /etc/ssl/selfsigned/private
cp server-cert.pem /etc/ssl/selfsigned/certs
cp server-key.pem /etc/ssl/selfsigned/private
直到这里证书的问题是解决了,下面开始配置的相关工作

ocserv配置

建立目录,复制配置文件到/etc/ocserv中,这里我留了一个备份,大家可以选择直接复制
Shell

mkdir /etc/ocserv
cp ~/ocserv-0.10.9/doc/sample.config /etc/ocserv/
cp /etc/ocserv/sample.config /etc/ocserv/ocserv.conf
不留任何备份的情况可以选择直接.
Shell

mkdir /etc/ocserv
cp ~/ocserv-0.10.9/doc/sample.config /etc/ocserv/ocserv.conf
编辑配置文件
Shell

vim /etc/ocserv/ocserv.conf

Vim

# 登陆方式,目前先用密码登录
auth = "plain[/etc/ocserv/ocpasswd]"

# 允许同时连接的客户端数量
max-clients = 400

# 限制同一客户端的并行登陆数量
max-same-clients = 0

# 服务监听的IP(服务器IP,可不设置)
listen-host = 1.2.3.4

# 服务监听的TCP/UDP端口(选择你喜欢的数字)
tcp-port = 443
udp-port = 443

# 自动优化VPN的网络性能
try-mtu-discovery = true

# 确保服务器正确读取用户证书(后面会用到用户证书)
cert-user-oid = 2.5.4.3

# 服务器证书与密钥存放位置
server-cert = /etc/ssl/selfsigned/certs/server-cert.pem
server-key = /etc/ssl/selfsigned/private/server-key.pem

# 客户端连上后使用的dns
dns = 8.8.8.8
dns = 8.8.4.4

# 注释掉所有的route,让所有连接均走V服务器
#route = 192.168.1.0/255.255.255.0

# 启用cisco客户端兼容性支持
cisco-client-compat = true
具体配置文件说明,请查看此文章.https://www.111com.net/9203.html
如果,您并没有变动其他的项目,可以直接下面命令下载配置好的文件


cd /etc/ocserv
wget --no-check-certificate https://ussoft.111com.net/server/ocserv/bxl-ocserv/0.10.9/ocserv.conf

iptables设置
一般情况下是不需要的,因为iptables在debian6,7都是默认关闭的.
第一个为你的TCP端口,第二个为UDP端口


iptables -A INPUT -p tcp -m state –state NEW –dport 443 -j ACCEPT
iptables -A INPUT -p udp -m state –state NEW –dport 443 -j ACCEPT
开启IPv4转发
Shell


sysctl -w net.ipv4.ip_forward=1
sysctl –p
开启NAT
需要注意的是把 eth0 改成自己的网卡名,openvz 架构的一般为: venet0


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
自动调整MTU
Shell


iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
ocserv用户
用户呢,在配置文件中有详细的说明,支持密码与证书登录,也支持使用freeradius进行管理.以后再进行更详细的说明.
先说说用户名密码方式登录.
创建用户


ocpasswd username
username为你要建立的用户命,然后输入两次账户的密码.
如果使用自签SSL证书登录呢.查看下篇文章:正在更新.

ocserv调试
使用此命令来临时启用 debug 模式


ocserv -c /etc/ocserv/ocserv.conf -f -d 1
ocserv优化
主要对管理上的一些优化,后面补充相关的其他优化.
创建为服务


vim /etc/init.d/ocserv

添加以下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides: ocserv
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
# Copyright Rene Mayrhofer, Gibraltar, 1999
# This script is distibuted under the GPL

PATH=/bin:/usr/bin:/sbin:/usr/sbin
DAEMON=/usr/sbin/ocserv
PIDFILE=/var/run/ocserv.pid
DAEMON_ARGS="-c /etc/ocserv/ocserv.conf"

case "$1" in
start)
if [ ! -r $PIDFILE ]; then
echo -n "Starting OpenConnect VPN Server Daemon: "
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --
$DAEMON_ARGS > /dev/null
echo "ocserv."
else
echo -n "OpenConnect VPN Server is already running.nr"
exit 0
fi
;;
stop)
echo -n "Stopping OpenConnect VPN Server Daemon: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE --exec $DAEMON
echo "ocserv."
rm -f $PIDFILE
;;
force-reload|restart)
echo "Restarting OpenConnect VPN Server: "
$0 stop
sleep 1
$0 start
;;
status)
if [ ! -r $PIDFILE ]; then
# no pid file, process doesn't seem to be running correctly
exit 3
fi
PID=`cat $PIDFILE | sed 's/ //g'`
EXE=/proc/$PID/exe
if [ -x "$EXE" ] &&
[ "`ls -l "$EXE" | cut -d'>' -f2,2 | cut -d' ' -f2,2`" =
"$DAEMON" ]; then
# ok, process seems to be running
exit 0
elif [ -r $PIDFILE ]; then
# process not running, but pidfile exists
exit 1
else
# no lock file to check for, so simply return the stopped status
exit 3
fi
;;
*)
echo "Usage: /etc/init.d/ocserv {start|stop|restart|force-reload|status}"
exit 1
;;
esac

exit 0

注册为服务并且开机启动


chmod 755 /etc/init.d/ocserv
update-rc.d ocserv defaults

这样就可以使用以下的命令进行管理了.


/etc/init.d/ocserv stop
/etc/init.d/ocserv start
/etc/init.d/ocserv restart
安装与一般调试的步骤基本完成了.下面需要的就是用户上面的设置.

相关文章

精彩推荐