chuzhou-iptables/README.md
2026-06-29 17:13:16 +08:00

12 KiB
Raw Blame History

客户现场设备网络转发配置说明

1. 远程访问地址对应关系

远程通过设备 A 的访问地址进行访问。

远程端口 访问目标 实际链路
18101 设备 A 摄像头 1 设备 A -> 10.20.1.11:80
18102 设备 A 摄像头 2 设备 A -> 10.20.1.12:80
18002 设备 B 管理页面 设备 A -> 10.16.140.112:80
18103 设备 B 摄像头 1 设备 A -> 10.16.140.112:28011 -> 10.20.1.11:80
18104 设备 B 摄像头 2 设备 A -> 10.16.140.112:28012 -> 10.20.1.12:80
18003 设备 C 管理页面 设备 A -> 10.16.140.113:80
18105 设备 C 摄像头 1 设备 A -> 10.16.140.113:28011 -> 10.20.1.11:80
18106 设备 C 摄像头 2 设备 A -> 10.16.140.113:28012 -> 10.20.1.12:80

2. 背景说明

客户现场共有三台独立设备,分别为:

  • 设备 A带 4G 网络,用作现场远程访问入口和转发网关。
  • 设备 B无 4G通过设备 A 的 eth0 所在局域网访问。
  • 设备 C无 4G通过设备 A 的 eth0 所在局域网访问。

每台设备都运行一套独立的业务管理服务,并且每台设备本地都连接了两台摄像头。

远程访问需求包括:

  1. 远程访问设备 A、B、C 的业务管理页面。
  2. 远程访问设备 A、B、C 各自本地连接的两台摄像头 Web 页面。
  3. 所有远程访问统一通过设备 A 进入,再由设备 A 转发到对应设备或摄像头。

3. 当前设备网络结构

3.1 设备 A 网络信息

设备 A 是现场唯一带 4G 的设备,作为远程访问入口。

当前已知网口信息如下:

设备 A
ppp04G 拨号网口
eth010.16.140.111/22用于连接设备 B、设备 C
eth110.20.1.1/24用于连接设备 A 本地摄像头
dev010.10.4.28/24疑似穿透或虚拟网络网口

设备 A 本地摄像头:

设备 A 摄像头 110.20.1.11:80
设备 A 摄像头 210.20.1.12:80

设备 A 已验证可以直接访问本地两个摄像头:

curl -I http://10.20.1.11
curl -I http://10.20.1.12

返回结果均为:

HTTP/1.1 200 OK

3.2 设备 B 网络信息

设备 B 通过设备 A 的 eth0 网段访问。

设备 B
eth010.16.140.112
业务管理页面10.16.140.112:80

设备 B 本地摄像头网段与设备 A 本地摄像头网段相同,摄像头 IP 也是:

设备 B 摄像头 110.20.1.11:80
设备 B 摄像头 210.20.1.12:80

注意:设备 B 的 10.20.1.1110.20.1.12 是设备 B 本地网络内的摄像头,与设备 A 本地的 10.20.1.1110.20.1.12 不是同一台设备。


3.3 设备 C 网络信息

设备 C 通过设备 A 的 eth0 网段访问。

设备 C
eth010.16.140.113
业务管理页面10.16.140.113:80

当前已确认:

设备 C 的 10.16.140.113:80 服务未开启,因此 18003 当前无法访问属于正常现象。

设备 C 本地摄像头网段与设备 A、设备 B 相同,摄像头 IP 也是:

设备 C 摄像头 110.20.1.11:80
设备 C 摄像头 210.20.1.12:80

注意:设备 C 的 10.20.1.1110.20.1.12 是设备 C 本地网络内的摄像头,与设备 A、设备 B 本地同 IP 摄像头不是同一台设备。


4. 核心转发逻辑

由于 A、B、C 三台设备本地摄像头 IP 都是:

10.20.1.11
10.20.1.12

所以不能全部在设备 A 上直接转发到 10.20.1.1110.20.1.12

原因是: 对于设备 A 来说,10.20.1.1110.20.1.12 默认就是设备 A 自己 eth1 下的本地摄像头。

