iptables 规则的重要性

即使 CentOS 7 的防火墙(firewalld)是关闭的,这些 iptables 规则仍然需要设置。原因如下:


🔍 关键概念澄清

  • “关闭防火墙”通常指 systemctl stop firewalld
    这只是停用了 firewalld 服务,但 Linux 内核的 netfilter(即 iptables 所操作的底层框架)始终在运行

  • PPTP VPN 的正常工作依赖两个核心功能

    1. NAT(网络地址转换):让连接进来的 VPN 客户端能通过服务器访问互联网。
      • 由这条规则实现:
        iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
    2. 数据包转发和协议放行:允许 GRE 协议(PPTP 控制通道用 TCP 1723,数据通道用 GRE 协议 47)通过。
      • 由这些规则实现:
        iptables -A INPUT -p gre -j ACCEPT
        iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -s 192.168.100.0/24 -j TCPMSS --clamp-mss-to-pmtu

❗ 即使没有防火墙拦截,如果没有 NAT 规则,VPN 客户端也无法上网 —— 因为返回的数据包不知道如何路由回客户端。


🧪 举个例子

假设你没加 NAT 规则:

  • 客户端 IP:192.168.100.101(通过 PPTP 分配)
  • 它访问 8.8.8.8
  • 请求从服务器 eth0 发出,源 IP 是 192.168.100.101
  • 8.8.8.8 收到后尝试回包给 192.168.100.101 —— 但这是私有 IP,公网无法路由,丢包!

MASQUERADE 规则会把源 IP 伪装成服务器公网 IP,这样回包才能正确返回服务器,再由 pptpd 转发给客户端。


✅ 结论

操作是否必需说明
MASQUERADE NAT 规则✅ 必需否则客户端无法访问外网
ACCEPT GRE 和 TCP 1723⚠️ 通常必需如果系统默认策略是 ACCEPT(如刚装的 CentOS 无任何 iptables 规则),可能暂时能连;但为了稳定性和兼容性,强烈建议显式添加
TCPMSS clamp✅ 推荐避免因 MTU 问题导致网页打不开、游戏卡顿等

💡 即使 iptables -L 显示为空(默认全通),也必须配置 NAT 规则,否则 VPN 无法实现上网功能。


🔧 验证方法

  1. 连接 VPN 后,在客户端 ping 公网 IP(如 8.8.8.8
  2. 在服务器上抓包:
    tcpdump -i eth0 host 8.8.8.8
    看源 IP 是否已被伪装成服务器公网 IP(说明 NAT 生效)

📝 补充建议

即使你不使用 firewalld,也可以直接管理 iptables

# 查看当前规则
iptables -L -n -v
iptables -t nat -L -n -v

# 保存规则(重启后不丢失)
yum install -y iptables-services
systemctl enable iptables
service iptables save

总结:无论防火墙是否关闭,只要你想让 PPTP 客户端能正常上网,就必须配置这些 iptables 规则,尤其是

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一路生花工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值