Vaisravana

Vaisravana

iptables配置中新增允许公网访问的端口

39
2025-02-04

本文章用于记录iptables配置中新增允许公网访问的端口,取自与deepseek的问答,写成文章以做备忘

root@rbm-GJHCEmOw:~# iptables -L INPUT -n -v --line-numbers

Chain INPUT (policy DROP 0 packets, 0 bytes)

num pkts bytes target prot opt in out source destination

1 135 62756 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0

2 241 23414 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED

3 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

4 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2718

5 4 256 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:23333

6 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:24444

7 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpts:31000:31008

8 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:7500

9 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:7501

10 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:7000

11 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:7001

12 0 0 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 match-set china src

13 1 60 GEO_BLOCK all -- * * 0.0.0.0/0 0.0.0.0/0

root@rbm-GJHCEmOw:~#

我按照你说的设置好了(如上所示),请告诉我,后续我要新增端口(TCP或者UDP)允许公网访问应该怎么做

要在现有 iptables 配置中新增允许公网访问的端口(TCP/UDP),需要确保规则插入到正确的位置,避免被后续的 GEO_BLOCKACCEPT china 规则覆盖。以下是具体步骤:


1. 新增端口的规则插入位置

根据你的当前规则顺序:

1-11: 允许指定端口(如22、2718等)
12:   允许中国IP(match-set china)
13:   GEO_BLOCK
  • 关键原则:新增的端口规则必须插入在 规则12(允许中国IP)之前,否则非中国IP的流量会被 GEO_BLOCK 拦截,导致新端口无法公网访问。


2. 操作步骤(以新增 TCP 端口 12345 和 UDP 端口 54321 为例)

2.1 插入 TCP 端口规则

iptables -I INPUT 12 -p tcp --dport 12345 -j ACCEPT
  • -I INPUT 12:将规则插入到第12条的位置(原规则12及后续规则会自动后移)。

  • -p tcp --dport 12345:匹配 TCP 端口 12345。

2.2 插入 UDP 端口规则

iptables -I INPUT 12 -p udp --dport 54321 -j ACCEPT
  • -p udp --dport 54321:匹配 UDP 端口 54321。


3. 验证规则顺序

执行以下命令查看插入后的规则顺序:

iptables -L INPUT -n -v --line-numbers

输出应类似:

...
11   ACCEPT     tcp  --  0.0.0.0/0   0.0.0.0/0    tcp dpt:7001
12   ACCEPT     tcp  --  0.0.0.0/0   0.0.0.0/0    tcp dpt:12345   <-- 新增的TCP端口
13   ACCEPT     udp  --  0.0.0.0/0   0.0.0.0/0    udp dpt:54321   <-- 新增的UDP端口
14   ACCEPT     all  --  0.0.0.0/0   0.0.0.0/0    match-set china src
15   GEO_BLOCK  all  --  0.0.0.0/0   0.0.0.0/0
...

4. 保存规则

确保规则永久生效:

iptables-save > /etc/iptables/rules.v4

5. 测试端口连通性

从外网使用 nmaptelnet 测试新增端口:

nmap -p 12345 你的服务器IP

6. 其他注意事项

  1. 同时开放 TCP 和 UDP
    如果某个服务需要同时使用 TCP 和 UDP(如 DNS、游戏服务器),需分别添加两条规则:

    iptables -I INPUT 12 -p tcp --dport 12345 -j ACCEPT
    iptables -I INPUT 12 -p udp --dport 12345 -j ACCEPT
  2. 删除旧规则
    若需要删除旧规则,先查看编号:

    iptables -L INPUT --line-numbers

    然后删除指定编号的规则:

    iptables -D INPUT 12
  3. 调整默认策略
    确保 INPUT 链的默认策略为 DROP,否则可能绕过规则:

    iptables -P INPUT DROP

通过以上步骤,你可以安全地新增允许公网访问的端口,同时保留原有的 IP 地域过滤逻辑。