文档章节

Ubuntu Server下建立VPN服务器的方法

lwaif
 lwaif
发布于 2015/12/30 11:45
字数 4038
阅读 128
收藏 7

以 root 账户登录 VPS,或者当你运行下列命令提示权限不够时,加上 sudo 再运行。
安装 PPTPD:
编辑 /etc/pptpd.conf 文件,取消注释以下 2 行:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
添加 PPTP 账户:
编辑 /etc/ppp/chap-secrets 文件,按如下格式添加:
用户名 pptpd "密码" 允许接入的IP
其中密码要用引号包围。允许任何 IP 接入则用 * 号表示。
设置 DNS 服务器:
编辑 /etc/ppp/pptpd-options 文件,找到 ms-dns 部分来修改,我使用的是 Google 的:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
开启 IP 转发:
编辑 /etc/sysctl.conf 文件,取消注释该行:
net.ipv4.ip_forward=1
然后运行这行代码使配置生效:
sysctl -p
安装 iptables:
apt-get install iptables
iptables -t nat -I POSTROUTING -j MASQUERADE
重启 pptpd:

/etc/init.d/pptpd restart

 

 

首先,我所有的操作都是在之前文章中介绍的 Ubuntu 8.04 Server 系统中操作的,如果您的系统和我的不一样,请参考之前的两篇文章。我的服务器环境是单网卡 eth0。


在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装:
sudo apt-get install pptpd


系统会自动解决依赖关系,安装好后,需要进行一番设置。首先编辑 /etc/pptpd.conf
sudo nano /etc/pptpd.conf


去掉文件最末端的 localip 和 remoteip 两个参数的注释,并进行相应修改。这里,localip 是 VPN 连通后服务器的 ip 地址,而 remoteip 则是客户端的可分配 ip 地址。下面是我的配置:
localip 10.100.0.1 remoteip 10.100.0.2-10


编辑好这个文件后,我们需要编辑 /etc/ppp/pptpd-options 文件,还是用 nano 编辑,命令这里就不写了。这里绝大多数参数只需维持原来的默认值即可,我们只需要改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:
ms-dns 202.113.16.10 ms-dns 208.67.222.222


修改 /etc/ppp/chap-secrets 文件,这里面存放着 VPN 的用户名和密码,根据你的实际情况填写即可。如文件中注释所示,第一列是用户名,第二列是服务器名(默认写 pptpd 即可,如果在 pptpd-options 文件中更改过的话,注意这里保持一致),第三列是密码,第四列是 IP 限制(不做限制写 * 即可)。这里我就不贴我的配置了


全部搞定后,我们需要重启 pptpd 服务使新配置生效:
sudo /etc/init.d/pptpd restart


找一台 Windows 电脑,新建个 VPN 链接,地址填服务器的 IP(或域名),用户名密码填刚才设置好的,域那项空着(如果你在 pptpd-options 中设置了,这里就保持一致),点连接就可以了。正常情况下您应该能够建立与服务器的 VPN 链接了。


建立连接之后,您会发现除了可以访问服务器的资源,其余内外和互联网的内容均无法访问。如果需要访问这些内容的话,我们还需要进一步设置:


首先,开启 ipv4 forward。方法是,修改 /etc/sysctl.conf,找到类似下面的行并取消它们的注释:
net.ipv4.ip_forward=1


然后使新配置生效:
sudo sysctl -p


有些时候,经过这样设置,客户端机器就可以上网了(我在虚拟机上这样操作后就可以了)。但我在实验室的服务器上这样操作后仍然无法访问网络,这样我们就需要建立一个 NAT。这里我们使用强大的 iptables 来建立 NAT。首先,先安装 iptables:
sudo apt-get intall iptables


装好后,我们向 nat 表中加入一条规则:
sudo iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE


这样操作后,客户端机器应该就可以上网了。


但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:
sudo iptables-save > /etc/iptables-rules


然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:
pre-up iptables-restore < /etc/iptables-rules


这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。


到此,一个 VPN Server/Gateway 基本就算架设完毕。当然,也许你按照我的方法做了,还是无法成功,那么下面总结一些我碰到的问题和解决方案:
无法建立 VPN 连接


