Ubuntu下搭建L2TP VPN Server

这是本人第一篇博客,也算是自己的尝试,以前学习东西,一般都是以文档的方式记录。文档有时候容易丢失,所以开始尝试用博客记录学习历程。毕业在即,在此记录毕设的一部分内容。

内容:Ubuntu下搭建L2TP VNP服务器(校园网Intranet VPN)

1 查看服务器主机网络信息

:$ifconfig
eth0Linkencap:EthernetHWaddrfa:16:3e:a0:64:0c
inetaddr:172.16.0.61Bcast:172.16.255.255Mask:255.255.0.0(IP地址)

2 测试服务器主机能否访问Internet

此步骤主要是验证服务器主机是否能作为VPN的网络出口。

:~$pingbaidu.com
PINGbaidu.com(111.13.101.208)56(84)bytesofdata.
64bytesfrom111.13.101.208:icmp_seq=1ttl=45time=52.2ms
64bytesfrom111.13.101.208:icmp_seq=2ttl=45time=53.1ms
64bytesfrom111.13.101.208:icmp_seq=3ttl=45time=56.9ms

由终端结果可知,服务器主机是可以ping通Internet的,故当VPN客户端(校园网中的I区即Internet区)连接到VPN服务器(校园网中的Non-I区即非Internet区)时,是可以实现VPN隧道而访问互联网的。

3 切换到root用户,获得root权限

ubuntu@XXX:~$sudo-i
sudo:unabletoresolvehostzhantengfei-vpn
root@XXX:~#

4安装L2TP

安装中若遇到unable to locate package可以使用apt-get update解决,若实在不行也可以使用apt-get upgrade解决,更新源,再安装。

安装L2TP

:~#sudoapt-getinstallopenswanpppxl2tpd-y
sudo:unabletoresolvehostzhantengfei-vpn
Readingpackagelists...Done
Buildingdependencytree
............

5 配置相关文件

5.1 修改ipsec.conf文件

:~#vim/etc/ipsec.conf//使用vim命令查看相关文件,使用ipsec进行加密

编辑好配置文件后“ESC+:wq”保存,以下为编辑后的ipsec.conf

configsetup
#Donotsetdebugoptionstodebugconfigurationissues!
#plutodebug/klipsdebug="all","none"oracombationfrombelow:
#"rawcryptparsingemittingcontrolklipspfkeynattx509dpdprivate"
#eg:
#plutodebug="controlparsing"
#Again:onlyenableplutodebugorklipsdebugwhenaskedbyadeveloper
#
#enabletogetlogsper-peer
#plutoopts="--perpeerlog"
#
#Enablecoredumps(mightrequiresystemchanges,likeulimit-C)
#Thisisrequiredforabrtdtoworkproperly
#Note:incorrectSElinuxpoliciesmightpreventplutowritingthecore
dumpdir=/var/run/pluto/
#
#NAT-TRAVERSALsupport,seeREADME.NAT-Traversal
nat_traversal=yes
#excludenetworksusedonserversidebyadding%v4:!a.b.c.0/24
#ItseemsthatT-MobileintheUSandRogers/FidoinCanadaare
#using25/8as"private"addressspaceontheir3Gnetwork.
#ThisrangehasnotbeenannouncedviaBGP(atleastupto2010-12-21)
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v6:fd00::/8,%v6:fe80::/10
#OEisnowoffbydefault.Uncommentandchangetoon,toenable.
oe=off
#whichIPsecstacktouse.autowilltrynetkey,thenklipsthenmast
protostack=netkey
force_keepalive=yes
keep_alive=1800

connL2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
leftnexthop=%defaultroute
rightnexthop=%defaultroute

connL2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=172.16.0.61//设置为服务端的外网ip地址
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
dpddelay=40
dpdtimeout=130
dpdaction=clear
#Usethistologtoafile,ordisableloggingonembeddedsystems(likeopenwrt)

5.2 使用vi命令修改ipsec.secrets文件

:/etc#viipsec.secrets
#include/var/lib/openswan/ipsec.secrets.inc#注意这一行要注释掉
172.25.11.223%any:PSK"1110005440"//设置为服务器内网的地址,并设置密码(可以自定义设置)
include/var/lib/openswan/ipsec.secrets.inc

