Centos7搭建PPTP,并实现拨号内网端口映射!

工作   2025-07-10 13:39   31   0  

注意事项

本协议属于VPN,因此如果您部署的是云服务器,请确保服务商是否允许搭建或提前咨询服务商说明用途,避免产生误解。本文章只提供搭建此VPN教程。

云服务器部署要求

  • 支持开放TCP:1723端口(必须)

  • 支持CentOS 7 系统(必须)

一、安装PPTP

1.安装PPTP服务

终端输入指令

yum install -y ppp pptpd

回显如下图所示,表示PPTP服务端安装成功。


2. 设置网关和IP范围

执行vi /etc/pptpd.conf命令, 编辑配置文件,删除命令前面的“#”,使下列两行命令可以执行。输入:wq命令保存退出。

vi /etc/pptpd.conf

localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245

localip和remoteip分别是VPN的网关地址和VPN拨号时获取的地址段。;请确保修改符合规定,注意网关和分配地址应当处于同一个IP端


3. 修改DNS(可选)

执行vi /etc/ppp/options.pptpd命令,找到ms-dns并修改为223.5.5.5223.6.6.6删除命令前面的“#”。输入:wq命令保存退出。

vi /etc/ppp/options.pptpd
IP地址223.5.5.5和223.6.6.6是阿里云的公共DNS服务器地址,您可以根据需要调整为其它公共DNS服务地址。

4. 创建用户

执行vi /etc/ppp/chap-secrets命令,设置pptpd的用户名和密码。根据需要添加账号,一行只添加一个用户账号。按照用户名 pptpd 密码 IP地址格式输入,每一项用空格隔开。输入:wq命令保存退出。

vi /etc/ppp/chap-secrets


“*”代表分此用户的IP,如果需要固定此用户IP可以输入。否则将代表自动分配,并且支持多用户同时连接,请注意如果自动分配的IP可能会随时变动。

5. 设置MTU(建议)

本人测试如果不设置MTU也能正常打开网页,但是为了不出其它情况建议进行设置。

执行vi /etc/ppp/ip-up命令,设置最大传输单元MTU。在命令符[ -x /etc/ppp/ip-up.local ] && /etc/ppp/ip-up.local “$@”下方添加ifconfig ppp0 mtu 1472

1.终端输入

vi /etc/ppp/ip-up

2.添加命令

ifconfig ppp0 mtu 1472



6. 开启内核网络转发

执行vi /etc/sysctl.conf命令,编辑配置文件,添加net.ipv4.ip_forward = 1配置,输入:wq命令保存退出。

1.终端输入

vi /etc/sysctl.conf

2.添加命令

net.ipv4.ip_forward = 1

执行sysctl -p命令,使修改后的参数生效。

3.终端输入

sysctl -p

二、安装并配置防火墙及NAT

1.安装防火墙(如有无需执行)

yum install iptables-services

2. 配置NAT规则

以下命令中的IP,如果修改过地址段,也需要同步修改

2.1 终端输入

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

2.2 终端输入(可选)

iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j SNAT --to-source <外网网卡IP>
外网网卡IP可以输入 ifconfig 查看 大部分云服务器采用VPC网络,一般服务器网卡显示的为内网IP,同时这条规则就是将VPN网址转发至外网网卡以确保VPN用户可以联网

2.3 执行如下命令,保存设置。

service iptables save

2.4 客户端之间互相通信(可选)

终端输入

iptables -A FORWARD -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT

三、重启PPTP

如果对PPTP配置文件做修改包括增加用户,必须重启才可以生效,绝大部分用户后期连不上都是因为没有重启PPTP。

终端输入

systemctl restart pptpd


四、设置开机自启

依次执行如下命令,设置pptpd和iptables自启动。

systemctl enable pptpd.service
systemctl enable iptables.service

五、拨号IP端口映射

1.安装iptables服务

  yum -y install iptables-services

2.将相关模块加载到内核中(永久添加)

  cat >>/etc/rc.local<<EOF
  modprobe ip_tables
  modprobe iptable_filter
  modprobe iptable_nat
  modprobe ip_conntrack
  modprobe ip_conntrack_ftp
  modprobe ip_nat_ftp
  modprobe ipt_state
  EOF

3.检查是否启动完成

  lsmod |egrep 'filter|nat|ipt'

  必须有:iptable_nat 和 iptable_filter

4.关闭firewalld防火墙  --- cenos6好像默认没有这个服务,这一步就可以省略

  systemctl stop firewalld

  systemctl disable firewalld

  systemctl status firewalld  --- 检查一下

5.开启iptables服务

  systemctl start iptables.service

  systemctl enable iptables.service

  systemctl status iptables.service  --- 检查一下

7.添加端口映射

       固定公网IP映射,分两个步骤,举例:公网IP:10.10.10.1 服务器内网IP:192.168.7.1,PPTP拨号IP:192.168.0.1

       第一步首先将服务器内网网卡的IP地址进行端口映射,

       第二步将PPTP拨号获取到的IP地址映射到服务器内网网卡IP上

       先将192.168.0.1端口映射到服务器内网192.168.7.1上,然后将192.168.7.1上的端口映射到公网IP10.10.10.1,以下为映射命令       

       iptables -t nat -A PREROUTING -d <公网固定> -p tcp --dport <对外端口> -j DNAT --to-destination 服务器内部IP:内部端口

       iptables -t nat -A PREROUTING -d <服务器内部IP> -p tcp --dport <对外端口> -j DNAT --to-destination PPTP拨号IP:内部端口


下一篇
没有了