主要的实现步骤

  1. openswan(ipsec) : 提供一个密钥
  2. ppp :提供用户名和密码
  3. xl2tpd : 提供L2TP服务
  4. sysctl : 提供服务器内部转发
  5. iptables : 提供请求从服务器内部转向外部,外部响应转向服务器内部(内网需要在路由器做映射)

安装开始

1.安装openswan

apt-get install openswan

如果出现报错 Package ‘openswan‘ has no installation candidate 请执行以下命令,如果顺利安装请直接看第二步

vim /etc/apt/sources.list.d/lzu.list
#创建一个源

粘贴如下代码到lzu.list文件

deb http://mirror.lzu.edu.cn/ubuntu/ precise main restricted universe multiverse
deb http://mirror.lzu.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb http://mirror.lzu.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb http://mirror.lzu.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb http://mirror.lzu.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirror.lzu.edu.cn/ubuntu/ precise main restricted universe multiverse
deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-security main restricted universe multiverse
deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-backports main restricted universe multiverse

更新一下源

apt-get update

安装openswan

apt-get -y install openswan
#安装出现提示框,选择NO回车 好了vim
/etc/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
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
配置密钥文件 vim /etc/ipsec.secrets 

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

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

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

运行ipsec.

 ipsec setup restart

PPP

PPP就是一个拨号软件,用来提供用户登录的用户名和密码验证用的。所以在上面那篇文章里,PPTP搭建的VPN也会用到PPP。所以,实际上,PPTP和L2TP是可以共存在一台服务器上的,而且它们还可以共享用户登录账号信息,因为它们都用PPP作为用户登录连接。

apt-get install ppp

一般服务器都是OK的,如果你的PPP没有安装成,记住我上面提供的另外两种安装方式。虽然我们现在还没有搭建起整个VPN,但是可以先在PPP中把要用来登录的用户名和密码先安排好:

vim /etc/ppp/chap-secrets

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

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

xl2tpd

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

 
apt-get install xl2tpd

安装好xl2tpd之后,我们进行配置。它的配置文件有两个,一个是/etc/xl2tpd/xl2tpd.conf一个是/etc/ppp/options.xl2tpd(也有可能没有,我们自己创建一个就可以),其实第一个文件把第二个文件包含进来而已。

vim /etc/xl2tpd/xl2tpd.conf

把下面的内容写进去:

 
[global]
ipsec saref = yes
listen-addr = xxx.xxx.xxx.xxx(你的服务器地址)
[lns default]
ip range = 192.168.1.2-192.168.1.100
local ip = 192.168.1.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
再配置vim /etc/ppp/options.xl2tpd

写入下面的内容:

ipcp-accept-local
ipcp-accept-remote
require-mschap-v2
ms-dns 114.114.114.114
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
mtu 1400
noccp
connect-delay 5000

这样,xl2tpd的配置就好了

sysctl

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

vim /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 --table nat --append POSTROUTING --jump MASQUERADE
iptables -t nat -A POSTROUTING -s 10.0.0.0/22 -o eth0 -j MASQUERADE
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -s 10.0.0.0/22 -j ACCEPT
iptables -I FORWARD -d 10.0.0.0/22 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1701 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
mkdir /etc/iptables
iptables-save > /etc/iptables/iptables.rules

启动 IPSEC 服务并检测 IPSEC 是否正常工作

/etc/init.d/ipsec start
#使用如下命令确认 ipsec 是否工作正常
ipsec verify
#注意:只要没有Faild就可以了

如果出现错误请参考以下命令

#错误1.Checking /bin/sh is not /bin/dash   [WARNING] 输入以下代码
dpkg-reconfigure dash
#按英文提示,选择no #错误2.pluto is running [FAILED]
/etc/init.d/ipsec start #错误3:NETKEY: Testing XFRM related proc values [FAILED]
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done #错误4:Pluto listening for IKE on udp 500 [FAILED]
apt-get install lsof #错误5:Hardware RNG detected, testing if used properly [FAILED]
apt-get install rng-tools 下面是正常的截图

最后重启 service ipsec restart

重启l2tp service xl2tpd restar

客户端连接测试 手机 win mac 使用l2tp协议

 