因此B、C 设备下的摄像头必须采用“两级转发”方式:

远程访问
   ↓
设备 A
   ↓ 通过 eth010.16.140.x 网段
设备 B / 设备 C
   ↓ 各自本地 10.20.1.x 网段
对应设备本地摄像头

也就是说:

设备 A 负责远程入口转发
设备 B / 设备 C 负责把自己的中转端口转发到本地摄像头

5. 端口规划

5.1 设备 A 本地摄像头

远程端口 18101 -> 设备 A 本地摄像头 110.20.1.11:80
远程端口 18102 -> 设备 A 本地摄像头 210.20.1.12:80

5.2 设备 B

远程端口 18002 -> 设备 B 管理页面10.16.140.112:80
远程端口 18103 -> 设备 B 摄像头 1
远程端口 18104 -> 设备 B 摄像头 2

设备 B 内部中转端口:

设备 B:28011 -> 设备 B 本地摄像头 110.20.1.11:80
设备 B:28012 -> 设备 B 本地摄像头 210.20.1.12:80

因此完整链路为:

远程访问 18103 -> 设备 A -> 10.16.140.112:28011 -> 设备 B 本地 10.20.1.11:80
远程访问 18104 -> 设备 A -> 10.16.140.112:28012 -> 设备 B 本地 10.20.1.12:80

5.3 设备 C

远程端口 18003 -> 设备 C 管理页面10.16.140.113:80
远程端口 18105 -> 设备 C 摄像头 1
远程端口 18106 -> 设备 C 摄像头 2

设备 C 内部中转端口:

设备 C:28011 -> 设备 C 本地摄像头 110.20.1.11:80
设备 C:28012 -> 设备 C 本地摄像头 210.20.1.12:80

因此完整链路为:

远程访问 18105 -> 设备 A -> 10.16.140.113:28011 -> 设备 C 本地 10.20.1.11:80
远程访问 18106 -> 设备 A -> 10.16.140.113:28012 -> 设备 C 本地 10.20.1.12:80

6. 设备 A 上的转发配置

6.1 开启 IP 转发

在设备 A 上执行:

echo 1 > /proc/sys/net/ipv4/ip_forward

查看是否生效:

cat /proc/sys/net/ipv4/ip_forward

返回:

1

表示开启成功。


6.2 设备 A 本地摄像头转发

设备 A 本地摄像头可以由设备 A 直接转发:

iptables -t nat -A PREROUTING -p tcp --dport 18101 -j DNAT --to-destination 10.20.1.11:80
iptables -t nat -A PREROUTING -p tcp --dport 18102 -j DNAT --to-destination 10.20.1.12:80

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -p tcp -d 10.20.1.11 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.20.1.12 --dport 80 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

说明:

18101 -> 10.20.1.11:80
18102 -> 10.20.1.12:80

6.3 设备 B 管理页面和摄像头转发

设备 A 转发到设备 B 的规则:

# 设备 B 管理页面
iptables -t nat -A PREROUTING -p tcp --dport 18002 -j DNAT --to-destination 10.16.140.112:80

# 设备 B 两个摄像头中转端口
iptables -t nat -A PREROUTING -p tcp --dport 18103 -j DNAT --to-destination 10.16.140.112:28011
iptables -t nat -A PREROUTING -p tcp --dport 18104 -j DNAT --to-destination 10.16.140.112:28012

# 设备 A 通过 eth0 访问设备 B进行源地址伪装
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 放行转发
iptables -A FORWARD -p tcp -d 10.16.140.112 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.16.140.112 --dport 28011 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.16.140.112 --dport 28012 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

对应关系:

18002 -> 10.16.140.112:80
18103 -> 10.16.140.112:28011 -> 设备 B 本地 10.20.1.11:80
18104 -> 10.16.140.112:28012 -> 设备 B 本地 10.20.1.12:80

6.4 设备 C 管理页面和摄像头转发

设备 A 转发到设备 C 的规则:

# 设备 C 管理页面
iptables -t nat -A PREROUTING -p tcp --dport 18003 -j DNAT --to-destination 10.16.140.113:80

