方法一样的 目录不同
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]