安装好 pptpd 并设置后,客户端还是无法建立到服务器的连接。造成的原因可能有以下几种:
服务器端的防火墙设置:PPTP 服务需要使用 1723(tcp) 端口和 gre 协议,因此请确保您的防火墙设置允许这两者通行。
如果服务器在路由器后面,请确保路由器上做好相应的设置和端口转发。
如果服务器在路由器后面,那么请确保你的服务器支持 VPN Passthrough。
如果客户端在路由器后面,那么客户端所使用的路由器也必须支持 VPN Passthrough。其实市面上稍微好点的路由器都是支持 VPN Passthrough 的,当然也不排除那些最最最便宜的便宜货确实不支持。当然,如果你的路由器可以刷 DD-Wrt 的话就刷上吧,DD-Wrt 是支持的。
能建立链接,但“几乎”无法访问互联网


这里我使用“几乎”这个词,是因为并不是完全不能访问互联网。症状为,打开 Google 搜索没问题,但其它网站均无法打开;SSH 可用,但 scp 不行;ftp 能握手,但传不了文件。我就遇到了这种情况,仔细 Google 后发现原来是 MTU 的问题,用 ping 探测了一下果然是包过大了。知道问题就好办了,我们可以通过 iptables 来修正这一问题。具体原理就不讲了,需要的自己 Google。这里只说解决方案,在 filter 表中添加下面的规则:
sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200


上面规则中的 1200 可以根据你的实际情况修改,为了保证最好的网络性能,这个值应该不断修改,直至能保证网络正常使用情况下的最大值。


好了,至此,一台单网卡 pptp-server 就算完成了。


################### Separate Line #################


[操作成功,推荐]


以下是另一篇写得很简洁的解决方法,帮我解决了不少问题:


PS:找不到原文出处了,所以就不写从哪里引用了


1)安装PPtPD
sudo apt-get install pptpd


2)编辑文件 /etc/pptpd.conf
gedit /etc/pptpd.conf


取消以下内容中的文件注释(也就是去掉语句前面的#号)
option /etc/ppp/pptpd-option
debug
logwtmp
localip 10.100.0.1 这个IP是自己自定义的
remoteip 10.100.0.2-10 表示分配给客户端的IP及IP数量


3)编辑文件 /etc/ppp/pptpd-options
gedit /etc/ppp/pptpd-options


这里我们只改变两个地方
3.1 name pptp
其中标红的部份可以按你自己的需要改成你自己喜欢的服务器名


3.2VPN客户端分配的DNS
ms-dns 202.96.128.86
ms-dns 202.96.128.133
我们这里以广东东莞电信的DNS做例子


4)编辑文件 /etc/ppp/chap-secrets
gedit /etc/ppp/chap-secrets


这个文件是存储VPN客户端用户名和密码的地方我们以用户名kelvin密码abc 来做例子


在文件的最后加入以下一行


kelvin * abc *
其中第一个*表示默认服务器名称
第二个*表示自动分配客户端IP,当然你也可以手动找定


5)IP转发设置
编辑 /etc/sysctl.conf
gedit /etc/sysctl.conf


找到以下内容取消注释
net.ipv4.ip-forward=1


保存后在终端中运行 sudo sysctl -p 使配置生效


6)防火墙设置


编辑 /etc/default/ufw
找到以下语句改成一样的
DEFAULT_FORWARD_POLICY="ACCEPT"
保存文件
在终端中输入sudo ufw allow 1723/tcp (打开TCP1723端口)
sudo ufw allow 47/tcp (打开TCP47端口)


同时也在路由器中打开这两个端口


7)重启PPtp服务 sudo /etc/init.d/pptpd restart
重启防火墙 sudo /etc/init.d /ufw
重启计算机 reboot


8)备注Linux下架设的VPN与WIN的有点差别,差别在于客户端要在外网IP段不同的子网内拨号才能成功,如服务器IP为192.168.1.248 则客户端IP如果是192.168.1.XX的话
就拨号不成功了。

 

Ubuntu 安装和配置 PPTP VPN

Nov 11,2012 in Linux lang read (2322)

首先,我所有的操作都是在之前文章中介绍的 Ubuntu 8.04 Server 系统中操作的,如果您的系统和我的不一样,请参考之前的两篇文章。我的服务器环境是单网卡 eth0。

