以下操作是在纯净的Debian 6上完成,其他平台请参考对应命令参数

本文操作基于Hostigation.com的KVM VPS,纯净Debian 6 32bit(64bit类似,适用于内存较大机器)安装所选软件包只有SSH Server。推荐使用hostigation的256M及以上的VPS,联通网络速度理想。电信未知。

第一步,安装OpenVPN Server软件

aptitude install openvpn

OpenVPN安装完成后,找到easy-rsa文件夹,在debian上,文件夹路径为: /usr/share/doc/openvpn/examples/easy-rsa,如果不能找到文件夹,尝试下面的命令:

updatedb; locate easy-rsa

下一步,复制该文件夹到/etc/openvpn:

cp -R /usr/share/doc/openvpn/examples/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa/2.0

现在,编辑变量文件

nano vars

根据自己情况,修改文件内容

[wp_ad_camp_1]

export KEY_COUNTRY=”US”
export KEY_PROVINCE=”CA”
export KEY_CITY=”SanDiego”
export KEY_ORG=”OpenVPN”
export KEY_EMAIL=”myemail@mydomain.com”

下一步,创建授权证书,在/etc/openvpn/easy-rsa/2.0路径下,执行命令

source ./vars
./clean-all
./build-ca

生成服务器端证书和密钥

./build-key-server server

生成客户端证书和密钥,不同的客户可以适用不同的client名字

./build-key clients

生成Diffie Hellman参数

./build-dh

复制服务文件到openvpn目录

cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh1024.pem server.crt server.key /etc/openvpn

配置OpenVPN服务参数文件

cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
cd /etc/openvpn
openvpn –genkey –secert ta.key

修改/etc/openvpn/server.conf文件,配置必要的TCP/IP和 Push DNS信息,这里使用IP段10.31.0.0,push dhcp DNS 8.8.8.8, upd协议,端口989 如果是tcp端口,建议用3398。同时找到#tls-auth ta.key 0 这一行,去掉前面的注释。

nano /etc/openvpn/server.conf

重启OpenVPN服务

/etc/init.d/openvpn restart

设置IP转发(注意,这里需要替换自己的IP和网卡标示eth0)10.31.1 和 10.31.2网段用于本站介绍的PPTP和 L2TP VPN架设,可自己决定是否保留。

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 10.31.0.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.1.0/24  -j ACCEPT
iptables -A FORWARD -s 10.31.2.0/24  -j ACCEPT
iptables -A INPUT -i eth0 -p esp -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 500 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT
iptables -A INPUT -i eth0 -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 1723 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 10.31.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.31.2.0/24 -o eth0 -j MASQUERADE
iptables-save > /etc/iptables.rules

在/etc/network/if-up.d/目录下创建iptables文件,如下:

cat > /etc/network/if-up.d/iptables<<EOF
#!/bin/sh
iptables-restore < /etc/iptables.rules
EOF

修改iptables文件权限,这样每次启动后都会设置好IP转发

chmod +x /etc/network/if-up.d/iptables

[wp_ad_camp_3]

修改/etc/sysctl.conf,追加如下内容为(原文件因为都被注释掉,所以认为是空文件):

cat > /etc/sysctl.conf <<EOF
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
EOF

重新载入/etc/sysctl.conf使其生效,执行如下命令:

sysctl -p

重启OpenVPN及网络:

/etc/init.d/openvpn restart