🔥 为 ggRock 配置 iptables
本指南为设置 iptables 防火墙提供了参考配置,以确保 ggRock 服务器和客户端正常运行。
📝 注意:
将任何占位符 IP 范围(例如X.X.X.X/X、Y.Y.Y.Y/Y)替换为适合您环境的 CIDR 格式 IP 地址。
🔄 将防火墙重置为干净状态
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -X
iptables -F
🚫 禁用 IP 转发(路由)
iptables -P FORWARD DROP
✅允许预期的入站流量
# 丢弃格式错误/无效的流量
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
# 允许已建立或相关的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许本地主机(环回)
iptables -A INPUT -i lo -j ACCEPT
📦 允许传入 DHCP(用于 PXE 启动)
iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
🛠️ 远程管理访问(例如 ggRock Web UI、HTTPS)
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s X.X.X.X/X --dport 443 -j ACCEPT
🖥️ 允许来自 ggRock 客户端子网的访问
iptables -A INPUT -p icmp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p tcp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p udp -s Y.Y.Y.Y/Y -j ACCEPT
🔐 ggCircuit VPN IP 白名单
# 区域 1
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 34.255.111.148/25 --dport 443 -j ACCEPT
# 区域 2
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 54.228.150.30/25 --dport 443 -j ACCEPT
🚫 阻止所有其他入站流量
# 可选:记录丢弃的入站流量
# iptables -A INPUT -j LOG
iptables -P INPUT DROP
📤 允许预期的出站流量
# 允许连接响应
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 允许本地主机
iptables -A OUTPUT -o lo -j ACCEPT
# 允许 ICMP(ping 等)
iptables -A OUTPUT -p icmp -j ACCEPT
# DHCP
iptables -A OUTPUT -p udp --dport 67 --sport 68 -j ACCEPT
# DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# NTP(时间同步)
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
# HTTP/S(用于更新和网络访问)
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 443 -j ACCEPT
🌐 允许所有其他出站流量
# 可选:记录出站流量
# iptables -A OUTPUT -j LOG
iptables -P OUTPUT ACCEPT
⚠️ 重要提示:
运行此脚本之前,请用实际的 IP 地址范围替换占位符 IP 范围(X.X.X.X/X、Y.Y.Y.Y/Y)。
#!/bin/bash
# ggRock iptables 防火墙配置脚本
# 运行前请使用实际的 CIDR 块替换 X.X.X.X/X 和 Y.Y.Y.Y/Y!
echo "⚙️ 为 ggRock 应用 iptables 规则..."
# === 重置现有规则 ===
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -F
iptables -X
# === 允许预期的入站流量 ===
# 丢弃无效数据包
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
# 允许已建立和相关的流量
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# 允许环回
iptables -A INPUT -i lo -j ACCEPT
# 允许 DHCP(PXE 启动)
iptables -A INPUT -p udp --dport 67:68 --sport 67:68 -j ACCEPT
# 远程管理(Web UI)
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s X.X.X.X/X --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s X.X.X.X/X --dport 443 -j ACCEPT
# 允许来自 ggRock PC 子网的所有流量
iptables -A INPUT -p icmp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p tcp -s Y.Y.Y.Y/Y -j ACCEPT
iptables -A INPUT -p udp -s Y.Y.Y.Y/Y -j ACCEPT
# ggCircuit VPN IP 地址
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 34.255.111.148/25 --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 9090 -j ACCEPT
iptables -A INPUT -p tcp -s 54.228.150.30/25 --dport 443 -j ACCEPT
iptables -A INPUT -p udp -s 54.228.150.30/25 --dport 443 -j ACCEPT
# 丢弃所有其他入站流量
# 取消注释以启用日志记录:
# iptables -A INPUT -j LOG
iptables -P INPUT DROP
# === 允许预期的出站流量 ===
# 允许相关的出站流量
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
# 允许环回
iptables -A OUTPUT -o lo -j ACCEPT
# 允许 ICMP(ping)
iptables -A OUTPUT -p icmp -j ACCEPT
# DHCP
iptables -A OUTPUT -p udp --dport 67 --sport 68 -j ACCEPT
# DNS
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
# NTP
iptables -A OUTPUT -p udp --dport 123 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 123 -j ACCEPT
# HTTP/S
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -p udp --dport 443 -j ACCEPT
# 允许所有其他出站流量
# 取消注释以启用日志记录:
# iptables -A OUTPUT -j LOG
iptables -P OUTPUT ACCEPT
echo "✅ iptables 规则应用成功!"
🔐 使用方法:
- 将此脚本保存为
configure-iptables.sh - 使其可执行:
chmod +x configure-iptables.sh
- 以 root 身份运行(或使用 sudo):
sudo ./configure-iptables.sh
可选:
要使您的 iptables 规则在系统重启后保持不变:
🧊 步骤 1:安装持久化工具
运行以下命令来安装所需的软件包:
sudo apt-get update && sudo apt-get install -y iptables-persistent
在安装过程中,系统会提示您保存当前规则——出现提示时选择是。
💾 步骤 2:保存当前 iptables 规则
运行 configure-iptables.sh 脚本后,按以下方式保存活动规则:
sudo netfilter-persistent save
这会将 IPv4 和 IPv6 规则保存到:
/etc/iptables/rules.v4/etc/iptables/rules.v6
如果只使用 IPv4,完全没有问题——IPv6 文件可以保持为空。
🔁 步骤 3:在启动时自动加载
netfilter-persistent 服务会自动在启动时加载规则。您可以通过以下命令验证它是否已启用:
sudo systemctl is-enabled netfilter-persistent
如果未启用,您可以启用它:
sudo systemctl enable netfilter-persistent
🧪 可选:在不重启的情况下重新加载
要在不重启系统的情况下应用已保存的规则:
sudo netfilter-persistent reload
✅ 完成!您的自定义 iptables 配置现在将在系统重启后保持不变。
更新于: 24/04/2026
谢谢!
