基于 L2TP 的远程访问

操作系统:CentOS7.9

查看操作系统版本:

# 执行这条命令
cat /etc/redhat-release

# 返回如下内容就对了
CentOS Linux release 7.9.2009 (Core)

查看是否开启TUN

# 执行如下命令 
cat /dev/net/tun

# 返回如下内容就对了
cat: /dev/net/tun: File descriptor in bad state

# 如果提示 cat: /dev/net/tun: No such file or directory 那就执行如下操作即可
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 666 /dev/net/tun

安装 EPEL 源,因为CentOS7官方源中去掉了 l2tpd

yum install -y epel-release
yum -y  update

安装l2tpd和libreswan

yum install -y xl2tpd libreswan ppp lsof

配置(/etc/xl2tpd/xl2tpd.conf) ,首先备份配置文件,然后再编辑

cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak
vim /etc/xl2tpd/xl2tpd.conf

经过调试,里面的东西暂时保持默认即可!

配置(/etc/ppp/options.xl2tpd),同样,先备份,再修改!

cp /etc/ppp/options.xl2tpd /etc/ppp/options.xl2tpd.bak
vim /etc/ppp/options.xl2tpd

打开后,讲里面的全部删除,并且,写入如下内容:

ipcp-accept-local
ipcp-accept-remote
ms-dns  114.114.114.114
ms-dns  114.114.115.115
noccp
auth
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
connect-delay 5000

配置(/etc/ipsec.conf),先备份,再修改!

cp /etc/ipsec.conf /etc/ipsec.conf.bak
vim /etc/ipsec.conf

此处暂时没啥修改的

配置(/etc/ipsec.d/l2tp-ipsec.conf) ,这是一个新文件。

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

此处将新建一个 l2tp-ipsec.conf 文件,然后将如下内容写入该文件。

conn L2TP-PSK-NAT
    rightsubnet=0.0.0.0/0
    dpddelay=10
    dpdtimeout=20
    dpdaction=clear
    forceencaps=yes
    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=xxx.xxx.xxx.xxx               # 本机IP地址(我的宿主机IP地址就是这个)
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

设置用户名和密码(/etc/ppp/chap-secrets) ,先备份,再修改。

cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vim /etc/ppp/chap-secrets

然后按照下面的例子,填写自己的用户信息

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user01    *    1234567890    *

user01是用户,第一个星号 是全部服务器类型 123xx是密码,第二个星号是 允许访问的IP地址

设置PSK(/etc/ipsec.d/default.secrets),这是一个新文件。

vim /etc/ipsec.d/default.secrets

然后填入如下内容:当中 test 为你的密钥

0.0.0.0 %any: PSK "test"

配置防火墙开机自启动

# 开启防火墙,并设置开机启动
systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld

配置防火墙规则

# 设置防火墙规则
firewall-cmd --permanent --add-service=ipsec
firewall-cmd --permanent --add-port=1701/udp
firewall-cmd --permanent --add-port=4500/udp
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

IP_FORWARD设置(/etc/sysctl.d/60-sysctl_ipsec.conf) 新建并打开这个配置文件

vim /etc/sysctl.d/60-sysctl_ipsec.conf

然后将如下内容写入

net.ipv4.ip_forward = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.conf.eth1.rp_filter = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.eth2.accept_redirects = 0
net.ipv4.conf.eth2.rp_filter = 0
net.ipv4.conf.eth2.send_redirects = 0
net.ipv4.conf.ip_vti0.accept_redirects = 0
net.ipv4.conf.ip_vti0.rp_filter = 0
net.ipv4.conf.ip_vti0.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.ppp0.accept_redirects = 0
net.ipv4.conf.ppp0.rp_filter = 0
net.ipv4.conf.ppp0.send_redirects = 0

重启网络服务,使配置生效

systemctl restart network

设置 ipsec 开机启动并且验证是否可用

systemctl enable ipsec
systemctl restart ipsec

设置 l2tpd 开机启动

systemctl enable xl2tpd
systemctl start xl2tpd
systemctl status xl2tpd

如果遇到 xl2tpd 启动不成功,这可能是由于 系统内核缺少 l2tp_ppp 模块导致的

使用如下方法修复

sed -i '/^ExecStartPre=\//s/=/=-/' /usr/lib/systemd/system/xl2tpd.service
systemctl daemon-reload

此处参考:linux配置vpn客户端时,service xl2tpd restart 不成功 · Issue #261 · hwdsl2/docker-ipsec-vpn-server · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值