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

为什么选择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.111cn.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.111cn.net,一定要替换为IP或者是域名
Vim

cn = "www.111cn.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.111cn.net/9203.html
如果,您并没有变动其他的项目,可以直接下面命令下载配置好的文件

cd /etc/ocserv
wget --no-check-certificate https://ussoft.111cn.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
<span class="title">sysctl</span> –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.\n\r"
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
安装与一般调试的步骤基本完成了.下面需要的就是用户上面的设置.

时间: 2024-09-13 14:46:25

Debian中ocserv(OpenConnect server)搭建配置教程的相关文章

LNAMP PHP多人开发环境搭建配置教程

 经常听到团队的小伙说:这个版本的扩展真难找,在本地运行正常的代码,上线之后却运行异常-诸如此类的问题大多是因为系统差异.扩展缺失.版本差异引起的.要解决此类问题搭建一个和线上一致的多人开发环境即可解决.     思路:搭建一台本地开发服务器,开发服务器和线上服务器环境保持一致,用samba服务映射到本地电脑磁盘,团队中所有人的开发代码都存储在开发机上,所有人的代码都是在开发机器上运行:团队成员无需再单独搭建开发环境,只需要挂载远程目录到本地磁盘,加上DNS解析,开发机上apache根据域名绑定

LNAMP/LAMP/(多人)开发环境搭建配置教程

 经常听到团队的小伙伴说:这个版本的扩展真难找,在本地运行正常的代码,上线之后却运行异常-诸如此类的问题大多是因为系统差异.扩展缺失.版本差异引起的.要解决此类问题搭建一个和线上一致的多人开发环境即可解决.     思路:搭建一台本地开发服务器,开发服务器和线上服务器环境保持一致,用samba服务映射到本地电脑磁盘,团队中所有人的开发代码都存储在开发机上,所有人的代码都是在开发机器上运行:团队成员无需再单独搭建开发环境,只需要挂载远程目录到本地磁盘,加上DNS解析,开发机上apache根据域名绑

Python的Flask框架中SERVER_NAME域名项的配置教程_ruby专题

Flask中的SERVER_NAME主要做两件事: 协助Flask在活动的请求(request)之外生成绝对URL(比如邮件中嵌入网站URL) 用于子域名支持 很多人误以为它可以做这两件事之外的其它事情. 一.第一件事:绝对URL我们知道,url_for默认情况下是生成相对URL,它有个参数_external,如果设置为真,则会生成一个绝对URL(就是HTTP开头带域名等信息的).若不指定SERVER_NAME,默认使用当前活动的请求(request)来生成URL. 下面举个例子演示一下: #

linux中Redis 安装 及 主从配置教程

Redis是一个开源.支持网络.基于内存.键值对存储数据库.与其他非关系型数据库主要不同在于,Redis中值的类型不仅限于字符串(Strings),还支持如下抽象数据类型:(列表)Lists.(集合)Sets.(有序集合)Sorted sets .(哈希)Hashes.Redis 通过 RDB.AOF 两种方式来实现数据的持久化. 安装Redis Redis 源码包保存路径 /usr/local/src Redis 软件安装路径 /usr/local/redis 编译 Redis 前先安装 tc

Team Foundation Server 安装配置教程

最近搞坏了一次TFS,在修复的过程中发现TFS的安装复杂程度(与其他源码管理工具对比))令人发指啊. 此处以在windows server 2008上的安装Team Foundation Server 2010为例: 一.搭建IIS 此处安装默认的勾选项即可: 二.新建Windows 账户 a) TFSADMIN – 用于安装SQL Server,TFS等,该账户要求管理员权限,也就是将其加入到Administrators组中. b) TFSSERVICE – 这个账户用于所有服务账户,不要加入

linux下NFS服务器的搭建配置教程

这里有两台主机,一台提供NFS服务,一台client ,具体信息如下: client : 192.168.1.100server: 192.168.1.200domain: 361way 一.NFS 服务端配置   1.安装软件包 # yum -y install nfs-utils 2.启动服务   # systemctl start rpcbind nfs-server nfs-server服务依赖rpcbind服务,如果不启动rpcbind服务时,直接启动nfs-server服务会出现报错

linux中inotify+rsync实时同步配置教程

背景 我们公司在用inotify+rsync做实时同步,来解决分布式集群文件一致性的问题.但当web文件越来越多(百万级数量html,jpg等小 文件),同步就越来越慢,根本做不到实时,按照网上的调优方法都尝试过,问题根本没有解决.经过我一翻细致研究,终于把慢的核心问题研究明白,先总结一句 inotifywait响应不会有延迟,rsync也很快.大家同样有慢的烦恼,那是因为网上的inotify+rsync的教程都是坑.下面我们来分 析. inotifywait 单独分析 /usr/local/b

在IIS中为SQL Server 2008配置报表服务

不知道是不是SQL Server 2008的Bug,我在安装了SQL2008后(选择了安装报表服务的),但是在IIS中 根本没有报表服务的虚拟目录.只是这么一个问题,其他BI设计器.报表服务等都还算正常. 要正常使用报表服务则需要手动添加报表服务的虚拟目录,具体操作如下: (1)运行inetmgr打开IIS管理器. (2)新建应用程序池Report,使用默认配置即可,该应用程序池用于报表服务专用. (3)在默认网站中新建虚拟目录Reports,本地路径是C:\Program Files\Micr

Ruby连接SQL Server数据库配置教程

因为工作需要,要分析存放在SQL Server上的数据,所以不得不研究一下如何使用Ruby访问SQL Server,发现其实还是很简单的: 安装FreeTDS 1.下载FreeTDS源代码 2.解压编译安装:  代码如下 复制代码 ./configure --prefix=/usr/local/freetds && make && sudo make install 安装Tiny_TDS Tiny_TDS,安装和使用非常简单,推荐使用:  代码如下 复制代码 sudo ge