在 Ubuntu 中建立 pptp server 需要的软件包为 pptpd,用 apt-get 即可安装:
sudo apt-get install pptpd

系统会自动解决依赖关系,安装好后,需要进行一番设置。首先编辑 /etc/pptpd.conf
sudo nano /etc/pptpd.conf

去掉文件最末端的 localip 和 remoteip 两个参数的注释,并进行相应修改。这里,localip 是 VPN 连通后服务器的 ip 地址,而 remoteip 则是客户端的可分配 ip 地址。下面是我的配置:
localip 10.100.0.1 remoteip 10.100.0.2-10

编辑好这个文件后,我们需要编辑 /etc/ppp/pptpd-options 文件,还是用 nano 编辑,命令这里就不写了。这里绝大多数参数只需维持原来的默认值即可,我们只需要改变其中的 ms-dns 选项,为 VPN 客户端指派 DNS 服务器地址:
ms-dns 202.113.16.10 ms-dns 208.67.222.222

修改 /etc/ppp/chap-secrets 文件,这里面存放着 VPN 的用户名和密码,根据你的实际情况填写即可。如文件中注释所示,第一列是用户名,第二列是服务器名(默认写 pptpd 即可,如果在 pptpd-options 文件中更改过的话,注意这里保持一致),第三列是密码,第四列是 IP 限制(不做限制写 * 即可)。这里我就不贴我的配置了

全部搞定后,我们需要重启 pptpd 服务使新配置生效:
sudo /etc/init.d/pptpd restart

找一台 Windows 电脑,新建个 VPN 链接,地址填服务器的 IP(或域名),用户名密码填刚才设置好的,域那项空着(如果你在 pptpd-options 中设置了,这里就保持一致),点连接就可以了。正常情况下您应该能够建立与服务器的 VPN 链接了。

建立连接之后,您会发现除了可以访问服务器的资源,其余内外和互联网的内容均无法访问。如果需要访问这些内容的话,我们还需要进一步设置:

首先,开启 ipv4 forward。方法是,修改 /etc/sysctl.conf,找到类似下面的行并取消它们的注释:
net.ipv4.ip_forward=1

然后使新配置生效:
sudo sysctl -p

有些时候,经过这样设置,客户端机器就可以上网了(我在虚拟机上这样操作后就可以了)。但我在实验室的服务器上这样操作后仍然无法访问网络,这样我们就需要建立一个 NAT。这里我们使用强大的 iptables 来建立 NAT。首先,先安装 iptables:
sudo apt-get intall iptables

装好后,我们向 nat 表中加入一条规则:
sudo iptables -t nat -A POSTROUTING -s 10.100.0.0/24 -o eth0 -j MASQUERADE

这样操作后,客户端机器应该就可以上网了。

但是,只是这样,iptables 的规则会在下次重启时被清除,所以我们还需要把它保存下来,方法是使用 iptables-save 命令:
sudo iptables-save > /etc/iptables-rules

然后修改 /etc/network/interfaces 文件,找到 eth0 那一节,在对 eth0 的设置最末尾加上下面这句:
pre-up iptables-restore < /etc/iptables-rules

这样当网卡 eth0 被加载的时候就会自动载入我们预先用 iptables-save 保存下的配置。

到此,一个 VPN Server/Gateway 基本就算架设完毕。当然,也许你按照我的方法做了,还是无法成功,那么下面总结一些我碰到的问题和解决方案:
无法建立 VPN 连接

安装好 pptpd 并设置后,客户端还是无法建立到服务器的连接。造成的原因可能有以下几种:
服务器端的防火墙设置:PPTP 服务需要使用 1723(tcp) 端口和 gre 协议,因此请确保您的防火墙设置允许这两者通行。
如果服务器在路由器后面,请确保路由器上做好相应的设置和端口转发。
如果服务器在路由器后面,那么请确保你的服务器支持 VPN Passthrough。
如果客户端在路由器后面,那么客户端所使用的路由器也必须支持 VPN Passthrough。其实市面上稍微好点的路由器都是支持 VPN Passthrough 的,当然也不排除那些最最最便宜的便宜货确实不支持。当然,如果你的路由器可以刷 DD-Wrt 的话就刷上吧,DD-Wrt 是支持的。
能建立链接,但 “几乎” 无法访问互联网

