OpenVPN 简明手册


OpenVPN是目前使用比较多的VPN软件,安装使用的方法还是相对比较简单的。下面介绍在Gentoo上安装OpenVPN服务端和客户端的方法,同时介绍在Windows上安装客户端的方法。其它Linux系统可以参照安装。

安装使用OpenVPN

OpenVPN安装

OpenVPN同时支持Linux和Windowns系统(Debian, Unbutn, RedHat, CentOS, Gentoo, Funtoo, ArchLinux, Windows)。

# 安装OpenVPN软件
emerge openvpn

Windows下,请访问OpenVPN官方网站下载安装包。

生成密钥

为了对OpenVPN服务端和客户端之间的连接进行加密,我们需要生成证书。

cd /usr/share/openvpn/easy-rsa/
# 编辑vars文件,修改其中的变量
vi vars
source ./vars
# 生成CA证书
./clean-all
./build-ca
# 生成服务端和客户端证书
./build-key-server server
./build-key client
# 如果要使用多个客户端,请生成多个证书
./build-key client1
# 最后对证书进行加密
./build-dh

配置和启动服务端

OpenVPN的服务端应该安装Linux系统上,客户端可以是Linux,也可以是Windows的。
服务端需要的密钥

cd /usr/share/openvpn/easy-rsa/
cp ca.crt /etc/openvpn/keys/
cp server.crt /etc/openvpn/keys/
cp server.key /etc/openvpn/keys/

配置文件

cat >/etc/openvpn/openvpn.conf <<DELIM
port 11194
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
server 192.168.111.0 255.255.255.0
push "redirect-gateway"
push "dhcp-option DNS 8.8.8.8"
ifconfig-pool-persist /var/log/openvpn/ipp.txt
keepalive 10 120
user nobody
group nobody
persist-key
persist-tun
comp-lzo
verb 3
log /var/log/openvpn/server.log
status /var/log/openvpn/server-status.log
DELIM

创建OpenVPN日志目录

mkdir /var/log/openvpn

启动OpenVPN服务端

openvpn --config /etc/openvpn/openvpn.conf --daemon

/etc/init.d/openvpn start

OpenVPN的服务端还需要配置内核参数和iptables防火墙,以便进行网络穿透,否则只能服务端和客户端之间对连。客户端无法访问服务端上的其它网络。

# 启用IP转发,并保证重启后此设置仍然有效
# 编辑 /etc/sysctl.conf
# 添加或修改为 net.ipv4.ip_forward=1
vi /etc/sysctl.conf
# 使其在当前环境下生效
sysctl -p
# 或者直接
sysctl -w net.ipv4.ip_forward=1

添加防火墙规则

# 注意替换OpenVPN的子网设置。如有多块网卡,请注意替换出口网卡。
iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -o eth0 -j MASQUERADE
/etc/init.d/iptables save

现在,OpenVPN的服务器已经安装完成了。你还可以将OpenVPN服务端加入自启动。

rc-update add openvpn default

你可能遇到的问题有,重启后IP转发失效和防火墙规则丢失。请特别注意上述代码中的注释说明。

配置和启动OpenVPN客户端

OpenVPN的客户端和服务端使用的是同一个程序,不需要再次安装。
客户端需要的密钥

cd /usr/share/openvpn/easy-rsa
cp ca.crt /etc/openvpn/keys/
cp client.crt /etc/openvpn/keys/
cp client.key /etc/openvpn/keys/

客户端只是配置文件不同

cat >/etc/openvpn/openvpn.conf <<DELIM
client
dev tun
proto tcp
remote server_ip_address 11194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client.crt
key /etc/openvpn/keys/client.key
comp-lzo
verb 3
log /var/log/openvpn/client.log
status /var/log/openvpn/client-status.log
DELIM

启动客户端的方法和服务端的完全一致。

openvpn --config /etc/openvpn/openvpn.conf --daemon

/etc/init.d/openvpn start

还可以将客户端加入自启动

rc-update add openvpn default

OpenVPN的Windows客户端

安装从OpenVPN官方网站下载到的安装包,默认安装。
从Linux系统上复制以下密钥

C:\Program Files\OpenVPN\conf\ca.crt
C:\Program Files\OpenVPN\conf\client.crt
C:\Program Files\OpenVPN\conf\client.key

修改配置文件

cat >C:\Program Files\OpenVPN\conf\client.ovpn <<DELIM
client
dev tun
proto tcp
remote server_ip_address 11194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
comp-lzo
verb 3
log client.log
status client-status.log
DELIM

启动OpenVPN客户端,双击OpenVPN GUI程序即可。你还可以安装OpenVPN服务

C:\Program Files\OpenVPN\bin\openvpnserv.exe --install

立即启动OpenVPN

C:\Program Files\OpenVPN\bin\openvpnserv.exe --start

客户端常见问题

客户端可能遇到的问题有两个,一个是DHCP服务没有开启,还有一个是没有设置默认网关。

Gentoo

# 安装 dhcp 软件
emerge dhcpcd
# DHCP服务加入自启动
rc-update add dhcpcd default
# 启动DHCP服务
/etc/init.d/dhcpcd start

Gentoo下,配置网络的时候可能会直接添加默认路由而不添加默认网关,请修改相应的配置

# 修改/etc/conf.d/net.eth0文件
# 将default via gateway改成default gw gateway
# 添加或修改为routes_eth0 = ( "default gw 192.168.1.1" )
### Windows
# 启动DHCP服务
# 命令提示符下
net start dhcp
# 或者 服务 启动DHCP服务

Windows下一般没有网关问题,如果你的电脑是多网卡,走静态路由,不走默认网关,请修改其中一块网块走默认网关,其它走静态路由。