L2TP/IPSEC搭建详细步骤

部署运行你感兴趣的模型镜像

背景:长沙分公司访问北京总公司的办公OA业务,目前的方法是通过在北京总公司出口防火墙上配置OA业务的端口映射,然后在长沙分公司通过输入北京总部给的域名带上映射的端口即可访问,但该访问过程经过公网,存在数据被截取的风险,当前北京总公司空闲一台linux服务器,计划利旧该linux服务器搭建l2tp的方式来打通两地的内网,达到公网可以安全访问OA业务的目的。以下是在该linux服务器上搭建L2TP/IPSEC的配置过程,希望对有类似问题的公司相关运维人员有所帮助。

依赖环境

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

openswan(ipsec)

简单的说openswan就是ipsec,安装openswan也就是安装ipsec,这里不深入探讨openswan方案

yum install openswan

接下来配置ipsec。ipsec的配置文件是/etc/ipsec.conf,安装好openswan后,配置文件是默认内容。我们为了方便,把默认的配置文件备份到某个目录下,比如~/~etc/ipsec.conf,然后自己新建一个ipsec.conf,执行方法如下:

mkdir ~/~etc
mv /etc/ipsec.conf ~/~etc/ipsec.conf
vi /etc/ipsec.conf

接下来,就准备新建一个ipsec.conf,我们把下面的内容直接全部拷贝为新文件的内容

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,%v4:!192.168.18.0/24
    oe=off
    protostack=netkey
 
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=xxx.xxx.xxx.xxx
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

上面有一行是left=xxx.xx.xx.xx,这里要把left的值改为服务器的IP 地址,外网可以访问的IP地址。也就是客户端连接L2TP的时候,客户端会让填的公网IP

接下来配置密钥。L2TP比PPTP多了一个密钥项,这也是它比PPTP更安全的原因之一。这个密钥其实就是一个密码,不同于用户的登录密码,它相当于一个设备之间通信的密钥。它的配置文件是/etc/ipsec.secrets,按照相同的方法,我们先备份一下它,然后新建一个我们自己的:

mv /etc/ipsec.secrets ~/~etc/ipsec.secrets
vi /etc/ipsec.secrets

然后把下面的内容放到新建的配置文件中:

xxx.xxx.xxx.xxx %any: PSK "YourPsk"

同理,上面的xxx.xxx.xxx.xxx是服务器的公网IP,而后面的"YourPsk"中的YourPsk就是密钥的内容。你可以改为自己的任意字符串。反正在你连接登录VPN的时候,是需要这个PSK的。

运行ipsec.

ipsec setup restart
chkconfig ipsec on

这样,ipsec就跑起来了。网上还说需要使用ipsec verify去验证ipsec是否真的跑起来可以用,我觉得可以暂时不看,比较整个环境还没配完。

PPP

PPP就是一个拨号软件,用来提供用户登录的用户名和密码验证用的

yum install ppp

我们现在还没有搭建起整个VPN,但是可以先在PPP中把要用来登录的用户名和密码先安排好:

vi /etc/ppp/chap-secrets

在上面的文件中新增一行:

loginname *  loginpassword  *

有两个星号,第一个表示以后所有使用PPP作为用户认证的服务,都可以使用这个用户名和密码,包括PPTP和L2TP都可以使用loginname。第二个星号表示这个用户可以从任何IP登录。如果你希望控制一下,可以把星号改成具体的值来限制。

xl2tpd

就像pptp和pptpd一样,L2TP也依赖于xl2tpd。

yum install wget
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/x/xl2tpd-1.3.8-1.el6.x86_64.rpm
yum install xl2tpd-1.3.8-1.el6.x86_64.rpm

注:可以在pkgs.org这个网站上搜索xl2tpd找到你需要的版本

安装好xl2tpd之后,我们进行配置。它的配置文件有两个,一个是/etc/xl2tpd/xl2tpd.conf一个是/etc/ppp/options.xl2tpd,其实第一个文件把第二个文件包含进来而已。同样的道理,我们仍然采用备份和创建新文件的方法来修改配置文件:

mkdir ~/~etc/xl2tpd
mv /etc/xl2tpd/xl2tpd.conf ~/~etc/xl2tpd/xl2tpd.conf
vi /etc/xl2tpd/xl2tpd.conf

把下面的内容写进去:

[global]
ipsec saref = yes
listen-addr = xxx.xxx.xxx.xxx
[lns default]
ip range = 192.168.18.2-192.168.18.100
local ip = 192.168.18.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

和上面提到的一样xxx.xxx.xxx.xxx也要改成你自己的服务器外网IP。

mkdir ~/~etc/ppp
mv /etc/ppp/options.xl2tpd ~/~etc/ppp/opitons.xl2tpd
vi /etc/ppp/options.xl2tpd

写入下面的内容:

require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

这样,xl2tpd的配置就好了。

启动xl2tpd服务:

service xl2tpd restart
chkconfig xl2tpd on

sysctl

sysctl的功能是开启转发。它能够将服务器内部的ip地址关系进行转发和映射,从而实现我们链接VPN之后的用户,能够通过内部的一些端口进行请求的转发。

vi /etc/sysctl.conf

找到下面几个选项,并把值改为我提供的值:

net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1

如果没有找到某些选项,直接把它写到文件的末尾。保存之后,执行:

