凌峰创科服务平台

CentOS 6 VPN服务器搭建步骤是怎样的?

CentOS 6 VPN服务器搭建步骤是怎样的?-图1
(图片来源网络,侵删)
  1. CentOS 6 已停止维护 (EOL):这意味着它不再接收安全更新,存在严重的安全风险。强烈建议您在生产环境中升级到 CentOS 7/8 或其他仍在维护的操作系统(如 Rocky Linux, AlmaLinux, Ubuntu LTS 等),本文档仅适用于学习、测试或无法升级的遗留环境。
  2. PPTP 协议不安全:PPTP (Point-to-Point Tunneling Protocol) 是一种较老的 VPN 协议,已被证明存在安全漏洞,它容易被破解,不适合处理敏感数据,如果可能,请优先考虑使用更安全的协议,如 L2TP/IPsecOpenVPN,本教程将专注于 PPTP,因为它在 CentOS 6 上配置相对简单。

第一步:准备工作

  1. 一台 CentOS 6 服务器:确保你有服务器的 root 权限或具有 sudo 权限的用户。

  2. 服务器公网 IP 地址:你的服务器必须有一个可公开访问的 IP 地址。

  3. 防火墙和 SELinux:这是在 CentOS 上最常遇到的问题,我们会详细处理。

  4. 更新系统:将系统更新到最新状态。

    CentOS 6 VPN服务器搭建步骤是怎样的?-图2
    (图片来源网络,侵删)
    # 切换到 root 用户
    sudo -i
    # 更新所有已安装的包
    yum update -y

第二步:安装 PPTP 服务

CentOS 6 的官方软件源中包含了 pptpd 包,我们可以直接使用 yum 安装。

yum install -y pptpd

安装完成后,pptpd 服务会自动启动,但为了确保,我们可以手动启动它并设置为开机自启:

# 启动 PPTP 服务
service pptpd start
# 设置开机自启
chkconfig pptpd on

第三步:配置 PPTP 服务器

PPTP 的主要配置文件是 /etc/pptpd.conf,我们需要编辑这个文件来定义 VPN 客户端可以获取的 IP 地址池。

# 使用 vi 或 nano 编辑器打开配置文件
vi /etc/pptpd.conf

找到并修改以下两行(如果被注释了,请取消注释):

CentOS 6 VPN服务器搭建步骤是怎样的?-图3
(图片来源网络,侵删)
# 将 localip 设置为服务器的内网 IP(如果服务器有)或保留为 0.0.0.0
localip 192.168.0.1
# 将 remoteip 设置为分配给 VPN 客户端的 IP 地址池
# 这个地址池不能与你服务器所在网络的网段冲突
remoteip 192.168.0.234-238

解释:

  • localip:PPTP 服务器在 VPN 隧道内使用的 IP 地址,通常使用一个内网 IP 即可。
  • remoteip:VPN 客户端连接成功后,从这个地址池中动态获取一个 IP 地址。168.0.234-238 表示可以分配 5 个 IP 地址给客户端。

保存并退出文件(在 vi 中是 wq)。


第四步:配置 DNS 和客户端 IP 地址

这个配置文件用于告诉客户端如何解析域名(DNS),以及是否让客户端使用服务器分配的 IP 地址。

编辑 /etc/ppp/options.pptpd 文件:

vi /etc/ppp/options.pptpd

找到以下两行,确保它们没有被注释,并修改为你需要的 DNS 服务器(推荐使用 Google DNS 或 Cloudflare DNS):

#ms-dns 10.0.0.1       # 这行可以注释掉或替换
ms-dns 8.8.8.8
ms-dns 8.8.4.4
# 或者使用 Cloudflare DNS
# ms-dns 1.1.1.1
# ms-dns 1.0.0.1

保存并退出。


第五步:创建 VPN 用户

VPN 的用户名和密码存储在 /etc/ppp/chap-secrets 文件中,这个文件的格式是: 客户端名 服务名 密码 允许的IP地址(*表示任意)

编辑该文件:

vi /etc/ppp/chap-secrets

在文件末尾添加你的用户,例如添加一个名为 vpnuser,密码为 your_strong_password 的用户:

# Secrets for authentication using CHAP
# client    server  secret                  IP addresses
vpnuser    pptpd   "your_strong_password"  *

注意: 密码最好用双引号括起来,特别是当密码中包含特殊字符时。

保存并退出。


第六步:开启 IP 转发

为了让 VPN 客户端能够通过你的服务器访问互联网,必须开启 Linux 内核的 IP 转发功能。

编辑 /etc/sysctl.conf 文件:

vi /etc/sysctl.conf

找到下面这行,确保它没有被注释掉(去掉行首的 ):

net.ipv4.ip_forward = 1

保存后,执行以下命令使修改立即生效:

sysctl -p

第七步:配置防火墙和 SELinux(最关键的一步)

这是导致连接失败最常见的原因,我们需要配置防火墙(iptables)和 SELinux 来允许 PPTP 流量。

配置防火墙 (iptables)

我们需要添加两条规则:

  1. 允许 GRE 协议(PPTP 使用 GRE 协议封装数据)。
  2. 允许 PPTP 端口(TCP 1723)。
# 允许 GRE 协议
iptables -A INPUT -p gre -j ACCEPT
# 允许 PPTP 端口 1723
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
# 允许 NAT 转换(让客户端能上网)
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
# 注意:请将 192.168.0.0/24 替换为你自己设置的 remoteip 网段
# 将 eth0 替换为你服务器的外网网卡名称(通常可以用 `ip a` 查看)
# 保存防火墙规则,使其重启后仍然有效
service iptables save

配置 SELinux

SELinux 默认会阻止 PPTP 的建立,我们需要安装一个策略包来允许它。

# 安装 PPTP SELinux 支持
yum install -y ppp-mplsgw

安装这个包后,SELinux 策略会自动调整,通常就足够了,如果仍有问题,可以尝试以下命令(但通常不需要):

# 这条命令会放宽 PPTP 相关的 SELinux 策略,有安全风险,慎用
# setsebool -P pptpd_anon_writable 1

重启防火墙以应用所有更改:

service iptables restart

第八步:重启 PPTP 服务并测试

所有配置都已完成,重启 pptpd 服务以确保所有配置都已加载。

service pptpd restart

如何测试?

  1. 在客户端连接

    • Windows: "网络和共享中心" -> "设置新的连接或网络" -> "连接到工作区" -> "使用我的 Internet 连接 (VPN)"。
    • macOS: "系统偏好设置" -> "网络" -> 点击 号,选择 "VPN" -> "PPTP",然后填写服务器地址(你的公网 IP)、账户名和密码。
    • iOS/Android: 在 Wi-Fi 设置中,找到 VPN 选项,添加 PPTP VPN,填写服务器地址、账户名和密码。
  2. 连接后测试

    • 连接成功后,你的客户端应该会从服务器获取一个 IP 地址(168.0.234)。
    • 打开浏览器,访问 http://ipinfo.iohttps://www.whatismyip.com,查看你的公网 IP 地址是否已经变成了服务器的 IP 地址。
    • IP 地址变了,并且可以正常上网,那么恭喜你,VPN 搭建成功了!

常见问题排查

如果连接失败,请按以下步骤排查:

  1. 检查服务状态

    service pptpd status

    确保服务正在运行。

  2. 检查日志

    • PPTP 服务日志:/var/log/messages
    • PPP 连接日志:/var/log/secure 使用 tail -f 命令可以实时查看日志,方便在
分享:
扫描分享到社交APP
上一篇
下一篇