2026-06-29 17:13:16 +08:00

482 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 客户现场设备网络转发配置说明
## 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 的设备,作为远程访问入口。
当前已知网口信息如下:
```text
设备 A
ppp04G 拨号网口
eth010.16.140.111/22用于连接设备 B、设备 C
eth110.20.1.1/24用于连接设备 A 本地摄像头
dev010.10.4.28/24疑似穿透或虚拟网络网口
```
设备 A 本地摄像头:
```text
设备 A 摄像头 110.20.1.11:80
设备 A 摄像头 210.20.1.12:80
```
设备 A 已验证可以直接访问本地两个摄像头:
```bash
curl -I http://10.20.1.11
curl -I http://10.20.1.12
```
返回结果均为:
```text
HTTP/1.1 200 OK
```
---
### 3.2 设备 B 网络信息
设备 B 通过设备 A 的 `eth0` 网段访问。
```text
设备 B
eth010.16.140.112
业务管理页面10.16.140.112:80
```
设备 B 本地摄像头网段与设备 A 本地摄像头网段相同,摄像头 IP 也是:
```text
设备 B 摄像头 110.20.1.11:80
设备 B 摄像头 210.20.1.12:80
```
注意:设备 B 的 `10.20.1.11``10.20.1.12` 是设备 B 本地网络内的摄像头,与设备 A 本地的 `10.20.1.11``10.20.1.12` 不是同一台设备。
---
### 3.3 设备 C 网络信息
设备 C 通过设备 A 的 `eth0` 网段访问。
```text
设备 C
eth010.16.140.113
业务管理页面10.16.140.113:80
```
当前已确认:
```text
设备 C 的 10.16.140.113:80 服务未开启,因此 18003 当前无法访问属于正常现象。
```
设备 C 本地摄像头网段与设备 A、设备 B 相同,摄像头 IP 也是:
```text
设备 C 摄像头 110.20.1.11:80
设备 C 摄像头 210.20.1.12:80
```
注意:设备 C 的 `10.20.1.11``10.20.1.12` 是设备 C 本地网络内的摄像头,与设备 A、设备 B 本地同 IP 摄像头不是同一台设备。
---
## 4. 核心转发逻辑
由于 A、B、C 三台设备本地摄像头 IP 都是:
```text
10.20.1.11
10.20.1.12
```
所以不能全部在设备 A 上直接转发到 `10.20.1.11``10.20.1.12`
原因是:
对于设备 A 来说,`10.20.1.11``10.20.1.12` 默认就是设备 A 自己 `eth1` 下的本地摄像头。
因此B、C 设备下的摄像头必须采用“两级转发”方式:
```text
远程访问
设备 A
↓ 通过 eth010.16.140.x 网段
设备 B / 设备 C
↓ 各自本地 10.20.1.x 网段
对应设备本地摄像头
```
也就是说:
```text
设备 A 负责远程入口转发
设备 B / 设备 C 负责把自己的中转端口转发到本地摄像头
```
---
## 5. 端口规划
### 5.1 设备 A 本地摄像头
```text
远程端口 18101 -> 设备 A 本地摄像头 110.20.1.11:80
远程端口 18102 -> 设备 A 本地摄像头 210.20.1.12:80
```
### 5.2 设备 B
```text
远程端口 18002 -> 设备 B 管理页面10.16.140.112:80
远程端口 18103 -> 设备 B 摄像头 1
远程端口 18104 -> 设备 B 摄像头 2
```
设备 B 内部中转端口:
```text
设备 B:28011 -> 设备 B 本地摄像头 110.20.1.11:80
设备 B:28012 -> 设备 B 本地摄像头 210.20.1.12:80
```
因此完整链路为:
```text
远程访问 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
```text
远程端口 18003 -> 设备 C 管理页面10.16.140.113:80
远程端口 18105 -> 设备 C 摄像头 1
远程端口 18106 -> 设备 C 摄像头 2
```
设备 C 内部中转端口:
```text
设备 C:28011 -> 设备 C 本地摄像头 110.20.1.11:80
设备 C:28012 -> 设备 C 本地摄像头 210.20.1.12:80
```
因此完整链路为:
```text
远程访问 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 上执行:
```bash
echo 1 > /proc/sys/net/ipv4/ip_forward
```
查看是否生效:
```bash
cat /proc/sys/net/ipv4/ip_forward
```
返回:
```text
1
```
表示开启成功。
---
### 6.2 设备 A 本地摄像头转发
设备 A 本地摄像头可以由设备 A 直接转发:
```bash
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
```
说明:
```text
18101 -> 10.20.1.11:80
18102 -> 10.20.1.12:80
```
---
### 6.3 设备 B 管理页面和摄像头转发
设备 A 转发到设备 B 的规则:
```bash
# 设备 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
```
对应关系:
```text
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 的规则:
```bash
# 设备 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
```
对应关系:
```text
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
```
当前注意事项:
```text
设备 C 的 10.16.140.113:80 服务当前未开启,因此远程访问 18003 不通属于正常现象。
```
---
## 7. 设备 B 上的转发配置
设备 B 需要把自己的两个中转端口 `28011``28012` 转发到本地摄像头。
### 7.1 开启 IP 转发
```bash
echo 1 > /proc/sys/net/ipv4/ip_forward
```
---
### 7.2 添加设备 B 本地摄像头转发规则
假设设备 B 的摄像头网口为 `eth1`,设备 B 的上联业务网口为 `eth0`
```bash
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
```
对应关系:
```text
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 需要把自己的两个中转端口 `28011``28012` 转发到本地摄像头。
### 8.1 开启 IP 转发
```bash
echo 1 > /proc/sys/net/ipv4/ip_forward
```
---
### 8.2 添加设备 C 本地摄像头转发规则
假设设备 C 的摄像头网口为 `eth1`,设备 C 的上联业务网口为 `eth0`
```bash
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
```
对应关系:
```text
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 上验证本地摄像头
```bash
curl -I http://10.20.1.11
curl -I http://10.20.1.12
```
---
### 9.2 在设备 A 上验证设备 B
```bash
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
```bash
curl -I http://10.16.140.113
curl -I http://10.16.140.113:28011
curl -I http://10.16.140.113:28012
```
说明:
```text
如果 curl -I http://10.16.140.113 不通,需要先确认设备 C 的 80 端口服务是否启动。
```
---
### 9.4 查看设备 A 上的 NAT 规则
```bash
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
```
---
## 当前状态总结
当前已确认:
```text
设备 A 本地两个摄像头可远程访问。
设备 B 管理页面可远程访问。
设备 B 本地两个摄像头可远程访问。
设备 C 本地两个摄像头可远程访问。
设备 C 管理页面 18003 当前不可访问,原因为设备 C 的 10.16.140.113:80 服务未开启。
```
整体路由和端口转发逻辑已经验证可行。
核心链路为:
```text
远程访问入口
设备 A4G / 穿透入口
根据端口转发到:
- 设备 A 本地摄像头
- 设备 B 管理页面
- 设备 B 本地摄像头中转端口
- 设备 C 管理页面
- 设备 C 本地摄像头中转端口
```