Centos7 搭建xl2tpd + ipsec vpn

本文详细指导如何在Linux系统上手动安装和配置xl2tpd、ipsec(Libreswan),包括配置文件、IPsec验证、iptables规则,以及Windows客户端的连接设置,以实现远程访问和安全通信。
摘要由CSDN通过智能技术生成

一、安装xl2tpd(ppp+xl2tpd) 和 ipsec (libreswan)
由于yum源中没有xl2tpd包,我们需要手动下载xl2tpd rpm安装包。
链接:https://pan.baidu.com/s/1QMsOeEWLpfwbEagiUE4kow?pwd=vnjf
提取码:vnjf

安装 ppp 
yum install wget lsof net-tools vim nss nss-devel ppp ppp-devel iptables iptables-services -y

安装 xl2tpd
yum localinstall xl2tpd-1.3.8-2.el7.x86_64.rpm -y

安装 libreswan
yum install -y libreswan

二、配置 ipsec (libreswan)
2.1 新建文件并且配置 ipsec

vim /etc/ipsec.d/ipsec-vpn.conf

没有 vim 命令直接安装 yum install -y vim 配置内容如下( 需要修改ip):

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
    ikelifetime=8h
    keylife=1h
    type=transport
    left = 这里填写服务器的外网 IP
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

2.2 新建文件并配置共享密钥

vim /etc/ipsec.d/ipsec-vpn.secrets

文件内容如下

# 这里填写公网ip %any: PSK "这里填写一个字符串作为密钥"
0.0.0.0 %any: PSK "这是你的共享密钥"

设置开机启动

# 开机启动
systemctl enable ipsec
# 启动服务
systemctl start ipsec
# 查看日志
journalctl -u ipsec -n 100 -f 

2.3 启动 IPsec 后,还需要对 IPsec 进行验证,以确保 IPsec 能够正常工作:

ipsec verify

如果输出如下:

Verifying installed system and configuration files

Version check and ipsec on-path                   	[OK]
Libreswan 3.25 (netkey) on 3.10.0-1160.el7.x86_64
Checking for IPsec support in kernel              	[OK]
 NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects              	[NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/send_redirects or NETKEY will act on or cause sending of bogus ICMP redirects!

         ICMP default/accept_redirects            	[NOT DISABLED]

  Disable /proc/sys/net/ipv4/conf/*/accept_redirects or NETKEY will act on or cause sending of bogus ICMP redirects!

         XFRM larval drop                         	[OK]
Pluto ipsec.conf syntax                           	[OK]
Two or more interfaces found, checking IP forwarding	[OK]
Checking rp_filter                                	[ENABLED]
 /proc/sys/net/ipv4/conf/all/rp_filter            	[ENABLED]
 /proc/sys/net/ipv4/conf/br-1467d2b70deb/rp_filter	[ENABLED]
 /proc/sys/net/ipv4/conf/default/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/docker0/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/eth0/rp_filter           	[ENABLED]
 /proc/sys/net/ipv4/conf/ip_vti0/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/veth81161d5/rp_filter    	[ENABLED]
 /proc/sys/net/ipv4/conf/vethf9c527b/rp_filter    	[ENABLED]
  rp_filter is not fully aware of IPsec and should be disabled
Checking that pluto is running                    	[OK]
 Pluto listening for IKE on udp 500               	[OK]
 Pluto listening for IKE/NAT-T on udp 4500        	[OK]
 Pluto ipsec.secret syntax                        	[OBSOLETE]
  003 WARNING: using a weak secret (PSK)
Checking 'ip' command                             	[OK]
Checking 'iptables' command                       	[OK]
Checking 'prelink' command does not interfere with FIPS	[OK]
Checking for obsolete ipsec.conf options          	[OK]

ipsec verify: encountered 19 errors - see 'man ipsec_verify' for help

验证结果中会出现 各种结果。但是这里看不出这些字母颜色的区别,在 shell 中,分为绿色、红色、黄色。其中绿色、黄色不用管、红色需要解决错误。分别执行对应的命令(此处可能不同用户出现的问题不一致,不全的百度搜索)

#下方错误 
NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects              	[NOT DISABLED]
Disable /proc/sys/net/ipv4/conf/*/send_redirects or NETKEY will act on or cause sending of bogus ICMP redirects!
         ICMP default/accept_redirects            	[NOT DISABLED]
# 执行对应的命令(一次性复制完进行执行)
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/send_redirects
    echo 0 > $each/accept_redirects
done

# ===============================================================================================================================
# 下方错误
Checking rp_filter                                	[ENABLED]
 /proc/sys/net/ipv4/conf/all/rp_filter            	[ENABLED]
 /proc/sys/net/ipv4/conf/br-1467d2b70deb/rp_filter	[ENABLED]
 /proc/sys/net/ipv4/conf/default/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/docker0/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/eth0/rp_filter           	[ENABLED]
 /proc/sys/net/ipv4/conf/ip_vti0/rp_filter        	[ENABLED]
 /proc/sys/net/ipv4/conf/veth81161d5/rp_filter    	[ENABLED]
 /proc/sys/net/ipv4/conf/vethf9c527b/rp_filter    	[ENABLED]
# 执行对应命令(上面的每一行都要执行  echo 0 >,我后面的省略了,)
echo 0 >/proc/sys/net/ipv4/conf/vethf9c527b/rp_filter

修改完成后,再进行一次 ipsec 验证即可看到结果,所有的输出项都变成绿色、黄色再执行之后步骤

2.4 开启 IPv4 的 ip_forward,这个选项用于做 IP 包的转发:

sysctl net.ipv4.ip_forward=1

sysctl -p

三、配置 xl2tpd
vi /etc/xl2tpd/xl2tpd.conf

# 注意这个 ip range 不要与本地 ip 和服务器的其他 ip 冲突
# 这是一个例子:
ip range = 192.168.79.100-192.168.79.200 #这里是VPN 分配给客户端的ip地址池
local ip = 192.168.79.1	# 这里是 VPN 服务器在 VPN 网络中的ip,不是公网ip 

vi /etc/ppp/options.xl2tpd

# 修改 ms-dns,可以修改为其他合适的 dns 地址
ms-dns 114.114.114.114

# 增加 require-mschap-v2 选项,否则 windows 无法连接
require-mschap-v2

# 注释以下两个参数
# crtscts
# lock

# 增加日志保存路径 没有文件夹得手动创建
logfile /home/logs/vpn/xl2tpd.log

四、配置PPP
vim /etc/ppp/chap-secrets

# 按文件中说明填写用户名密码即可
# 例如
# 用户名	*	密码  分配给用户的ip(如果是* 则会是动态ip /etc/xl2tpd/xl2tpd.conf 这个里面配置了ip池)
# Secrets for authentication on server using CHAP
# client        server  secret                  IP addresses
test            *       "test"             192.168.79.100

# 下面的配置也得需要 不然服务会一直报错找不到密码
# Secrets for authentication on client using CHAP
# client        server  secret                  IP addresses
*               test     "test"

启动

# 开机启动
systemctl enable xl2tpd
# 启动服务
systemctl start xl2tpd
# 查看日志
journalctl -u xl2tpd -n 100 -f 

五 配置防火墙

iptables -t filter -A INPUT -p udp -m multiport --dports 500,4500,1701 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t filter -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

六、window 连接
第一次连接需要修改 注册表 ,
Win+R 输入 regedit 然后找到 这个变量 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
右键 新建 DWORD (32位)值
AssumeUDPEncapsulationContextOnSendRule=00000002
在这里插入图片描述
新建完保存之后就重启电脑,然后进行下图连接VPN
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值