当前位置:TranBon博客 > 首页 > 技术 > 搭建PPTP VPN服务.md

搭建PPTP VPN服务.md

adminis4年前 (2021-02-21)技术40170

一、简介

本文介绍在Centos操作系统如何搭建PPTP VPN服务。包括PPTP的安装、配置,以及相应的iptables/firewalld规则。之所以选择PPTP VPN,是考虑到客户端连接起来会比较方便。Linux Desktop、Windows还有Android这些终端原生都有连接PPTP的客户端。

二、PPTP的配置主要有下面五个步骤

  • 验证内核是否加载了MPPE模块

  • 安装所需的软件包

  • 配置PPP和PPTP的配置文件

  • 打开内核的IP转发功能

  • 启动pptpd守护进程

  • 配置iptables防火墙放行和转发规则

下面的所有配置操作都需要root权限,如无特别说明,所有命令都在root的家目录下执行。

Step1: 验证内核是否加载了MPPE模块

内核的MPPE模块用于支持Microsoft Point-to-Point Encryption。Windows自带的VPN客户端就是使用这种加密方式,主流的Linux Desktop也都有MPPE支持。其实到了我们这个内核版本,默认就已经加载了MPPE,只需要使用下面命令验证一下,显示"MPPE ok"即可:

modprobe ppp-compress-18 && echo MPPE is ok

Step2: 安装额外epel仓库

CentOS6:

rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm

CentOS7:

rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

Step3: 安装所需的软件包

yum install ppp pptpd -y

PPTP使用PPP协议对用户数据进行封装,然后将PPP数据帧封装在IP数据报里,经由IP网络传播。因此首先需要支持PPP协议,我们使用的完整版CentOS已经自带了ppp这个软件包,如果你安装的是Minial CentOS之类的精简系统,则可能需要自行安装ppp,因为系统yum可以解决软件包的依赖关系,我们直接安装我们最终目的的软件包即可。

Step4: 配置PPP和PPTP的配置文件

2.4.1修改 /etc/ppp/options.pptpd ,这个文件需要配置的不多,我们只需指定dns服务器即可。

vi /etc/ppp/options.pptpd

如果服务器在国内,使用阿里DNS:

ms-dns 223.5.5.5
ms-dns 223.6.6.6

如果服务器在中国大陆以外,使用Google公共DNS服务:

ms-dns 8.8.8.8
ms-dns 8.8.4.4

2.4.2修改 /etc/pptpd.conf

vi /etc/pptpd.conf

确保有以下内容

option /etc/ppp/options.pptpd
logwtmp
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

option /etc/ppp/options.pptpd指定使用/etc/ppp/options.pptpd中的配置,默认已经开启

logwtmp表示使用WTMP日志,默认已经开启

localip把前面的#删除。这是拨入vpn后的网关,localip会在pptpd服务器的ppp0网卡产生

remoteip把前面的#删除。这是vpn服务器分配给客户端的地址池,remoteip在客户端拨入后产生配置在ppp0接口中

2.4.3修改 /etc/ppp/chap-secrets ,存储着用户账户的文件,这个文件非常简单,其中用明文存储VPN客户的用户名、服务名称、密码和IP地址范围,每行一个账户:

vi /etc/ppp/chap-secrets
username1    pptpd    passwd1    *
username2    pptpd    passwd2    *

其中第一第三列分别是用户名和密码;第二列应该和上面的文件/etc/ppp/options.pptpd中name后指定的服务名称一致;最后一列限制客户端IP地址,星号表示没有限制。

2.4.4设置MTU大小

vi /etc/ppp/ip-up

在文件倒数第二行,即exit 0上一行添加如下内容

ifconfig ppp0 mtu 1492

2.4.5修改内核文件,支持ipv4路由转发

CentOS6:

vi /etc/sysctl.conf

net.ipv4.ip_forward=0

改成

net.ipv4.ip_forward=1

马上生效

sysctl -p

CentOS7:

vi /etc/sysctl.conf

在文件最后一行添加以下内容

net.ipv4.ip_forward=1

马上生效

sysctl -p

Step5:配置防火墙

2.5.1允许PPTP与GRE流量进入,并且做NAT

firewalld的配置

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p gre -j ACCEPT
firewall-cmd --permanent --zone=public --add-port=1723/tcp
firewall-cmd --permanent --zone=public --add-masquerade

iptables的配置

iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

2.5.2调整TCP MSS值,为转发TCP流量作优化

iptables的配置

iptables -A FORWARD -p tcp --syn -s 192.168.0.0/24 -j TCPMSS --set-mss 1356
iptables -t mangle -I POSTROUTING -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle  -A FORWARD  -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
保存重启防火墙
service iptables save
service iptables reload

