sudo apt-get install xl2tpd openswan ppp
IPSec / Openswan
打开 /etc/ipsec.conf 文件,做如下配置:
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!10.152.2.0/24
# 这里包含的网络地址允许配置为远程客户端所在的子网。换句话说,
# 这些地址范围应该是你的NAT路由器后面的客户端的地址。
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
# Apple 的 iOS 不会发送 delete 提醒,
# 所以我们需要通过死亡对端(dead peer)检测来识别断掉的客户端
dpddelay=30
dpdtimeout=120
dpdaction=clear
# 设置 ikelifetime 和 keylife 和 Windows 的默认设置一致
ikelifetime=8h
keylife=1h
type=transport
# 替换 IP 地址为你的本地IP (一般是,私有地址、NAT内的地址)
left=x.x.x.x
# 用于升级过的 Windows 2000/XP 客户端
leftprotoport=17/1701
# 要支持老的客户端,需要设置 leftprotoport=17/%any
right=%any
rightprotoport=17/%any
# 强制所有连接都NAT,因为 iOS
forceencaps=yes
注意你的ipsec.conf文件,"config setup" 和 "L2TP-PSK-NAT"、 "L2TP-PSK-NAT"应该顶着行头写,而其它行应该以8个空格缩进。
打开 /etc/ipsec.secrets,配置:
x.x.x.x %any: PSK "somegoodpassword"
这里x.x.x.x 替换为你的服务器的IP地址,并设置一个复杂的密码。
启动 IPSEC 服务:
/etc/init.d/ipsec start
使用如下命令确认 ipsec 是否工作正常:
sudo ipsec verify
应该没有任何错误才行:
Checking your system to see ifIPsec got installed and started correctly:
Version check and ipsec on-path [OK]
LinuxOpenswan U2.6.28/K2.6.32-32-generic-pae (netkey)
CheckingforIPsec support in kernel [OK]
NETKEY detected, testing for disabled ICMP send_redirects [OK]
NETKEY detected, testing for disabled ICMP accept_redirects [OK]
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500[OK]
Pluto listening for NAT-T on udp 4500[OK]
Checkingfor'ip' command [OK]
Checkingfor'iptables' command [OK]
OpportunisticEncryptionSupport[DISABLED]
在 /etc/init.d 下创建一个名为 ipsec.vpn 的文件,内容如下:
case"$1"in
start)
echo "Starting my Ipsec VPN"
iptables -t nat -A POSTROUTING -o eth0 -s 10.152.2.0/24-j MASQUERADE
echo 1>/proc/sys/net/ipv4/ip_forward
for each in/proc/sys/net/ipv4/conf/*
do
echo 0 >$each/accept_redirects
echo 0 >$each/send_redirects
done
/etc/init.d/ipsec start
/etc/init.d/xl2tpd start
stop)
echo "Stopping my Ipsec VPN"
iptables --table nat --flush
echo 0 >/proc/sys/net/ipv4/ip_forward
/etc/init.d/ipsec stop
/etc/init.d/xl2tpd stop
restart)
echo "Restarting my Ipsec VPN"
iptables -t nat -A POSTROUTING -o eth0 -s 10.152.2.0/24 -j MASQUERADE
echo 1 >/proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 >$each/accept_redirects
echo 0 >$each/send_redirects
done
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart
*)
echo "Usage: /etc/init.d/ipsec.vpn {start|stop|restart}"
exit 1
esac
这会配置防火墙转发。记得修改上面文件的本地IP地址池10.152.2.0/24为你自己的。
然后给这个文件设置可执行权限:
sudo chmod 755 ipsec.vpn
禁止默认的 ipsec 服务脚本运行:
sudo update-rc.d -f ipsec remove
然后,启用我们刚才定制的这个:
sudo update-rc.d ipsec.vpn defaults
L2TP
修改 /etc/xl2tpd/xl2tpd.conf :
[global]
ipsec saref =no
[lns default]
ip range =10.152.2.2-10.152.2.254
local ip =10.152.2.1
require chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile =/etc/ppp/options.xl2tpd
length bit = yes
配置说明如下:
ip range = 可以连接VPN服务的客户端IP地址范围
local ip = VPN 服务器的IP,必须在客户端IP范围之外
refuse pap = 拒绝 pap 认证
ppp debug = 测试时打开
选择一个复杂的挑战-响应式验证字符串。虽然没有最短长度限制,不过它应该至少有16个字符,也应该足够复杂才能保证安全。
打开文件 /etc/xl2tpd/l2tp-secrets ,填入你的密码:
** exampleforchallengestring
打开文件 /etc/ppp/options.xl2tpd,做如下配置:
refuse-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
#debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
ms-dns 选项设置要给客户端分配的 DNS 服务器,当客户端连接时,就会被分配这些 DNS。如果要加入多个 DNS,就每行一个,分别写几行。
如果你要给客户端推送wins设置,可以分别设置如下选项。
mtu 和 mru 按照openswan.org的说法,减小 mru/mtu 的大小非常重要。因为 l2tp/ipsec 会封装几次,可能导致性能下降,减小这个配置的大小可以一次性传输全部的包。
proxyarp 可以将连接的客户端的IP地址和以太网地址加入的系统的ARP表中。这会影响到本地局域网内其它客户端。
name l2tpd 用在 PPP验证文件里面。
添加用户
打开文件 /etc/ppp/chap-secrets ,做如下配置:
user1 l2tpd chooseagoodpassword *
user2 * chooseagoodpassword *
每行包括如下字段:
客户端 = 用户名称
服务器 = 在上面的 /etc/ppp/options.xl2tpd 定义的名字
密码 = 用户密码,你应该设置一个足够复杂的密码
IP 地址 = * 表示用户可以从任何地址连接,否则设置用户只能从特定的地址连接
注意:你可以添加多个用户。
IP转发
打开文件 /etc/sysctl.conf,修改配置:
net.ipv4.ip_forward=1
载入新的配置:
sysctl -p
启动VPN
sudo /etc/init.d/ipsec.vpn restart
sudo /etc/init.d/xl2tpd restart
排除故障
如果遇到了问题,以下命令可以帮助你找到问题:
sudo tcpdump -i ppp0
sudo tail -f /var/log/auth.log
sudo tail -f /var/log/syslog
你可以可以在服务器上使用如下命令来监控:
sudo tcpdump -i eth0 host aaa.bbb.ccc.ddd andnot port ssh
这里aaa.bbb.ccc.ddd 是你的客户端的公网地址。
L2TP+IPSec虚拟专用网
特点:跨平台,数据加密传输,安全
1,部署IPSec服务
1)安装软件包
[root@client ~]# yum -y install libreswan
2)新建IPSec密钥验证配置文件
[root@client ~]# cat /etc/ipsec.conf //仅查看一下该主配置文件
.. ..
include /etc/ipsec.d/ .conf //加载该目录下的所有配置文件
[root@client ~]# vim /etc/ipsec.d/myipsec.conf
//新建该文件,参考lnmp_soft/***/myipsec.conf
conn IDC-PSK-NAT
rightsubnet=vhost:%priv //允许建立的×××虚拟网络
also=IDC-PSK-noNAT
conn IDC-PSK-noNAT
authby=secret //加密认证
ike=3des-sha1modp1024 //算法
phase2alg=aes256-sha1modp2048 //算法
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
3)创建IPSec预定义共享密钥
[root@client ~]# cat /etc/ipsec.secrets //仅查看,不要修改该文件
include /etc/ipsec.d/
.secrets
[root@client ~]# vim /etc/ipsec.d/mypass.secrets //新建该文件
201.1.2.10 %any: PSK "randpass" //randpass为预共享密钥
//201.1.2.10是×××服务器的IP
4)启动IPSec服务
[root@client ~]# systemctl start ipsec
[root@client ~]# netstat -ntulp |grep pluto
udp 0 0 127.0.0.1:4500 0.0.0.0: 3148/pluto
udp 0 0 192.168.4.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.4.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
3.2 部署XL2TP服务
1)安装软件包(软件包参考lnmp_soft)
[root@client ~]# yum localinstall xl2tpd-1.3.8-2.el7.x86_64.rpm
2) 修改xl2tp配置文件(修改3个配置文件的内容)
[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 //×××服务器的IP地址
[root@client ~]# vim /etc/ppp/options.xl2tpd //认证配置
require-mschap-v2 //添加一行,强制要求认证 物联网开发找 上海捌跃网络科技有限公司
#crtscts //注释或删除该行
#lock //注释或删除该行
root@client ~]# vim /etc/ppp/chap-secrets //修改密码文件
jacob 123456 //账户名称 服务器标记 密码 客户端IP
3)启动服务
[root@client ~]# systemctl start xl2tpd
[root@client ~]# netstat -ntulp |grep xl2tpd
udp 0 0 0.0.0.0:1701 0.0.0.0:* 3580/xl2tpd
4)设置路由转发,防火墙
[root@client ~]# echo "1" >/proc/sys/net/ipv4/ip_forward
[root@client ~]# firewall-cmd --set-default-zone=trusted
5)×××设置(非必需操作)
[root@client ~]# iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 201.1.2.10
3.3客户端设置
1)新建网络连接,输入×××服务器账户与密码。
设置×××连接的属性,预共享密钥是IPSec配置文件中填写的randpass,具体操作如图所示。(高版本不用这么麻烦)
2)设置Windows注册表(不修改注册表,连接×××默认会报789错误),具体操作如下:(win7以上不用操作)
单击"开始",单击"运行",键入"regedit",然后单击"确定"
找到下面的注册表子项,然后单击它:
HKEY_LOCAL_MACHINE\ System\CurrentControlSet\Services\Rasman\Parameters
在"编辑"菜单上,单击"新建"->"DWORD值"
在"名称"框中,键入"ProhibitIpSec"
在"数值数据"框中,键入"1",然后单击"确定"
退出注册表编辑器,然后重新启动计算机
连接×××并测试网络连通性。
转自:http://blog.51cto.com/14050800/2314209
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)