Openvz VPS上安装Openvpn [实用]

首先检查内核支待不支持

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

如果反回不是File descriptor in bad state则不行,须要让客服帮忙开通 tun/tap.

然后安装一些必要的库用软件.及配置

apt-get install openvpn libssl-dev openssl -y
cd /etc/openvpn/
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0/
chmod +rwx *

然后编辑当前文件夹(/etc/openvpn/easy-rsa/2.0/)下的 vars 文件.找到类似以下内容的地方进行修改(一般是在最后),可以把US改成CN之类的

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="[email protected]"
/* 我修改后的内容 */
export KEY_COUNTRY="CN"
export KEY_PROVINCE="xx"
export KEY_CITY="xx"
export KEY_ORG="xx"
export KEY_EMAIL="[email protected]"

编辑完毕后,保存一下,执行下面的命令

source vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server
cd keys
openvpn --genkey --secret ta.key
cp ./{ca.crt,ca.key,ta.key,server.crt,server.key,dh1024.pem} /etc/openvpn/

新建/etc/openvpn/openvpn.conf 文件,内容如下:

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
ifconfig-pool-persist ipp.txt
duplicate-cn
keepalive 10 120
client-to-client
comp-lzo
comp-noadapt
mssfix 1200
fragment 1200
user daemon
group daemon
persist-key
persist-tun
status openvpn-status.log
verb 3

配置文件保存后,现在开始配置网络相关设置,先开启转发功能

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

使设定生效

sysctl -p

接下来是最郁闷的地方,配置iptables.因为openvz的内核iptables很多都不支持最主要的是很多都不支持MASQUERADE.执行以下命令

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -s 10.8.0.0/24 -p all -j ACCEPT
iptables -A FORWARD -d 10.8.0.0/24 -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

如果在执行第一条命令时,会报iptables: No chain/target/match by that name.错误,那就是不支持MASQUERADE了.别着急,我们还可以这样玩:

iptables -t nat -A POSTROUTING -o venet0 -j SNAT --to "VPS主IP"
iptables -A FORWARD -i venet0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT

以上代码中注意venet0那里,应该是对应你的虚拟网卡名.配置好上面的iptables后,得保存下来,不然重启后又得重新运行一次.

iptables-save > /etc/iptables.up.rules

建一个开机自运行角本.运行如下代码:

/sbin/iptables-restore < /etc/iptables.up.rules

重启OPENVPN

/etc/init.d/openvpn restart

配置客户端的KEY:

cd /etc/openvpn/easy-rsa/2.0/
source vars
./pkitool client1
cd keys/

新建文件/etc/openvpn/easy-rsa/2.0/keys/isfate.ovpn,内容如下:

client
remote 你的VPS IP 1194
dev tun
comp-lzo
comp-noadapt
ca ca.crt
cert client1.crt
key client1.key
fragment 1200
verb 3

打包密匙,供客户端使用

tar -zcvf keys.tar.gz ca.crt ca.key client1.crt client1.csr client1.key ta.key $HOSTNAME.ovpn
mv keys.tar.gz ~/ /* 移动到Root的主目录下面 */
大功告成了!你可以用Winscp等软件,把这个下载回来。解压放到你的openvpn目录下面使用
这些密匙和配置文件是放在安装文件夹类似于这样的路径下C:Program FilesOpenVPNconfig 下面,需要使用vpn的时候,点开openvpn,直接connect即可。
客户端我们用的是openvpn gui 工具,在windows下面可以很方便的连接openvpn服务器上。
在服务器端己经启动了,我们就可以用GUI工具进行连接了,右键点击托盘栏的小图标,启动connect即可连接vpn

转载自 http://isfate.com/599.html# 我可是注明出处的哈 :)

发表评论

This site uses Akismet to reduce spam. Learn how your comment data is processed.