看了很多文章,也踩了很多坑,可能因为环境的不同导致,但也有一部分是文章本身就有很多错误,还好最终自己把这浑水蹚过去了

1、安装EPEL源

yum install -y make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof vim-enhanced man
yum install -y xl2tpd 
yum install -y libreswan

2、修改ipsec配置文件

打开文件

vim /etc/ipsec.conf

config setup中添加一句:nat_traversal=yes,充许传透nat建立l2tp连接

Ceph KVM搭建 centos搭建ikev2_IP

3、创建ipsec与l2tp服务关联的配置文件

在第2步中最后一行可以看到 include /etc/ipsec.d/*.conf 这句话,所以创建的配置文件就在 /etc/ipsec.d/ 目录下

vim /etc/ipsec.d/l2tp_psk.conf

文件填写以下内容,仅需修改 left 参数为 eth0的 内网IP地址

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=192.168.4.197   # 192.168.4.197 是内网IP地址,即eth0网卡Ip地址
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

4、设置预共享密钥

创建保存预共享密钥的文件,名字可自定义,扩展名为.secrets

vim /etc/ipsec.d/ipsec.secrets

文件填写以下内容,其中,IP地址为内网地址,即eth0网卡IP地址,双引号中为密钥,自行设置。(注意空格,否则后面有报错)

192.168.4.197 %any: PSK "test123"

5、修改内核支持

打开文件

vim /etc/sysctl.conf

对照下面的内容,应该直接在文件结尾,补充最后5行就可以

vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.conf.lo.arp_announce=2

net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_source_route = 0

修改完保存退出,执行命令使配置生效

sysctl -p

6、检验ipsec服务配置

systemctl restart ipsec
ipsec verify

输出如图:

Ceph KVM搭建 centos搭建ikev2_IP_02

在这一步只遇到过因为第4步中空格问题导致的红色报错,没有遇到其他问题

7、修改l2tp配置文件

打开文件

vim /etc/xl2tpd/xl2tpd.conf

四个修改点:

  • [global]模块中
  • 取消 listen-addr 注释,并设置为内网IP(eth0的IP)
  • 取消 ipsec saref = yes 注释
  • [lns default]模块中
  • ip_range:客户端连接此服务后分配给客户端的ip地址范围,
  • local ip:设置本VPN服务的IP

Ceph KVM搭建 centos搭建ikev2_centos_03

8、修改xl2tpd配置文件

打开文件

vim /etc/ppp/options.xl2tpd

改两个点就可以了

  • 第一行添加上:require-mschap-v2
  • DNS服务器写俩就行
  • 谷歌:8.8.8.8
  • 阿里:233.5.5.5
  • 百度:180.76.76.76

9、设置连接此vpn服务器的账户与密码

打开文件:

vim /etc/ppp/chap-secrets

依次写用户名、服务名、密码、IP地址,实际上服务名与IP地址都写成星号即可,主要设置用户名与密码,以空格间隔开

Ceph KVM搭建 centos搭建ikev2_Ceph KVM搭建_04

10、防护墙与地址转发规则

(1)关闭firewalld
systemctl stop firewalld
systemctl mask firewalld
(2)配置iptables

安装iptables服务

yum install -y iptables
yum install -y iptables-services

走一遍流程,做一些初始化,防止后面有错误

iptables -P INPUT ACCEPT
iptables -F
iptables -F
iptables -X
iptables -Z

执行命令进行规则配置,其中前三行有网段配置,这里要与 第7步 中 设置lns default中的一致

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT

iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 4500 -j ACCEPT
iptables -A INPUT -p esp -j ACCEPT
iptables -A INPUT -m policy --dir in --pol ipsec -j ACCEPT
iptables -A FORWARD -i ppp+ -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

上述命令执行完后,保存规则并重启iptables

service iptables save
systemctl restart iptables

11、服务启动检查

走完上面的流程,检查 iptables、ipsec、xl2tpd 三个服务是否是正常开启状态

systemctl status iptables
systemctl status ipsec
systemctl status xl2tpd

Ceph KVM搭建 centos搭建ikev2_服务器_05

如果有报错或未启动,尝试启动或重启,或根据具体错误解决

# 重启
systemctl restart iptables
systemctl restart ipsec
systemctl restart xl2tpd

# 启动
systemctl start iptables
systemctl start ipsec
systemctl start xl2tpd

设置 ipsec与xl2tpd 服务开机自启动

systemctl enable ipsec
systemctl enable xl2tpd

12、配置完毕,到Win10测试连接

在win10中,进入【设置】-【网络和Internet】-【VPN】,添加一个新的VPN连接

  • 连接名自己定义即可
  • 服务器名称或地址就是搭建L2TP的服务器外网地址
  • VPN类型选择L2TP
  • 登录信息配置在服务器上配置过的一个用户名与密码即可,保存

Ceph KVM搭建 centos搭建ikev2_Ceph KVM搭建_06

然后,在当前【VPN】页面点击下面的「更改适配器选项」,在我们配置的那个链接上右键进入属性,在进入 安全 ,点击「高级设置」,勾选第一项,填写在VPN服务器设置过的 PSK密钥 ,点击确定,下面 勾选 允许使用这些协议,最后点击确定

Ceph KVM搭建 centos搭建ikev2_IP_07

以上配置完成后,点击连接即可,在显示已连接后,可查看当前的IP状态

Ceph KVM搭建 centos搭建ikev2_Ceph KVM搭建_08