这里我使用 “几乎” 这个词,是因为并不是完全不能访问互联网。症状为,打开 Google 搜索没问题,但其它网站均无法打开;SSH 可用,但 scp 不行;ftp 能握手,但传不了文件。我就遇到了这种情况,仔细 Google 后发现原来是 MTU 的问题,用 ping 探测了一下果然是包过大了。知道问题就好办了,我们可以通过 iptables 来修正这一问题。具体原理就不讲了,需要的自己 Google。这里只说解决方案,在 filter 表中添加下面的规则:
sudo iptables -A FORWARD -s 10.100.0.0/24 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1200

上面规则中的 1200 可以根据你的实际情况修改,为了保证最好的网络性能,这个值应该不断修改,直至能保证网络正常使用情况下的最大值。

好了,至此,一台单网卡 pptp-server 就算完成了。

################### Separate Line #################

[操作成功, 推荐]

以下是另一篇写得很简洁的解决方法,帮我解决了不少问题:

PS:找不到原文出处了,所以就不写从哪里引用了

1) 安装 PPtPD
sudo apt-get install pptpd

2) 编辑文件 /etc/pptpd.conf
gedit /etc/pptpd.conf

取消以下内容中的文件注释(也就是去掉语句前面的 #号)
option /etc/ppp/pptpd-option
debug
logwtmp
localip 10.100.0.1 这个 IP 是自己自定义的
remoteip 10.100.0.2-10 表示分配给客户端的 IP 及 IP 数量

3)编辑文件 /etc/ppp/pptpd-options
gedit /etc/ppp/pptpd-options

这里我们只改变两个地方
3.1 name pptp
其中标红的部份可以按你自己的需要改成你自己喜欢的服务器名

3.2VPN 客户端分配的 DNS
ms-dns 202.96.128.86
ms-dns 202.96.128.133
我们这里以广东东莞电信的 DNS 做例子

4)编辑文件 /etc/ppp/chap-secrets
gedit /etc/ppp/chap-secrets

这个文件是存储 VPN 客户端用户名和密码的地方我们以用户名 kelvin 密码 abc 来做例子

在文件的最后加入以下一行

kelvin * abc *
其中第一个 * 表示默认服务器名称
第二个 * 表示自动分配客户端 IP,当然你也可以手动找定

5)IP 转发设置
编辑 /etc/sysctl.conf
gedit /etc/sysctl.conf

找到以下内容取消注释
net.ipv4.ip-forward=1

保存后在终端中运行 sudo sysctl -p 使配置生效

6)防火墙设置

编辑 /etc/default/ufw
找到以下语句改成一样的
DEFAULT_FORWARD_POLICY="ACCEPT"
保存文件
在终端中输入 sudo ufw allow 1723/tcp (打开 TCP1723 端口)
sudo ufw allow 47/tcp (打开 TCP47 端口)

同时也在路由器中打开这两个端口

7)重启 PPtp 服务 sudo /etc/init.d/pptpd restart
重启防火墙 sudo /etc/init.d /ufw
重启计算机 reboot

8) 备注 Linux 下架设的 VPN 与 WIN 的有点差别,差别在于客户端要在外网 IP 段不同的子网内拨号才能成功,如服务器 IP 为 192.168.1.248 则客户端 IP 如果是 192.168.1.XX 的话
就拨号不成功了。

本文转载自:

共有 人打赏支持
lwaif
粉丝 6
博文 142
码字总数 19347
作品 0
深圳
私信 提问
加载中

评论(1)

lwaif
lwaif
LINUX下搭建VPN

一、准备

  需要 dkms-2.0.17.5-1.noarch.rpm、ppp-2.4.5-33.0.rhel6.x86_64.rpm、pptpd-1.4.0-1.el6.x86_64.rpm,并依次安装,安装命令为 rpm -ivh

  安装过程中,可能遇到的问题是 ppp 和 pptpd 的版本不兼容,这块试了很多次,但上面三个包是测试兼容的。所有包的下载地址可以参考:http://poptop.sourceforge.net/yum/stable/packages/