sysctl -p

这样配置就生效了。

iptables

iptables它是个防火墙软件,我们需要iptables来作为外部请求的转发。sysctl帮我们解决的是,一个用户通过ppp连接到服务器之后,他发的请求在服务器内部是怎样实现映射的,所以,没有iptables,用户通过上面的那些配置,就可以登录连接到L2TP VPN了,但是很有可能是连接上无法上网,因为外部的请求还没有转发啊。所以,我们执行下面的这些命令,来使iptables实现转发。

iptables -I INPUT -m policy --dir in --pol ipsec -j ACCEPT
iptables -I FORWARD -m policy --dir in --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -m policy --dir out --pol none -j MASQUERADE
iptables -I FORWARD -i ppp+ -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -m policy --dir in --pol ipsec -p udp --dport 1701 -j ACCEPT
iptables -I INPUT -p udp --dport 500 -j ACCEPT
iptables -I INPUT -p udp --dport 4500 -j ACCEPT
iptables -t nat -I POSTROUTING -o enp4s0 -j MASQUERADE
iptables -t nat -I POSTROUTING -o enp3s0 -j MASQUERADE

上面的最后两条iptables中的enp4s0和enp3s0是对应的服务器网卡名称,需要修改成自己对应的网卡名称

service iptables save
service iptables restart

调整完,执行service iptables restart,以确保你的服务器外网转发OK。

总结

这个时候,我们在来运行一下:

ipsec setup restart 
ipsec verify

我们简单总结一下,我们这篇教程里面用到的软件有:

openswan(ipsec) : 提供一个密钥
ppp :提供用户名和密码
xl2tpd : 提供L2TP服务
sysctl : 提供服务器内部转发
iptables : 提供请求从服务器内部转向外部,外部响应转向服务器内部

涉及到的一些配置文件

ipsec配置文件监听IP:/etc/ipsec.conf
ipsec共享秘钥文件:/etc/ipsec.secrets
用户名和密码:/etc/ppp/chap-secrets
xl2tpd配置文件:/etc/xl2tpd/xl2tpd.conf
设置dns:/etc/ppp/options.xl2tpd

这就是我们搭建L2TP VPN的相关知识,结束

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### L2TP/IPSec 协议介绍 L2TP (Layer Two Tunneling Protocol) 是一种用于支持虚拟私有拨号网络(VPDN, Virtual Private Dial-up Network) 的隧道协议[^1]。然而,单独使用L2TP并不提供足够的安全性来保护传输的数据流免受窃听或篡改攻击。 为了增强安全性,通常会将L2TPIPSec(Internet Protocol Security) 结合起来使用。这种组合不仅提供了L2TP的功能特性,而且利用了IPSec的安全机制,包括加密、身份验证以及数据完整性校验等功能[^2]。因此,L2TP over IPsec 成为了一种广泛应用于企业环境中的解决方案,特别是对于移动办公场景下的安全接入需求。 ### 实现原理 在实现过程中,客户端发起连接请求至LNS(L2TP Network Server),并通过预共享密钥或其他认证方式完成双方的身份确认过程;随后建立一条基于UDP封装的L2TP隧道,并在此基础上构建ESP(Encapsulating Security Payload)/AH(Authentication Header)形式的安全关联(SA)。整个通讯流程都受到严格的加密处理,从而确保了信息传递的安全性和隐私性。 ### 配置方法概述 #### 设备准备 - **硬件设备**:至少两台路由器/防火墙作为两端节点(例如华为AR系列) - **软件平台**:可以选用eNSP等仿真工具来进行实验部署 #### 基本配置步骤说明 ##### 客户端设置 以Windows操作系统为例: 1. 打开“控制面板”,选择“网络和Internet”-> “网络和共享中心” 2. 点击左侧菜单栏里的“设置新的连接或网络... ”选项 3. 选取“连接到工作区”,点击下一步按钮 4. 选中“使用我的Internet连接(Dial-up or VPN)”一项后继续操作 5. 输入远程访问服务器地址(IPv4 地址 或者域名), 并指定此链接名称 6. 在高级设置窗口勾选启用L2TP/IPSec 加密选项 ##### 服务端配置要点 针对华为设备而言: ```shell # 进入系统视图 system-view # 创建ACL规则匹配特定源目地址范围内的流量 acl number 3000 rule permit ip source any destination any # 开启IKE协商功能并定义相应参数集 ike proposal 1 encryption-algorithm aes-cbc-256 integrity-algorithm sha2-256 dh group19 # 设置本地ID标识符以便于远端识别 identity local address <Local_IP_Address> # 添加对端描述信息及其对应的PSK(pre-shared key) peer name RemotePeerName pre-shared-key cipher YourPreSharedKeyHere! # 启动IPSec策略模板 ipsec policy template-name TemplatePolicy 1 isakmp security acl 3000 pfs dh-group19 proposal 1 # 绑定L2TP组与上述创建好的IPSec SA之间关系 l2tp enable l2tp-group 1 authentication-mode pap virtual-template 1 remote-address pool_name ipsec sa bind l2tp-group 1 ipsec-policy TemplatePolicy ``` 以上命令片段展示了如何在一个典型的华为路由器上快速搭建起能够接受来自外部LAC(Client) 发来的L2TP-over-IPSec 请求的服务端环境。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值