Home » Linux » CentOS 6.x 安装 OpenVPN
  • 01
  • 10月

CentOS 6.x 安装 OpenVPN

本文介绍如何在 CentOS 6 系统下安装 OpenVPN 服务器。

1   环境检测

要使用 OpenVPN 需要检测 tun/tap 是否可用:

cat /dev/net/tun

tun 可用你会看到下面的信息:

cat: /dev/net/tun: File descriptor in bad state

2   安装 OpenVPN

默认情况下 CentOS 的 yum 源是没有 OpenVPN 的,需要添加第三方仓库才能安装。安装 EPEL(Extra Packages for Enterprise Linux) 这个东西后, yum 源里面就有 OpenVPN 了。

2.1   安装 EPEL

32位系统:

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

64位系统:

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm

2.2   安装 RPMForge

当然,你也可以使用另一个第三方仓库来安装 OpenVPN。

32位系统:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.i686.rpm
rpm -Uvh rpmforge-release*

64位系统:

wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -Uvh rpmforge-release*

2.3   安装 OpenVPN

yum install openvpn -y

3   使用 easy-key 生成密钥和证书

CentOS 6 系统升级后,如果安装的是 OpenVPN 2.3 版本,则不包含 easy-key ,需要另外安装。

cd /tmp
wget https://github.com/downloads/OpenVPN/easy-rsa/easy-rsa-2.2.0_master.tar.gz
tar -xvf easy-rsa-2.2.0_master.tar.gz
cp /tmp/easy-rsa-2.2.0_master/easy-rsa/ /etc/openvpn/

这里需要做一个小小的改动,把:

export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

改为:

export KEY_CONFIG=/etc/openvpn/easy-rsa/2.0/openssl-1.0.0.cnf

下面我们开始生成证书:

cd /etc/openvpn/easy-rsa/2.0
chmod 755 *
source ./vars
./clean-all

生成 CA 证书(这步可以一路按回车):

./build-ca

Country Name: may be filled or press enter
State or Province Name: may be filled or press enter
City: may be filled or press enter
Org Name: may be filled or press enter
Org Unit Name: may be filled or press enter
Common Name: your server hostname
Email Address: may be filled or press enter

生成服务端密钥和证书( key server ):

./build-key-server server

前面的选项和 ./build-ca 相同,但请注意下面的信息(注意最后那两个输入 y 的选项):

Common Name: server
A challenge password: leave
Optional company name: fill or enter
sign the certificate: y
1 out of 1 certificate requests: y

生成 Diffie Hellman (时间稍微有点长):

./build-dh

4   配置 OpenVPN

编辑 /etc/openvpn/server.conf ,加入下面的内容:

port 1194 #- port
proto udp #- protocol
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
reneg-sec 0
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /usr/share/openvpn/plugin/lib/openvpn-auth-pam.so /etc/pam.d/login #- Comment this line if you are using FreeRADIUS
#plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf #- Uncomment this line if you are using FreeRADIUS
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

注解

dh1024.pem 如果找不到需要改为 dh2048.pem

5   配置路由并启动 OpenVPN

5.1   关闭 SELinux

临时关闭:

echo 0 > /selinux/enforce

长期关闭:

编辑 /etc/selinux/config 修改 SELINUX 值为 disabled :

SELINUX=disabled

5.2   启用 IP 路由转发功能

编辑 /etc/sysctl.conf 文件并把 net.ipv4.ip_forward 值设为 1.

net.ipv4.ip_forward = 1

然后执行下面的命令使刚才的设置生效:

sysctl -p

5.3   启动 OpenVPN

service openvpn start
chkconfig openvpn on

5.4   路由转发规则

开放 1194 端口并添加路由转发规则:

iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 123.123.123.123

注解

123.123.123.123 是 VPS 的公网 IP 。

若 FORWARD chain 被 DROP ,则需要增加下面两个规则:

iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT

6   客户端登录

OpenVPN 需要下载专门的客户端,这在官网就可以下载。

一般有两种登录方式: 用户名密码登录和证书登录。

6.1   用户名密码登录

创建用户:

useradd username -s /bin/false
passwd username

删除用户:

userdel username

创建 server.ovpn 配置文件,并添加如下内容:

client
dev tun
proto udp
remote 123.123.123.123 1194 # - Your server IP and OpenVPN Port
resolv-retry infinite
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-tun
ca ca.crt
auth-user-pass
comp-lzo
reneg-sec 0
verb 3

123.123.123.123 是 VPS 公网 IP 。

登录时需要把 ca.crtserver.ovpn 拷贝到 OpenVPN 客户端配置文件目录里。

参考文档:

Tags:   vpncentos .