二、配置VPN服务器

1、编辑 /etc/pptpd.conf 文件,在最后追加以下内容:

debug
ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
localip 填写本机的IP地址
remoteip 192.168.0.2-4

2、编辑 /etc/ppp/chap-secrets,这里增加VPN的帐号密码和允许连入的主机IP,如:

# Secrets for authentication using CHAP
# client server secret IP addresses
用户名 pptpd 密码 *
用户名 pptpd 密码 192.168.0.1
用户名 pptpd 密码 192.168.0.2

3、启动服务

service pptpd start

  启动之后,可以通过 netstat -ntpl 查看 1723 端口是否处于监听状态,pptpd 使用 1723 端口,所以防火墙注意打开此端口的相关权限。

4、设置NAT并打开Linux内核路由功能,如果不进行此操作,客户端能够连入VPN,但却不能上网。依次执行如下命令:

iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.0.2/24 -j SNAT --to 本机的IP地址
echo 1 > /proc/sys/net/ipv4/ip_forward
在Ubuntu中配置可供Windows主机访问的VPN服务器

在Ubuntu中配置可供Windows主机访问的VPN服务器 [日期:2010-01-15] 来源:xiaogaozi.blogspot.com 作者:xiaogaozi [字体:大 中 小] VPN (Virtual Private Network, 虚拟专用网) 是一种在现...

雕栏玉砌
2014/04/06
0
0
ubuntu单网卡建立vpn服务器

在 Ubuntu 上搭建 VPN 服务器的方法非常多,比较著名的有 PPTP, L2TP/IPSec 和 OpenVPN。这三种方式中后两者的安全性比较好,但配置较麻烦。其中 OpenVPN 在 Windows/Mac 平台上还需要额外的...

听风吟
2012/08/23
0
0
IPsec VPN 服务器一键安装脚本

使用 Linux 脚本一键快速搭建自己的 IPsec VPN 服务器。支持 IPsec/L2TP 和 Cisco IPsec 协议,可用于 Ubuntu/Debian/CentOS 系统。你只需提供自己的 VPN 登录凭证,然后运行脚本自动完成安装...

Kefy
06/29
0
0
Ubuntu命令行下VPN连接与使用

哥实际测试了下 发现 这样不能脸上 windows 上建立的 VPN。。。 http://zhjack.blog.163.com/blog/static/143149201010411442642 1)先安装VPN客户端 sudoapt-getinstall pptp-linux 2)命令...

sincoder
2013/01/11
0
0
ubuntu上搭建openvpn

本次ubuntu的版本 root@node2:~# lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 12.04.5 LTSRelease: 12.04Codename: precise ip地址 root@node2......

yaoliang833
2016/12/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

deepin中配置robot framework环境

本文永久更新地址:https://my.oschina.net/bysu/blog/2989005 【若要到岸,请摇船:开源中国 不最醉不龟归】 1.在终端中输入pip,回车,如果提示没有该命令,则先安转pip sudo apt-get inst...

不最醉不龟归
22分钟前
2
0
OSChina 周日乱弹 —— 钱不还,我就当你人不在了

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享Bigleaf的单曲《小鹿》 《小鹿》- Bigleaf 手机党少年们想听歌,请使劲儿戳(这里) 周日在家做什么? 做手工呀, @poorfis...

小小编辑
今天
91
3
EOS docker开发环境

使用eos docker镜像是部署本地EOS开发环境的最轻松愉快的方法。使用官方提供的eos docker镜像,你可以快速建立一个eos开发环境,可以迅速启动开发节点和钱包服务器、创建账户、编写智能合约....

汇智网教程
今天
20
0
《唐史原来超有趣》的读后感优秀范文3700字

《唐史原来超有趣》的读后感优秀范文3700字: 作者:花若离。我今天分享的内容《唐史原来超有趣》这本书的读后感,我将这本书看了一遍之后就束之高阁了,不过里面的内容一直在在脑海中回放,...

原创小博客
今天
29
0
IC-CAD Methodology知识图谱

CAD (Computer Aided Design),计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作,这个定义同样可以用来近似描述IC公司CAD工程师这个岗位的工作。 早期IC公司的CAD岗位最初...

李艳青1987
今天
38
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部