先搭建好debian8的环境,然后确保能上网
ping www.baidu.com
内网最好改为静态ip,修改静态IP方法:
第一步:
vi /etc/network/interfaces
auto eth0
# iface eth0 inet dhcp # 这为原来存在的注释掉,保存为下面
iface eth0 inet static
address xx.xx.xx.xx
netmask xx.xx.xx.xx
gateway xx.xx.xx.xx
第二步(可不配):
vi /etc/resolv.conf #修改为自己的网关
/etc/init.d/networking restart
网关可以在宿主机上面看到
服务器端搭建
- 查看是否有tun和iptables_net模块支持
先查看tun
cat /dev/net/tun
返回的是File descriptor in bad state说明可用,No such device则需要开通tun/tap服务,可以更新系统(apt-get update && apt-get dist-upgrade)之后再查看是否开启服务
再查看iptables_net
apt-get install iptables
- 检查系统时间是否与客户机一致,不一致则调整为一致
date -R #查看时间
date -s 01/01/2000
date -s 14:00
hwclock -w #时间写入本地
只改时间能安装成功这一步可不做:时区也可能导致安装失败,修改时区
timedatectl list-timezones |grep Shanghai #实验室Debian8默认美国芝加哥时间,时区可以修改为上海,这条指令是显示上海在哪个时区,结果会是Asia/Shanghai
timedatectlset-timezone Asia/Shanghai #修改时区
- 正式安装OpenVPN
apt-get install openvpn lzop
apt-get install zip
apt-get install expect
如果安装没有成功则先更新一下系统
apt-get update && apt-get dist-upgrade
使用easy-rsa生成证书
默认openvpn的easy-rsa文档会放在
/usr/share/easy-rsa/
下,不在则检查是否安装成功,或者用locate、find命令查找一下,然后将文档复制到/etc/openvpn/
下cp -r /usr/share/easy-rsa/ /etc/openvpn/
生成ca证书:
cd /etc/openvpn/easy-rsa/
source vars #可自行编译vars文件,也可保持默认
./clean-all
./build-ca
提示回车默认即可,y/n选择y
生成服务器端证书和密钥:
./build-key-server server #server是服务端的名字可自行设置
提示回车默认即可,y/n选择y
生成客户端证书和密钥:
这里设置的客户端名字不能和上一步服务端名字一样
./build-key client
提示回车默认即可,y/n选择y,想要生成多个客户端的证书和米哟啊将client改成另外的名字重复操作即可,所有证书都在
/etc/openvpn/easy-rsa/keys/
下面保存生成Diffie Hellman参数:
以上完成之后执行:
./build-dh
keys目录下文件如下:
配置OpenVPN服务端文件
编辑/etc/openvpn/server.conf文件,没有的新建一个,加入以下内容:(最好将注释去掉)
local xx.xx.xx.xx #xx.xx.xx.xx为服务器的IP
port 8080 #端口,需要与客户端配置保持一致,并保证与其他软件无共用
proto udp #使用协议,需要与客户端配置保持一致
dev tun #也可以选择tap模式
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh2048.pem #以上为认证文件的绝对路径,根据实际情况修改
ifconfig-pool-persist ipp.txt
server 10.168.1.0 255.255.255.0 #给客户的分配的局域网IP段,注意不要与客户端网段冲突!
push “route xx.xx.xx.xx 255.255.0.0”#xx.xx.xx.xx表示内网网段,是网段,只在连接内网是流量走vpn,客户使用外网是任然使用其自身网络流量,规则为“route内网网段 内网掩码”;若客户端希望所有的流量都通过 VPN 传输,则可以使用该语句:push “redirect-gateway”,并在客户端配置文件加上redirect-gateway;
push “dhcp-option DNS 8.8.8.8” #客户端的DNS,可不设置
push “dhcp-option DNS 8.8.4.4” #客户端的DNS,可不设置
client-to-client
;duplicate-cn #若要在多台电脑使用一个证书,请去掉前面的;
keepalive 20 60
comp-lzo
max-clients 50
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
mute 20设置IP转发:
iptables -t nat -A POSTROUTING -s 10.168.1.0/24 -j SNAT –to-source xx.xx.xx.xx #xx.xx.xx.xx为服务器IP
iptables -t nat -L
第一条命令是设置,如果知道你的路由的外网IP,那么就把前面换为外网IP添加进去
看到如下字样则转发成功:
SANT all – 10.168.1.0/24 anywhere to:xx.xx.xx.xx#xx.xx.xx.xx为服务器IP
修改/etc/sysctl.conf的内容为:
这个文件进去之后全是注释,在最下面加上这几句
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
然后执行
sysctl -p
使其生效,到这里服务器端的配置都完成了
/etc/init.d/openvpn restart
上面的命令让OpenVPN重启
如果无效的话,那么重启debian
想使其开机自动运行的话还需要:
创建/root/vpn.sh 文件,加入下面的内容:(复制到VPS上时,最好把注释去掉)
#!/bin/bash
/etc/init.d/openvpn start #Debian下OpenVPN不用设置就可以开机自动运行,如可以自动运行就去掉这句
/sbin/iptables -t nat -A POSTROUTING -s 10.168.1.0/24 -j SNAT –to-source xx.xx.xx.xx #xx.xx.xx.xx为服务器IP,实际根据自己的服务器来做调整,这只做示例
将这一脚本写入cron执行计划,执行
crontab -e
@reboot /bin/bash /root/vpn.sh >/dev/null 2>&1
这是服务端,还有客户端,当然如果更改了上面的配置文件一定要重新导出证书放在openvpn安装目录下的config文件夹下
端口映射
上面中有提服务端端口设置,设置外部端口,让其映射到内部端口(服务器端口),在xx.xx.1.1里面设置
客户端
主要配置windows客户端
- 下载客户端,下载地址:https://openvpn.net/index.php/open-source/downloads.html翻墙的时候要开全局,不然访问页面都会很卡
- 下载证书,使用SourceFXPortable连接到debian8下载,SourceFXPortable下载地址:https://pan.baidu.com/s/1fA53wVXlL-SAFRvLap-Ugw 密码:ruep
证书在/etc/openvpn/easy-rsa/keys里,两个证书一个key ca.crt、client.crt、client.key放在openvpn安装目录下的config文件夹里面
- 创建客户端配置文件
在上面提到的config文件夹下面创建一个sunny.ovpn文件,添加以下内容:
client #这个client不是自定义名称不能更改
dev tun #要与前面server.conf中的配置一致。
proto udp #要与前面server.conf中的配置一致。
remote xx.xx.xx.xx 88 #xx.xx.xx.xx为路由外网的IP,88为外部端口,端口与之前端口映射的外部端口一致,若同处内网,则ip和端口与前面的server.conf中配置一致。
resolv-retry 20
nobind
persist-key
persist-tun
ca ca.crt #具体名称以刚下载的为准
cert client.crt #具体名称以刚下载的为准
key client.key #具体名称以刚下载的为准
ns-cert-type server
/# redirect-gateway#如服务端配置为push”redirect-gateway”,则保留这行,否则请注释掉
keepalive 10 30
comp-lzo
verb 3
mute 20
route-method exe
route-delay2
- 运行OpenVPN客户端,绿色则表示连接成功,黄色就是断开连接
- 各种连不上以及问题参照本地vpn启动及恢复检查文档-最新.word
##文章参考:
http://shit.name/openvpn-on-debian/
以及实验室OpenVPN安装文档