以前没配过OpenVPN,花了我老多精力,总结靠谱精简流程如下。

装软件 aptitude install openvpn lzop,装完后,证书制作工具在 /usr/share/doc/openvpn/examples/easy-rsa/2.0 下面,cd进去,执行如下。

. ./vars #设置一些变量 这里是.空格./vars,不然设置不了变量
./clean-all #清理一下之前生成的、扔在同级keys目录下的证书
./build-ca #建立ca证书
./build-key-server server #生成服务器端的证书和密钥,名字自选
./build-key client1 #生成客户端的证书和密钥,名字自选,可以做若干个
./build-dh #生成Diffie Hellman参数,非对称加密传递密钥用

完了之后所有有用的东西都在keys文件夹下面了,也包括很多没用的,了解一点原理的就知道哪些有用哪些没用了。下一步是建立配置文件。

我想要的效果是这样的,分发若干个客户端的证书和配置文件,每个客户端连过来之后分配固定的IP地址,所有客户的流量全部走VPN所在的服务器。

服务器端的配置文件server.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 #服务器的IP
ifconfig-pool-persist ipp.txt
client-config-dir ccd #同级ccd目录下创建跟客户端用户同名文件,给客户端指定ip,内容写 ifconfig-push 10.8.1.1(号称这里要是4*n+1,不知道为啥) 10.8.1.2
route 10.8.1.0 255.255.255.0 #添加如上的这套子网
push “redirect-gateway def1″  #指定该服务器IP为客户端默认网关
push “dhcp-option DNS 8.8.8.8″ #让客户端使用指定的DNS,linux无效,需要手动改/etc/resolv.conf
push “dhcp-option DNS 8.8.4.4″
client-to-client #客户端之间互相可见,我觉得似乎应该不可见,暂时自己用,先不管
keepalive 10 120 #以下都不懂,原配
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

配置文件完成,设置v4的转发,/etc/sysctl.conf使用net.ipv4.ip_forward = 1参数,完了之后sysctrl -p保存修改。

然后是防火墙上加条规则,iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT –to-source *.*.*.*  这里的*.*.*.*为你VPS的IP,另外看到另外一个版本是 iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE,对iptables相当不熟悉,两种都试过,大意明白,效果似乎差不多,都行,等什么时候不行了再研究一下。

服务器端配置完了,把sever.conf ca.crt等等扔到/etc/openvpn下面,/etc/init.d/openvpn start启动,用netstat -pln看一下1194端口是否在监听就完了。

客户端的配置文件client.conf这么写,没什么特别的,****为VPS的IP,域名亦可,这只是linux下面的配置文件,最近不去windows下干活儿,先不管。#更新,windows下的写法跟这个一样,配置文件后缀名改成.ovpn,证书和密钥文件的路径按需修改,可以是相对路径,nobody和nogroup两行可以删掉。

client
dev tun
proto udp
remote ************** 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
mute-replay-warnings
ca /etc/openvpn/ramhost/ca.crt
cert /etc/openvpn/ramhost/spehio.crt
key /etc/openvpn/ramhost/spehio.key
comp-lzo
verb 3
redirect-gateway def1

这堆文件拾掇拾掇收拾好,openvpn –config client.conf &,基本上就可以了,之前说的修改/etc/resolv.conf的事情,因为我现在直接在宿舍路由上已经设了8.8.8.8的DNS,也就不用自己改了,不用国内被污染了的DNS就行。补充一条,测试通过之后可以通过openvpn –daemon –config这样来启动,不会独占在shell里面,或者写到/etc/rc.local里面。

发表评论

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