Welcome My Friend

Debian8搭建OpenVPN

先搭建好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 #时间写入本地

  • 正式安装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目录下文件如下:

      Crack013

  • 配置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客户端

证书在/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安装文档

-------------本文结束-------------

文章作者: Summary
文章链接: http://noblestaspiration.net/2018/06/01/Debian8搭建OpenVPN/
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!

想要分我一杯羹吗