firewalld的配置

firewall-cmd --permanent  --direct --add-rule ipv4  filter POSTROUTING 0 -p tcp -i gre+ -j TCPMSS --syn --set-mss 1356
firewall-cmd --permanent   --direct --add-rule ipv4 mangle FORWARD 0 -p tcp -i gre+ -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
重新加载配置
firewall-cmd --reload

三、启动pptpd守护进程

CentOS6:

service pptpd start
chkconfig pptpd --level 345 on

CentOS7:

systemctl start pptpd.service
systemctl enable pptpd.service

四、使用另一台CentOS作为Client端拔号:

4.1安装客户端所需

yum install -y ppp pptp pptp-setup net-tools

4.2拔号测试,用户名username1,密码passwd1

pptpsetup --create myvpn --server pptp_server --username username1 --password passwd1 --encrypt -start

4.3在客户端上检查

ifconfig

看看有没有ppp0接口

如果有ppp0,ping对端私网IP

ping 192.168.0.1

如果通了,就证明能拔号了,用Windows自带的拔号程序试试

5、排错

如何开启pptpd默认日志记录功能。

修改/etc/ppp/options.pptpd中的nologfd,默认没有开,把nologfd注释掉,然后添加 logfile /var/log/pptpd.log(将nologfd改成这个,在这个日志里就可以查到pptpd日志)

修改后重启下pptpd服务,就可以了
CentOS6:

service pptpd restart

CentOS7:

systemctl restart pptpd.service

查看PPTP服务的日志

cat /var/log/pptpd.log


有道云笔记 https://note.youdao.com/ynoteshare/index.html?id=a897b9cfdbcae082ab61923ec1d1d748

第4条随机版权
文章免责声明
尊敬的读者:

本文所提供的信息、观点及数据均来源于公开资料、相关研究报告及个人理解,仅供读者参考。本文不代表任何官方立场或专业机构的意见,亦不构成任何投资建议或决策依据。

在撰写本文时,我们已尽力确保信息的准确性和完整性,但鉴于信息来源的多样性及可能存在的误差,我们无法保证本文所述内容在任何时刻都绝对准确无误。因此,读者在阅读本文时,应结合自身实际情况及专业知识,进行独立分析和判断。

对于因本文信息不准确、不完整或读者自身理解偏差而导致的任何损失或损害,我们概不负责。同时,我们也不承担因本文所述内容引发的任何法律责任或纠纷。

此外,本文可能包含对特定公司、行业或市场的分析和预测,这些分析和预测均基于当前市场环境及可获得的信息,并可能受到多种因素的影响而发生变化。因此,读者在参考本文时,应充分考虑这些潜在的风险和不确定性。

我们鼓励读者在阅读本文后,进一步查阅相关资料和咨询专业人士,以获取更全面、准确的信息和建议。同时,我们也欢迎读者就本文内容提出宝贵的意见和建议,以便我们不断改进和提升文章质量。

最后,感谢读者对本文的关注和阅读。我们希望通过提供有价值的信息和观点,为读者在相关领域的学习和决策提供一定的帮助和参考。但请务必记住,本文所述内容仅供参考,不构成任何具体建议或承诺。

特此声明。

扫描二维码推送至手机访问。

版权声明:本文由TranBon博客发布,如需转载请注明出处。

本文链接:https://bk.tranbon.com/?id=275

“搭建PPTP VPN服务.md” 的相关文章

centos固定网卡、网卡名会变、网卡名错乱,解决方法

centos固定网卡、网卡名会变、网卡名错乱,解决方法

cd /etc/udev/rules.d/ vi /etc/udev/rules.d/70-persistent-net.rules echo "SUBSYSTEM==\"net\", ACTION==\"add\", DRIVERS==\&...

SSR 一键部署脚本

一个逗比写的逗比脚本ssr.sh脚本说明: ShadowsocksR 一键安装/管理脚本,支持单端口/多端口切换和管理系统支持: CentOS6+ / Debian6+ / Ubuntu14+使用方法: https://doub.io/ss-jc42/项目地址: https://...

cnetos系统mysql配置my.cnf文件,跳过密码认证登录并设置远程登录(不一定有效)

cnetos系统mysql配置my.cnf文件,跳过密码认证登录并设置远程登录(不一定有效)

cnetos手动安装mysql没有my.cnf配置文件时,1.可以从其它服务器把my.cnf文件拷贝到需要的服务器上,2.可以touch创建my.cnf文件这边是直接使用touch命令my.cnf文件的,创建在/etc/目录下[root@host ~]#  touch&...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。