跳至主要内容

🔥 为 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 规则应用成功!"

🔐 使用方法:

  1. 将此脚本保存为 configure-iptables.sh
  2. 使其可执行:
   chmod +x configure-iptables.sh
  1. 以 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 配置现在将在系统重启后保持不变。

这篇文章对您有帮助吗?

更新与安全中的更多文章

没有找到您要的内容?

与我们聊天或给我们发送电子邮件。聊天全天候开放,点击右下角的气泡即可。

给我们发邮件