Ubuntu16.04的搭建l.2.t.p.d(宿舍访问公司内网)的更多相关文章

  1. 搭建SpringBoot服务器,在公司内网中使用

    搭建SpringBoot服务器,在公司内网中使用. 学习了:https://blog.csdn.net/z3881006/article/details/78902231 就是一个程序,托管于gith ...

  2. DNS:从零搭建公司内网DNS服务器

    写在前面的话 网上关于 DNS 的文章其实一搜索一大把,但是看别人的文档一般都会有个问题,乱,不讲究,全是 ctrl c + ctrl v,我个人是看不下去的.头皮发麻.所以决定自己来写写这方面的东西 ...

  3. Ubuntu16.04中搭建TFTP 和 NFS 服务器

    Ubuntu 16.04中搭建TFTP服务 1. 安装 $ apt-get install tftp-hpa tftpd-hpa   2. 建立目录 $ mkdir /tftpboot # 这是建立t ...

  4. 在 Ubuntu16.04 中搭建 Spark 单机开发环境 (JDK + Scala + Spark)

    1.准备 本文主要讲述如何在Ubuntu 16.04 中搭建 Spark 2.11 单机开发环境,主要分为 3 部分:JDK 安装,Scala 安装和 Spark 安装. JDK 1.8:jdk-8u ...

  5. 在ubuntu16.04上搭建视频服务器

    推荐方案三:超级简单 方案一.hls (缺陷:需要花很多时间切片) 1.Distributor ID: Ubuntu  Description: Ubuntu 16.04.3 LTS  Release ...

  6. Ubuntu16.04下搭建开发环境及编译tiny4412 Android系统【转】

    本文转载自:http://blog.csdn.net/songze_lee/article/details/72808631 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.安装ssh服务器 ...

  7. 公司内网Debian Server上的openvpnserver搭建并通过SSH隧道转发到广域网

    因为戴维营公司在长沙的学员,研发人员和北京的研发人员须要协同研发,故须要让北京的兄弟们增加到长沙办公室的内网,訪问版本号 管理server,于是採用在内网server上搭建一个OpenVPN服务,并把 ...

  8. 公司内网搭建代理DNS使用内网域名代替ip地址

    企业场景 一般在企业内部,开发.测试以及预生产都会有一套供开发以及测试人员使用的网络环境.运维人员会为每套环境的相关项目配置单独的Tomcat,然后开放一个端口,以 IP+Port 的形式访问.然而随 ...

  9. (转)Ubuntu 17.04_64上搭建巡风扫描系统(资产信息漏洞扫描内网神器)

    巡风简介 巡风是一款适用于企业内网的漏洞快速应急.巡航扫描系统,通过搜索功能可清晰的了解内部网络资产分布情况,并且可指定漏洞插件对搜索结果进行快速漏洞检测并输出结果报表.其主体分为两部分:网络资产识别 ...

随机推荐

  1. 剑指offer 20:顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  2. SparkStreaming和storm的区别

    这是2种不同的架构. 他们的区别是SparkStreaming的吞吐量非常高,秒级准实时处理,Storm是容错性非常高,毫秒级实时处理 解释:sparkStreaming是一次处理某个间隔的数据,比如 ...

  3. Mac遇到挖矿程序的应急方法

    Mac遇到挖矿程序应急的方法 工作笔记:   1.起因:监控发现jsonrpc挖矿报警,询问当事人描述当时情况是安装了sketch软件.   网上可以定位到该IOC   运行后该IOC流量依然可以观测 ...

  4. docker 简单介绍与安装

    主机虚拟化(vmware,visual box等) type-Ⅰ type=Ⅱ 主机虚拟化是隔离最彻底的,但是由于多隔了一个虚拟的操作系统,性能会慢一些. 容器虚拟化(docker等) 隔离没有主机虚 ...

  5. CodeForces-1257D (贪心+双指针)

    题意 https://vjudge.net/problem/CodeForces-1257D 你需要操作m个英雄去打败n只怪物,每个英雄的力量值为pi,可以打败si只怪物:每只怪物的力量值为ai. 当 ...

  6. Jmeter设置默认中文启动

    安装好jmeter,启动的页面是全英文,对于不熟悉jmeter的人来说,理解起来还是很困难的.如何设置成中文页面呢? 方法一:打开jmeter后,设置Options—choose language—C ...

  7. 炫酷的CSS3响应式表单

    原创YouTube@ Online Tutorials css代码: * { margin: 0; padding: 0; box-sizing: border-box; font-family: ' ...

  8. 第十二周Scrum会议

    本次照片 总结上周所达成的工作 做到的工作 1. 将前端页面进行了比较美观的美化 2. 实现了后台的代码的整合,同时将flask项目的整体框架搭建完成 3. 进行了数据库的建表等一些工作 遇到的难点 ...

  9. day82_10_31celery的使用

    1.缓存 当一些数据需要固定地且频繁访问数据库时,需要使用到接口缓存. 以轮播图为例,每个用户都会访问首页,首页的轮播图长时间不会改变,所以可以使用cache,将固定数据保存到缓存中(redis),第 ...

  10. 剑指Offer-16.合并两个排序的链表(C++/Java)

    题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 分析: 可以用一个新的节点,来去比较两个单调递增的链表当前节点的值,如果p1当前的值小于p2,则新 ...