5.3 使用命令修改sysctl文件

:~#vi/etc/sysctl.conf
#/etc/sysct.conf
#onlyvaluesspecificforipsec/l2tpfunctioningareshownhere.mergewith
#existingfile
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.icmp_ignore_bogus_error_responses=1

5.4 执行如下脚本

forvpnin/proc/sys/net/ipv4/conf/*;doecho0>$vpn/accept_redirects;echo0>
$vpn/send_redirects;done
sysctl-p//使修改生效

5.5 使用命令修改xl2tp.conf文件

:~#vi/etc/xl2tpd/xl2tpd.conf

写入以下信息

authfile=/etc/ppp/chap-secrets
port=1701
[lnsdefault]
iprange=10.0.0.10-10.0.4.254
localip=10.0.0.9
refusechap=yes
refusepap=yes
requireauthentication=yes
name=L2TPVPN
pppdebug=yes
pppoptfile=/etc/ppp/options.xl2tpd
lengthbit=yes

5.6修改options.xl2tpd 文件

:~#vi/etc/ppp#vioptions.xl2tpd
#require-pap
#require-chap
#require-mschap
ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
ms-dns114.114.114.114
ms-dns8.8.4.4
asyncmap0
auth
crtscts
lock
hide-password
modem
debug
namel2tpd
proxyarp
lcp-echo-interval30
lcp-echo-failure4
mtu1400
noccp
connect-delay5000
http://rootmanager.com/ubuntu-ipsec-l2tp-windows-domain-auth/setting-up-openswan-xl2tpd-with-native-windows-clients-lucid.html

5.7修改chap-secrets文件

:~#vi/etc/ppp/chap-secrets
#SecretsforauthenticationusingCHAP
#clientserversecretIPaddresses
Spencerl2tpd1110005440*

5.8最后配置防火墙

#iptables -t nat -A POSTROUTING -s 10.0.0.0/22 -o eth0 -j MASQUERADE //决定客户端是否可访问Internet

iptables--tablenat--appendPOSTROUTING--jumpMASQUERADE
iptables-tnat-APOSTROUTING-s10.0.0.0/22-oeth0-jMASQUERADE
iptables-AFORWARD-mstate--stateRELATED,ESTABLISHED-jACCEPT
iptables-IFORWARD-s10.0.0.0/22-jACCEPT
iptables-IFORWARD-d10.0.0.0/22-jACCEPT
iptables-AFORWARD-jREJECT
iptables-AINPUT-pudp-mstate--stateNEW-mudp--dport1701-jACCEPT
iptables-AINPUT-pudp-mstate--stateNEW-mudp--dport500-jACCEPT
iptables-AINPUT-pudp-mstate--stateNEW-mudp--dport4500-jACCEPT
/etc/rc.d/init.d/iptablessave
/etc/rc.d/init.d/iptablesrestart

其中这两句写入/etc/rc.local:

forvpnin/proc/sys/net/ipv4/conf/*;doecho0>$vpn/accept_redirects;echo0>$vpn/send_redirects;done
iptables--tablenat--appendPOSTROUTING--jumpMASQUERADE

5.9验证配置是否成功:

:~#ipsecverify
CheckingifIPsecgotinstalledandstartedcorrectly:
Versioncheckandipsecon-path[OK]
OpenswanU2.6.49/K3.13.0-65-generic(netkey)
See`ipsec--copyright'forcopyrightinformation.
CheckingforIPsecsupportinkernel[OK]
NETKEY:TestingXFRMrelatedprocvalues
ICMPdefault/send_redirects[OK]
ICMPdefault/accept_redirects[OK]
XFRMlarvaldrop[OK]
Hardwarerandomdevicecheck[N/A]
Twoormoreinterfacesfound,checkingIPforwarding[OK]
Checkingrp_filter[OK]
Checkingthatplutoisrunning[OK]
PlutolisteningforIKEonudp500[OK]
PlutolisteningforIKEontcp500[NOTIMPLEMENTED]
PlutolisteningforIKE/NAT-Tonudp4500[OK]
PlutolisteningforIKE/NAT-Tontcp4500[NOTIMPLEMENTED]
PlutolisteningforIKEontcp10000(cisco)[NOTIMPLEMENTED]
CheckingNATandMASQUERADEing[TESTINCOMPLETE]
Checking'ip'command[OK]
Checking'iptables'command[OK]

以上只要不出现Failed就行,由于L2TP使用1701端口,是UDP传输,故关于TCP的项无所谓

最终查看连接或者调试错误时查看日志 /var/log/syslog

tail-f/var/log/syslog

6 客户端连接VPN服务器

首先需要连接到内网,使客户机与服务器处于同一个LAN中。

wKiom1kJil3BFVzPAABOVomqpHI473.png-wh_50


由于我在安装Openswan时,使用的是证书安装,所以在客户端连接时,需要使用L2TP/IPsec证书连接。

wKioL1kJirGA72LfAABJm821z5I758.png-wh_50

7 访问Internet

连接到VPN服务器后,可以访问因特网。

wKioL1kJizfRZdcYAAB72w1iCr0495.png


References:

1)http://lesca.me/archives/how-to-setup-l2tp-over-ipsec-on-ubuntu.htm l#comments

2)http://www.open-open.com/lib/view/open1404374859499.html

3)http://m.blog.csdn.net/article/details?id=8820602

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读2.3k次,点赞4次,收藏22次。最近安装了CARLA预编译版,总体过程感觉还是挺简单的,但是由于在网上找的参考资料并没有和自己遇到的情况完全一样的,所以把自己的安装过程记录下来,方便和自己一样的后来人进行安装,同时也自己作个记录留作备忘。其实预编译版的CARLA本身几乎不用什么命令行进行安装,主要步骤只有解压缩和拷贝文件,和极少的命令行安装操作。但是相关依赖以及其它的CARLA所使用的一些工具需要一起安装好,下面一起来看看安装步骤吧。_ubuntu22.04安装carla
文章浏览阅读6.3k次,点赞5次,收藏15次。在清华镜像中下载Ubuntu 20 安装包_ubuntu20下载
文章浏览阅读5k次。linux环境, python3.7.问题描述: 安装rally, pip3 install -r requirements.txt 时提示如下: 说明openssl 已安装。解决:1. pip3 install --upgrade pip , 结果输出如下 ..._error: command '/usr/bin/gcc' failed with exit code 1
文章浏览阅读1.1k次。自己刚踩坑装好的W11 WSL2 miniconda_wsl2 cuda
文章浏览阅读4.2k次,点赞4次,收藏17次。要安装这个 standalone的,会有一点区别(不识别 下面的 -localhost no)上面的命令会在~/.vnc/目录下生成一个 passwd文件。具体端口号,可以查看vncserver -list返回结果中的RFB PROT。作用是vncserver启动的时候运行这些命令,把桌面程序启动起来。如果希望用某个用户比如 demo登录,就用su切换到这个用户。桌面版默认就已安装,服务器版需要手动安装,并启动。关闭某个会话可以用下面的命令。远程地址输入ip:port。查看全部的vnc会话。_ubuntu vncserver
文章浏览阅读894次,点赞51次,收藏31次。在安卓使用vscode主要是连接一个远程的code-server服务,code-server服务安装在什么系统,调用的就是什么系统的环境,如这里使用ubuntu进行安装code-server,那使用的就是ubuntu环境,如需要go,python,java开发,需要在Ubuntu安装相关环境,创建的文件夹和项目也是在Ubuntu里面.这种方式其实在访问vscode的时候利于可以随时随地进行连接使用,且不受设备影响。
安装Ubuntu上超好用的终端Terminator。通过添加软件源、更新源、安装Terminator等步骤完成。
文章浏览阅读1.1k次,点赞83次,收藏74次。不要嫌弃Ubuntu的单调的终端界面啦,快来试试这些有意思的命令_ubuntu系统有趣的玩法
文章浏览阅读2.5k次。在ubuntu系统中,swap空间就是虚拟内存,所以考虑在磁盘空间富余的目录下设置虚拟内存swap文件,用来缓解内存不足的问题。通过上面的信息可以看到,/dev/vda2 目录下还剩余45G,那么就可以把swap文件生成在/dev/vda2目录下。在系统监控中发现,当数据库服务程序启动后,占用了大量内存空间,导致系统的剩余的内存往往只有几十MB。# bs 为块的大小,count 创建多少个块。# 执行命令后,删除创建的swap目录即可。#把生成的文件转换成 Swap 文件。2、创建一个swap文件。_ubuntu20修改swap大小
文章浏览阅读2.9k次,点赞2次,收藏10次。记录RV1126的SDK编译错误,以及解决处理_command exited with non-zero status 1
文章浏览阅读1.1w次,点赞22次,收藏101次。【记录】ubuntu20.04安装nvidia显卡驱动_ubuntu20.04安装nvidia显卡驱动
文章浏览阅读727次,点赞6次,收藏27次。在嵌入式Linux开发过程中,可能遇到uboot无法通过nfs服务从Ubuntu下载系统镜像(TTTTTT)的问题。如果你使用的是较新版本的Ubuntu,那么其**默认内核将不支持nfs2**!而**uboot仅支持到nfs2**,因此我们需要修改系统内核以及nfs配置文件,开启nfs2服务。**此问题非常棘手**,因为问题出现的时间太近,并且使用的人少。由于是2023年后才出现的问题,**chatgpt也无法解答**!本文参考网络上多篇博客资料,是解决此问题的最新办法。
ubuntu系统下安装软件的方法有多种,包括使用apt工具、deb软件包安装、源码编译安装以及通过软件中心安装。还有一种以 .run 后缀的软件包也可以在ubuntu系统下安装。具体的安装方法可以通过百度搜索来获取。
文章浏览阅读814次。本篇目的:Xubuntu如何安装pkg-configpkg-config是一个计算机软件包,用于帮助开发人员查找、定位和使用依赖库。它通常用于构建软件时,开发人员需要指定程序所依赖的外部库的位置和版本信息。使用pkg-config,开发人员可以很容易地查找、检索和导出这些依赖库的信息,从而简化了软件的构建过程。_ubuntu中怎么下载pkg-config
文章浏览阅读2k次。ubuntu创建共享文件夹_ubuntu20.04共享文件夹
文章浏览阅读2.9k次,点赞74次,收藏73次。对于有长期远程桌面需求的用户,建议将cpolar套餐升级到专业套餐,支持配置固定的公网TCP端口,且带宽也会相应的增大,支持更高效便捷的远程桌面连接Ubuntu系统。【cpolar内网穿透支持http/https/tcp协议,支持永久免费使用,不限制流量,无需公网IP,也不用进入路由器设置,操作简单。隧道创建成功后,点击左侧仪表盘的状态——在线隧道列表,查看xrdp隧道的所生成的公网TCP端口地址,复制下来。,使用cpolar内网穿透映射3389端口,生成公网TCP端口地址,实现在公网环境下,_ubuntu 局域网桌面
文章浏览阅读3.2k次。而在linux的ubuntu版本中,又多出两类用户:安装ubuntu系统的源用户xxx,其与root具有相同权限,仅在执行命令时,前面加sudo。在ubuntu中,用命令deluser username可以直接删除用户账号及家目录,而用centos7中的命令userdel -r username才能达到同样目的。在ubuntu中,没有moduser命令,centos7中的usermod修改用户信息的命令,同样可以用在ubuntu中。在系统中,创建新的用户或称为账号,一般需要多步操作。_ubuntu创建一个新用户
文章浏览阅读1.6w次,点赞4次,收藏23次。系统的许多日志文件都存储在 /var/log 目录中。你可以使用 ls /var/log 命令来列出可用的日志文件。/var/log/Xorg.0.log:包含 X 服务器的日志信息(图形界面)。打开DASH,搜索日志或者log,打开app,这个是/var/log的界面版。这将显示系统日志的末尾,并提供有关系统崩溃和错误的信息。/var/log/kern.log:包含内核日志信息。/var/log/dmesg:包含开机时的日志信息。/var/log/syslog:包含系统日志信息。_ubuntu查看系统日志
文章浏览阅读857次。首先将source.list复制为source.list.bak备份,然后将source.list内容改为需要的镜像源列表即可。Ubuntu采用apt作为软件安装工具,其镜像源列表记录在/etc/apt/source.list文件中。本节均为 Ubuntu 20.04 的镜像源列表。若为其他版本,将所有focal更改为其他版本代号即可。_apt 国内源