使用ocserv搭建 VPN 畅游网络

安装相关依赖及工具

1
# apt-get install build-essential pkg-config libgnutls28-dev libreadline-dev libseccomp-dev libwrap0-dev libnl-nf-3-dev liblz4-dev gnutls-bin

下载安装

1
2
# wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.8.tar.xz
# tar xvf ocserv-0.10.8.tar.xz

安装

1
2
3
# cd ocserv-0.10.8
# ./configure
# make && make install

准备证书

1
2
3
# cd ~ 
# mkdir cer
# cd cer

创建证书模板

1
# touch ca.tmpl server.tmpl

1) ca.tmpl模板内容如下:

1
2
3
4
5
6
7
8
cn = "test.com" 
organization = "test.com"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key

2) serve.tmpl模板内容如下:

1
2
3
4
5
6
cn = "hostname or IP"
organization = "test.com"
expiration_days = 3650
signing_key
encryption_key
tls_www_server

生成CA和Server密钥

1
2
# certtool --generate-privkey --outfile ca-key.pem
# certtool --generate-privkey --outfile server-key.pem

生成CA证书和Server证书

1
2
# certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.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

修改证书位置

1
2
3
4
# cp ca-cert.pem /etc/ssl/certs/my-ca-cert.pem
# cp server-cert.pem /etc/ssl/certs/my-server-cert.pem
# cp ca-key.pem /etc/ssl/private/my-ca-key.pem
# cp server-key.pem /etc/ssl/private/my-server-key.pem

编辑配置文件

1
2
3
# mkdir /etc/ocserv
# cd ~/ocserv-0.10.8
# cp doc/sample.config /etc/ocserv/ocserv.conf

/etc/ocserv/ocserv.conf只需要修改以下条目:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
auth = "plain[/etc/ocserv/ocpasswd]"    // 登陆方式,使用密码登录

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

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

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

tcp-port = 1234 // 服务监听的TCP/UDP端口
udp-port = 1234

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

cert-user-oid = 2.5.4.3 // 确保服务器正确读取用户证书(如果用到用户证书)

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

#route = 192.168.1.0/255.255.255.0 // 注释掉所有的route,让服务器成为gateway

cisco-client-compat = true // 启用cisco客户端兼容性支持

开启路由转发功能

开启系统转发

/etc/sysctl.conf中添加如下代码:

1
net.ipv4.ip_forward=1

添加后使配置生效

1
# sysctl -p

配置NAT转发

1
2
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -j MASQUERADE

测试

添加测试账号

1
# ocpasswd -c /etc/ocserv/ocpasswd test

连接测试

1
# ocserv -f -d 1    // 启动调试模式

客户端进行连接,地址是 IP:[端口]
如果可以连接则搭建完成

help

1
2
3
4
5
# ocserv -c /etc/ocserv/ocserv.conf     // 启动服务

# ocpasswd -c /etc/ocserv/ocpasswd xxx // 添加VPN用户

# ocpasswd -c /etc/ocserv/ocpasswd -d xxx // 删除VPN用户