Linxu上搭建vpn服务(l2tp协议)(ipsec xl2tpd)

需要的组件

  1. openswan(新版本叫Libreswan)
    ipsec协议实现,包括pluto(key管理组件)和 ipsec(命令行工具),内核可以使用系统内核模块netkey。
  2. xl2tpd
    l2tp daemon,L2TP协议实现

配置文件

/etc/ipsec.conf 配置ipsec的参数 .参考

/etc/ipsec.secrets 由ipsec_pluto(the Internet Key Exchange daemon)使用,用于认证(to authenticate other hosts)。由ipsec.conf include到ipsec.conf文件中。
/etc/ipsed.d/*.conf 由ipsec.conf包括,配置connection。这是很重要的,是握手时的第一步,描述一个连接,每个peer连接服务器时都需要找到匹配的connection配置项并根据这个配置实例化一个connection。这里有一个特别要注意的参数pfs,如果未设置 pfs=no ,那ike协商可能失败(失败环境为win10,服务器日志记录为malformed payload in packet)。

/etc/xl2tpd/xl2tpd.conf 配置xl2tpd的参数及l2tp协议参数,定义了服务器IP地址和客户端IP地址范围。

/etc/xl2tpd/l2tp-secrets The l2tp-secrets file contains challenge-response authentication information for xl2tpd, the implementation of l2tp protocol.The format of the file is derived from the pap and chap secrets file format used in pppd.。参考

/etc/ppp/chap-secrets 配置使用chap认证时的用户、密码参考

/etc/ppp/options.xl2tpd 配置l2tp使用的ppp协议的参数,d xl2tpd.conf文件中通过pppoptfile = /etc/ppp/options.xl2tpd指定。

配置防火墙

两个点,一是允许通讯端口,二是允许forward
iptables -I INPUT -p udp –dport=500 -j RETURN
iptables -I INPUT -p udp –dport=4500 -j RETURN
iptables -I INPUT -p udp –dport=1701 -j RETURN
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE #出站前修改包source ip为当前interface IP。网段192.168.1.0/24是根据配置文件/etc/xl2tpd/xl2tpd.conf中设置的IP设置的。
iptables -I FORWARD -s 192.1681.0/24 -j ACCEPT #允许出站forward
iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT #允许入站forward

启动服务

service ipsec start #可以使用ipsec工具:ipsec start
service xl2tpd start

检查问题

ipsec verify检查ipsec依赖问题,一般有内核参数ip_forward(需要启用=1,默认禁用=0)、rp_filter(需要禁用=0,默认启用=1)、accept_redirects和send_redirects几个问题。

for d in `dir /proc/sys/net/ipv4/conf/` ; do echo 0 > /proc/sys/net/ipv4/conf/$d/accept_redirects ; done
for d in `dir /proc/sys/net/ipv4/conf/` ; do echo 0 > /proc/sys/net/ipv4/conf/$d/send_redirects ; done
for d in `dir /proc/sys/net/ipv4/conf/` ; do echo 0 > /proc/sys/net/ipv4/conf/$d/rp_filter ; done

取消ipsec.conf文件中的相关的日志配置行注释,可开启日志

#logfile=/var/log/pluto.log

修改后

logfile=/var/log/pluto.log

通过查看日志,诊断tunnel协商问题。

客户端在建立VPN连接时,注意勾选“允许下边的协议” -> “CHAP”

发表评论

电子邮件地址不会被公开。