Виртуальная частная сеть
GRE, PPTP, L2TP+IPSec, SSL
GRE (применимо к среде Linux)
Включите модуль GRE (должны работать и клиент, и прокси-сервер), чтобы создать туннель.
[root@client ~]# lsmod | grep ip_gre
[root@client ~]# modprobe ip_gre
[root@client ~]# modinfo ip_gre
[root@client ~]# ip tunnel add tun0 mode gre \
> remote 201.1.2.5 local 201.1.2.10
//ip tunnel add创建隧道(隧道名称为tun0),ip tunnel help可以查看帮助
//mode设置隧道使用gre模式
//local后面跟本机的IP地址,remote后面是与其他主机建立隧道的对方IP地址
Включить туннель (аналогично настройке сетевой карты)
[root@client ~]# ip link show
[root@client ~]# ip link set tun0 up //设置UP
[root@client ~]# ip link show
Настройте IP-адрес туннеля для VPN
Здесь настроен реальный общедоступный IP-адрес.
[root@client ~]# ip addr add 10.10.10.10/24 peer 10.10.10.5/24 \
> dev tun0
//为隧道tun0设置本地IP地址(10.10.10.10.10/24)
//隧道对面的主机IP的隧道IP为10.10.10.5/24
[root@client ~]# ip a s //查看IP地址
Прокси-хост создает VPN-туннель
Повторно выполните описанные выше шаги еще раз, поменяйте местами удаленный и локальный адреса и поменяйте местами адреса добавления и одноранговых узлов.
Проверить подключение с помощью ping
L2TP+IPSec VPN
Я купил сервер с оплатой по мере использования в Гонконге и безуспешно протестировал его, но нет проблем с подключением к внутренней сети сервера.
Развернуть службу IPSec
[root@client ~]# yum -y install libreswan
[root@client ~]# cat /etc/ipsec.conf //仅查看一下该主配置文件
.. ..
include /etc/ipsec.d/*.conf //加载该目录下的所有配置文件
[root@client ~]# vim /etc/ipsec.d/myipsec.conf
//新建该文件,参考lnmp_soft/vpn/myipsec.conf
conn IDC-PSK-NAT
rightsubnet=vhost:%priv
also=IDC-PSK-noNAT
conn IDC-PSK-noNAT
authby=secret //加密认证
ike=3des-sha1;modp1024 //加密算法
phase2alg=aes256-sha1;modp2048 //加密算法
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=3h
type=transport
left=201.1.2.10 //重要,服务器本机的外网IP
leftprotoport=17/1701
right=%any //允许任何客户端连接
rightprotoport=17/%any
[root@client ~]# vim /etc/ipsec.secrets //修改该文件
include /etc/ipsec.d/*.secrets
201.1.2.10 %any: PSK "randpass" //randpass为预共享密钥
//201.1.2.10是VPN服务器的IP
//%any:任何客户端都可以连接服务器
//PSK(pre share key)中文预共享密钥
[root@client ~]# systemctl start ipsec
[root@client ~]# netstat -ntulp |grep 500
udp 0 0 127.0.0.1:4500 0.0.0.0:* 3148/pluto
udp 0 0 192.168.88.10:4500 0.0.0.0:* 3148/pluto
udp 0 0 201.1.2.10:4500 0.0.0.0:* 3148/pluto
udp 0 0 127.0.0.1:500 0.0.0.0:* 3148/pluto
udp 0 0 192.168.88.10:500 0.0.0.0:* 3148/pluto
udp 0 0 201.1.2.10:500 0.0.0.0:* 3148/pluto
udp6 0 0 ::1:500 :::* 3148/pluto
Развернуть службу XL2TP
[root@client ~]# yum install xl2tpd-1.3.8-2.el7.x86_64.rpm
[root@client ~]# vim /etc/xl2tpd/xl2tpd.conf //修改主配置文件
[global]
.. ..
[lns default]
.. ..
ip range = 192.168.3.128-192.168.3.254 //分配给客户端的IP池
local ip = 201.1.2.10 //VPN服务器的IP地址
[root@client ~]# vim /etc/ppp/options.xl2tpd //认证配置
require-mschap-v2 //添加一行,强制要求认证
#crtscts //注释或删除该行
#lock //注释或删除该行
root@client ~]# vim /etc/ppp/chap-secrets //修改密码文件
jacob * 123456 * //账户名称 服务器名称 密码 客户端IP
[root@client ~]# systemctl start xl2tpd
[root@client ~]# ss -ntulp |grep xl2tpd
udp 0 0 0.0.0.0:1701 0.0.0.0:* 3580/xl2tpd
翻墙设置(非必需操作)我设置了,但是没能成功,待我成功时再来修改
[root@client ~]# echo "1" > /proc/sys/net/ipv4/ip_forward #开启路由转发
[root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 \
> -j SNAT --to-source 201.1.2.10
PPTP VPN
Развернуть VPN-сервер
[root@proxy ~]# yum install pptpd-1.4.0-2.el7.x86_64.rpm
[root@proxy ~]# rpm -qc pptpd
/etc/ppp/options.pptpd
/etc/pptpd.conf
/etc/sysconfig/pptpd
[root@proxy ~]# vim /etc/pptpd.conf
.. ..
localip 201.1.2.5 //服务器本地IP
remoteip 192.168.3.1-50 //分配给客户端的IP池
[root@proxy ~]# vim /etc/ppp/options.pptpd
require-mppe-128 //使用MPPE加密数据
ms-dns 8.8.8.8 //DNS服务器
[root@proxy ~]# vim /etc/ppp/chap-secrets //修改账户配置文件
jacob * 123456 *
//用户名 服务器名称 密码 客户端IP
[root@proxy ~]# vim /etc/pptpd.conf
.. ..
localip 201.1.2.5 //服务器本地IP
remoteip 192.168.3.1-50 //分配给客户端的IP池
[root@proxy ~]# vim /etc/ppp/options.pptpd
require-mppe-128 //使用MPPE加密数据
ms-dns 8.8.8.8 //DNS服务器
[root@proxy ~]# vim /etc/ppp/chap-secrets //修改账户配置文件
jacob * 123456 *
//用户名 服务器名称 密码 客户端IP
翻墙设置(非必需操作)
[root@proxy ~]# echo "1" > /proc/sys/net/ipv4/ip_forward //开启路由转发
[root@proxy ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 \
> -j SNAT --to-source 201.1.2.5