在Debian/CentOS设OpenVPN On OpenVZ/XEN VPS

方法一样的 目录不同
Debian在

/usr/share/doc/openvpn/examples/sample-config-files/{server.conf.gz,client.conf}
/usr/share/doc/openvpn/examples/easy-rsa/

CentOS 5在

/usr/share/openvpn/easy-rsa/
/usr/share/doc/openvpn-2.1.1/sample-config-files/{server.conf,client.conf}

拷贝这两个文件和一个文件夹到cd /etc/openvpn/ 然后

[bash]cd /etc/openvpn/easy-rsa/2.0/ [/bash]

编辑那个var文件 修改过期时间 证书密钥长度等。还有后面的签名信息等。
如果想要自动化批量生产 证书 加个--batch参数就可以了

[bash] . ./vars
#./clean-all #这一步会清除所有证书
./clean-all --batch
./build-ca --batch
./build-key-server --batch server
./build-dh --batch
[/bash]

这样服务器端的证书就生产成功了 当然你也可以在这时候生产客户端证书

[bash]./build-key --batch client #这里的client 你可以换成自己的其他名字 每个人一个密钥 作为登录凭据[/bash]

为防止恶意攻击(如DOS、UDP port flooding),生成一个"HMAC firewall"

[bash]openvpn --genkey --secret ta.key[/bash]

下面就是修改服务端配置文件了

[bash]vim /etc/openvpn/server.conf [/bash]

主要修改如下几项

local 服务器地址 指定监听哪个地址的端口 不指定的话 监听所有
port 1194 端口 当然你也可以在这里指定某个邪恶的端口 大家都懂的
proto tcp/udp 协议 当使用UDP模式的时候 记得客户端加上explicit-exit-notify 见这里
dev tap/tun 使用默认 tun (tunnel)模式还是tap模式
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 证书和 dh 文件的位置
server 10.8.0.0 255.255.255.0 网段
push "redirect-gateway def1 bypass-dhcp" 推送网关设置 就是通过VPN走默认路由 最好不在服务端启用这个
直接在客户端配置文件里面设置此选项
这样会比客户端使用route-nopull更加灵活
push "dhcp-option DNS 8.8.8.8" 推送DNS设定
;duplicate-cn 允许一个证书多用户登录?
tls-auth /etc/openvpn/easy-rsa/2.0/keys/ta.key 0 HMAC firewall 防止TCP或者UDP洪水攻击 服务器上加密方向是0 客户端加密方向是1
;max-clients 100 最大客户数
user nobody 降低
group nogroup/nobody 权限
log /var/log/log openvpn.log 日志位置
;log-append openvpn.log 追加模式
reneg-sec 0 TSL重协商时间 详细信息见这里

编辑完毕后根据自己的实际情况 修改client.conf 修改项目主要有协议(TCP/UDP?)remote SERVER.IP.ADDRESS 1194
还有

ca ca.crt
cert client.crt
key client.key

这些根据实际情况修改
最后把client.conf重命名为client.ovpn 和ca.crt client.crt client.key ta.key这5个文件一起打包 如果下载回来

根据上面推荐的设置对client.ovpn进行一些更改 比如

redirect-gateway def1 bypass-dhcp
explicit-exit-notify 2 详细解释见这里

 

使用OpenVPNGUI 就可以链接了
上网的话 就是要开IP Forward和NAT
OpenVZ麻烦一点 CentOS更加麻烦

[bash]
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -s 10.8.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT
iptables -A FORWARD -d 10.8.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -s 外网地址 -j ACCEPT
ipatbles -t nat -A POSTROUTING -s 10.0.0.0/255.0.0.0 -j SNAT --to-source 外网地址 [/bash]

XEN虚拟化的话 直接写NAT就可以了 看这里 http://ihipop.info/2010/06/1265.html#net-cfg

[bash]iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE[/bash]

如果启动OpenVPN失败 提示Cannot open TUN/TAP dev

[bash]modprobe tun[/bash]

如果没有 就手动创建一个
检查下是否有tun 模块?

[bash]mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun[/bash]

Author Info :
  • From:在Debian/CentOS设OpenVPN On OpenVZ/XEN VPS
  • URL:https://blog.ihipop.com/2011/04/2271.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注