# 设备 C 两个摄像头中转端口
iptables -t nat -A PREROUTING -p tcp --dport 18105 -j DNAT --to-destination 10.16.140.113:28011
iptables -t nat -A PREROUTING -p tcp --dport 18106 -j DNAT --to-destination 10.16.140.113:28012

# 设备 A 通过 eth0 访问设备 C进行源地址伪装
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 放行转发
iptables -A FORWARD -p tcp -d 10.16.140.113 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.16.140.113 --dport 28011 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.16.140.113 --dport 28012 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

对应关系:

18003 -> 10.16.140.113:80
18105 -> 10.16.140.113:28011 -> 设备 C 本地 10.20.1.11:80
18106 -> 10.16.140.113:28012 -> 设备 C 本地 10.20.1.12:80

当前注意事项:

设备 C 的 10.16.140.113:80 服务当前未开启,因此远程访问 18003 不通属于正常现象。

7. 设备 B 上的转发配置

设备 B 需要把自己的两个中转端口 2801128012 转发到本地摄像头。

7.1 开启 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

7.2 添加设备 B 本地摄像头转发规则

假设设备 B 的摄像头网口为 eth1,设备 B 的上联业务网口为 eth0

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 28011 -j DNAT --to-destination 10.20.1.11:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 28012 -j DNAT --to-destination 10.20.1.12:80

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -p tcp -d 10.20.1.11 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.20.1.12 --dport 80 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

对应关系:

10.16.140.112:28011 -> 设备 B 本地摄像头 10.20.1.11:80
10.16.140.112:28012 -> 设备 B 本地摄像头 10.20.1.12:80

8. 设备 C 上的转发配置

设备 C 需要把自己的两个中转端口 2801128012 转发到本地摄像头。

8.1 开启 IP 转发

echo 1 > /proc/sys/net/ipv4/ip_forward

8.2 添加设备 C 本地摄像头转发规则

假设设备 C 的摄像头网口为 eth1,设备 C 的上联业务网口为 eth0

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 28011 -j DNAT --to-destination 10.20.1.11:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 28012 -j DNAT --to-destination 10.20.1.12:80

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

iptables -A FORWARD -p tcp -d 10.20.1.11 --dport 80 -j ACCEPT
iptables -A FORWARD -p tcp -d 10.20.1.12 --dport 80 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

对应关系:

10.16.140.113:28011 -> 设备 C 本地摄像头 10.20.1.11:80
10.16.140.113:28012 -> 设备 C 本地摄像头 10.20.1.12:80

9. 验证命令

9.1 在设备 A 上验证本地摄像头

curl -I http://10.20.1.11
curl -I http://10.20.1.12

9.2 在设备 A 上验证设备 B

curl -I http://10.16.140.112
curl -I http://10.16.140.112:28011
curl -I http://10.16.140.112:28012

9.3 在设备 A 上验证设备 C

curl -I http://10.16.140.113
curl -I http://10.16.140.113:28011
curl -I http://10.16.140.113:28012

说明:

如果 curl -I http://10.16.140.113 不通,需要先确认设备 C 的 80 端口服务是否启动。

9.4 查看设备 A 上的 NAT 规则

iptables -t nat -L PREROUTING -n -v --line-numbers
iptables -t nat -L POSTROUTING -n -v --line-numbers
iptables -L FORWARD -n -v --line-numbers

当前状态总结

当前已确认:

设备 A 本地两个摄像头可远程访问。
设备 B 管理页面可远程访问。
设备 B 本地两个摄像头可远程访问。
设备 C 本地两个摄像头可远程访问。
设备 C 管理页面 18003 当前不可访问,原因为设备 C 的 10.16.140.113:80 服务未开启。

整体路由和端口转发逻辑已经验证可行。

核心链路为:

远程访问入口
   ↓
设备 A4G / 穿透入口
   ↓
根据端口转发到:
   - 设备 A 本地摄像头
   - 设备 B 管理页面
   - 设备 B 本地摄像头中转端口
   - 设备 C 管理页面
   - 设备 C 本地摄像头中转端口