HCRM博客

如何在CentOS上配置IPsec以支持L2TP协议?

CentOS 7 搭建 L2TP/IPsec VPN 服务器

一、前言

L2TP(Layer 2 Tunneling Protocol)结合 IPsec(Internet Protocol Security)可以在提供隧道功能的同时,确保数据传输的安全性,本文将详细介绍在 CentOS 7 系统上如何搭建一个安全稳定的 L2TP/IPsec VPN 服务器。

如何在CentOS上配置IPsec以支持L2TP协议?-图1
(图片来源网络,侵权删除)

二、前置条件检查

1、操作系统:CentOS 7

2、公网 IP:确保服务器拥有公网 IP 地址

3、网络环境:允许必要的端口通过防火墙

三、安装相关软件

1. 安装 EPEL 源

EPEL(Extra Packages for Enterprise Linux)是一个由 Fedora 特殊兴趣小组维护的项目,为 RHEL/CentOS 及其衍生发行版提供额外的软件包,执行以下命令安装 EPEL 源:

sudo yum install y epelrelease

2. 安装 xl2tpd

如何在CentOS上配置IPsec以支持L2TP协议?-图2
(图片来源网络,侵权删除)

xl2tpdxl2tpd 的一个分支,用于实现 L2TP 和PPP协议,执行以下命令进行安装:

sudo yum install y xl2tpd

3. 安装 libreswan

libreswan 是 OpenSWAN 的一个分支,实现了 IPsec 协议,执行以下命令进行安装:

sudo yum install y libreswan

四、配置 IPsec

1. 编辑 IPsec 配置文件

创建或编辑/etc/ipsec.conf 文件,添加以下内容以启用 NAT 遍历:

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

2. 创建 IPsec 与 L2TP 服务关联的配置文件

如何在CentOS上配置IPsec以支持L2TP协议?-图3
(图片来源网络,侵权删除)

创建或编辑/etc/ipsec.d/l2tp_psk.conf 文件,添加以下内容:

conn L2TPPSKNAT
    rightsubnet=vhost:%priv
    also=L2TPPSKnoNAT
conn L2TPPSKnoNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=10.0.30.177    # 服务器的公网 IP 地址
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

3. 创建保存预共享密钥的文件

创建或编辑/etc/ipsec.d/ipsec.secrets 文件,添加以下内容:

: PSK "123456"

4. 设置 l2tp 的账号信息

创建或编辑/etc/ppp/chapsecrets 文件,添加 VPN 用户信息:

用户名      服务器         密码          客户端 IP 地址池
admin1       *              12345678      *
admin2       *              12345678      *
admin3       *              12345678

5. 修改内核参数以支持 IPsec

创建或编辑/etc/sysctl.conf 文件,添加以下内容:

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

使配置生效:

sudo sysctl p

6. 启动并验证 IPsec 服务

启动并设置开机自启 IPsec 服务:

sudo systemctl start ipsec
sudo systemctl enable ipsec

验证 IPsec 配置是否正确:

sudo ipsec verify

五、配置 L2TP

1. 编辑 L2TP 配置文件

创建或编辑/etc/xl2tpd/xl2tpd.conf 文件,修改以下内容:

[global]
;ifconfig显示的ip不是公网ip
listenaddr = 10.0.12.7
ipsec saref = yes
;修改分配的地址段
[lns default]
ip range = 192.168.7.7192.168.7.77
local ip = 192.168.7.10

2. 修改安全配置

创建或编辑/etc/ppp/options.xl2tpd 文件,添加以下内容:

requiremschapv2
msdns 8.8.8.8
msdns 114.114.114.114
logfile /var/log/xl2tpd.log

3. 停止 firewalld 服务并禁用

执行以下命令停止并禁用firewalld 服务:

sudo systemctl stop firewalld
sudo systemctl mask firewalld

4. 安装并配置 iptables 服务

安装iptablesservices

sudo yum install y iptablesservices

配置防火墙规则:

#注意 ens33要是自己的网卡名称
sudo iptables t nat A POSTROUTING s 192.168.7.10/24 o eth0 j MASQUERADE
sudo iptables I FORWARD s 192.168.7.10/24 j ACCEPT
sudo iptables I FORWARD d 192.168.7.10/24 j ACCEPT
sudo iptables A INPUT p udp m policy dir in pol ipsec m udp dport 1701 j ACCEPT
sudo iptables A INPUT p udp m udp dport 1701 j ACCEPT
sudo iptables A INPUT p udp m udp dport 500 j ACCEPT
sudo iptables A INPUT p udp m udp dport 4500 j ACCEPT
sudo iptables A INPUT p esp j ACCEPT
sudo iptables A INPUT m policy dir in pol ipsec j ACCEPT
sudo iptables A FORWARD i ppp+ m state state NEW,RELATED,ESTABLISHED j ACCEPT
sudo iptables A FORWARD m state state RELATED,ESTABLISHED j ACCEPT
service iptables save

5. 启动并设置开机自启 L2TP 服务

启动并设置开机自启xl2tpd 服务:

sudo systemctl start xl2tpd
sudo systemctl enable xl2tpd

六、常见问题与解答 (FAQs)

Q1:如何更改预共享密钥?

A1:预共享密钥定义在/etc/ipsec.d/ipsec.secrets 文件中,找到对应的条目,修改为新的密钥即可。

: PSK "newpassword"

保存文件后,重启 IPsec 服务使更改生效。

sudo systemctl restart ipsec

Q2:如何更改 VPN 用户的密码?

A2:VPN 用户信息定义在/etc/ppp/chapsecrets 文件中,找到对应的用户条目,修改密码即可。

admin1 * newpassword

保存文件后,无需重启服务,更改即时生效。

分享:
扫描分享到社交APP
上一篇
下一篇