Compare commits
4 Commits
fb3134b4dc
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| dd0780f17e | |||
| c33559fcf8 | |||
|
|
e6cbbd27d4 | ||
|
|
cef9b1dd39 |
1
apps/socket/run.sh
Normal file
1
apps/socket/run.sh
Normal file
@@ -0,0 +1 @@
|
||||
pm2 start "uv run app.py" --name "dnake-socket-app"
|
||||
54
docs/src/pages/ip-step-back.md
Normal file
54
docs/src/pages/ip-step-back.md
Normal file
@@ -0,0 +1,54 @@
|
||||
## 需求描述
|
||||
|
||||
有一个andorid有两个网口,一个网口是A局域网,一个是B局域网。
|
||||
A 的地址是 192.168.3.3, 名字叫 A地址,
|
||||
B 地址是 192.168.9.57,名字叫 B 地址,
|
||||
|
||||
如何实现A局域网下的有一个设备能直接访问B局域网的一个设备,192.168.9.4这是 C 设备,他是是B的局域网内的.
|
||||
|
||||
要从192.168.3.33 的 D 设备,D 设备是 MAC 设备,是 A 局域网的。
|
||||
|
||||
A 局域网的 D需要访问到 B 局域网中的 192.168.9.4的设备 C,如何配置,D 发送 UDP 包到 C 设备
|
||||
|
||||
## 0. enter
|
||||
```
|
||||
adb shell
|
||||
```
|
||||
|
||||
```sh
|
||||
> ip addr show eth0
|
||||
8: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
|
||||
link/ether bc:f8:11:01:84:23 brd ff:ff:ff:ff:ff:ff
|
||||
inet 192.168.9.57/24 brd 192.168.9.255 scope global eth0
|
||||
inet6 fd1c:e6a5f70:0:bef8:11ff:fe01:8423/64 scope global dynamic
|
||||
valid_lft 7152sec preferred_lft 1752sec
|
||||
inet6 fe80::bef8:11ff:fe01:8423/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
|
||||
> ip addr show eth1
|
||||
9: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
|
||||
link/ether bc:f8:12:01:84:23 brd ff:ff:ff:ff:ff:ff
|
||||
inet 192.168.3.3/24 brd 192.168.3.255 scope global eth1
|
||||
inet6 2408:8240:610:3af0:bef8:12ff:fe01:8423/64 scope global dynamic
|
||||
valid_lft 7018sec preferred_lft 3418sec
|
||||
inet6 fe80::bef8:12ff:fe01:8423/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
```
|
||||
# 1. 清理重复规则
|
||||
iptables -t nat -F PREROUTING
|
||||
iptables -t nat -F POSTROUTING
|
||||
iptables -t nat -F OUTPUT
|
||||
|
||||
# 2. 重新添加正确规则
|
||||
# DNAT - 目的地址转换
|
||||
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 5060 -j DNAT --to-destination 192.168.9.4:5060
|
||||
|
||||
# SNAT - 源地址转换
|
||||
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 5060 -j SNAT --to-source 192.168.9.57
|
||||
|
||||
# 3. 开启 IP 转发
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
# 4. 添加 FORWARD 规则(重要!)
|
||||
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 5060 -j ACCEPT
|
||||
iptables -A FORWARD -i eth0 -o eth1 -p udp --sport 5060 -j ACCEPT
|
||||
166
docs/src/pages/ip-step.md
Normal file
166
docs/src/pages/ip-step.md
Normal file
@@ -0,0 +1,166 @@
|
||||
## 需求描述
|
||||
|
||||
有一个andorid有两个网口,一个网口是A局域网,一个是B局域网。
|
||||
A 的地址是 192.168.3.3, 名字叫 A地址,
|
||||
B 地址是 192.168.9.57,名字叫 B 地址,
|
||||
|
||||
如何实现A局域网下的有一个设备能直接访问B局域网的一个设备,192.168.9.4这是 C 设备,他是是B的局域网内的.
|
||||
|
||||
要从192.168.3.33 的 D 设备,D 设备是 MAC 设备,是 A 局域网的。
|
||||
|
||||
A 局域网的 D需要访问到 B 局域网中的 192.168.9.4的设备 C,如何配置,D 发送 UDP 包到 C 设备
|
||||
|
||||
## 0. 查看网卡信息
|
||||
|
||||
```sh
|
||||
adb shell
|
||||
```
|
||||
|
||||
```sh
|
||||
> ip addr show eth0
|
||||
8: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
|
||||
link/ether bc:f8:11:01:84:23 brd ff:ff:ff:ff:ff:ff
|
||||
inet 192.168.9.57/24 brd 192.168.9.255 scope global eth0
|
||||
inet6 fd1c:e6a:5f70:0:bef8:11ff:fe01:8423/64 scope global dynamic
|
||||
valid_lft 7152sec preferred_lft 1752sec
|
||||
inet6 fe80::bef8:11ff:fe01:8423/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
|
||||
> ip addr show eth1
|
||||
9: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
|
||||
link/ether bc:f8:12:01:84:23 brd ff:ff:ff:ff:ff:ff
|
||||
inet 192.168.3.3/24 brd 192.168.3.255 scope global eth1
|
||||
inet6 2408:8240:610:3af0:bef8:12ff:fe01:8423/64 scope global dynamic
|
||||
valid_lft 7018sec preferred_lft 3418sec
|
||||
inet6 fe80::bef8:12ff:fe01:8423/64 scope link
|
||||
valid_lft forever preferred_lft forever
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 排查:转发无效怎么办?
|
||||
|
||||
### 1. 检查 IP 转发是否开启
|
||||
|
||||
```sh
|
||||
cat /proc/sys/net/ipv4/ip_forward
|
||||
```
|
||||
|
||||
如果返回 `0`,需要重新开启:
|
||||
|
||||
```sh
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
```
|
||||
|
||||
### 2. 检查当前 iptables 规则
|
||||
|
||||
```sh
|
||||
iptables -t nat -L -n -v
|
||||
iptables -L FORWARD -n -v
|
||||
```
|
||||
|
||||
### 3. SELinux 限制(如有)
|
||||
|
||||
```sh
|
||||
setenforce 0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置方案一:简化版(推荐)
|
||||
|
||||
适用于任意 UDP 端口转发:
|
||||
|
||||
```sh
|
||||
# 1. 开启转发
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
# 2. 清理旧规则
|
||||
iptables -t nat -F
|
||||
iptables -F FORWARD
|
||||
|
||||
# 3. 设置 FORWARD 策略为 ACCEPT
|
||||
iptables -P FORWARD ACCEPT
|
||||
|
||||
# 4. NAT 规则 - 使用 MASQUERADE 自动源地址转换
|
||||
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
|
||||
# 5. 允许转发
|
||||
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
|
||||
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置方案二:指定端口转发
|
||||
|
||||
适用于只转发特定端口(如 5060):
|
||||
|
||||
```sh
|
||||
# 1. 开启转发
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
# 2. 清理旧规则
|
||||
iptables -t nat -F
|
||||
iptables -F FORWARD
|
||||
|
||||
# 3. DNAT - 目的地址转换
|
||||
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 5060 -j DNAT --to-destination 192.168.9.4:5060
|
||||
|
||||
# 4. SNAT - 源地址转换(使用 MASQUERADE 更简单)
|
||||
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 5060 -j MASQUERADE
|
||||
|
||||
# 5. FORWARD 规则
|
||||
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 5060 -j ACCEPT
|
||||
iptables -A FORWARD -i eth0 -o eth1 -p udp --sport 5060 -j ACCEPT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置方案三:完整严格版
|
||||
|
||||
```sh
|
||||
# 1. 开启转发
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
# 2. 清理旧规则
|
||||
iptables -t nat -F
|
||||
iptables -F FORWARD
|
||||
|
||||
# 3. 设置默认 FORWARD 策略
|
||||
iptables -P FORWARD DROP
|
||||
|
||||
# 4. 允许已建立的连接
|
||||
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
|
||||
|
||||
# 5. 允许 eth1 -> eth0(从 A 到 B)
|
||||
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
|
||||
|
||||
# 6. 允许 eth0 -> eth1(从 B 回包)
|
||||
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
|
||||
|
||||
# 7. NAT 规则
|
||||
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 验证是否生效
|
||||
|
||||
在 D 设备(192.168.3.33)上发送 UDP 包到 Android 的 eth1(192.168.3.3),然后在 C 设备(192.168.9.4)上抓包确认是否收到。
|
||||
|
||||
```sh
|
||||
# 在 C 设备上抓包
|
||||
tcpdump -i eth0 -n port 5060 -v
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 常见问题
|
||||
|
||||
| 问题 | 解决方案 |
|
||||
|------|----------|
|
||||
| 转发不生效 | 确认 `ip_forward=1` |
|
||||
| 能ping但UDP不通 | 检查端口是否匹配,检查防火墙 |
|
||||
| 只有单向通 | 检查 FORWARD 双向规则 |
|
||||
| Android 系统限制 | 确保 root 权限,尝试关闭 SELinux |
|
||||
@@ -8,7 +8,15 @@ layout: ../layouts/MDXPost.astro
|
||||
|
||||
## 提示词
|
||||
|
||||
有一个andorid有两个网口,一个网口是A局域网,一个是B局域网。A 的地址是 192.168.3.3,名字叫 A地址,B 地址是 192.168.9.57, 名字叫 B 地址, 如何实现A局域网下的有一个设备能直接访问B局域网的 一个设备,比如192.168.9.4这是 C 设备,他是是B的局域网内的. 要从192.168.3.33 的 D 设备,D 设备是 MAC 设备,是 A 局域网的。A 局域网的 D需要访问到 B 局域网中的 192.168.9.4的设备 C,如何配置
|
||||
有一个andorid有两个网口,一个网口是A局域网,一个是B局域网。
|
||||
A 的地址是 192.168.3.3,名字叫 A地址,
|
||||
B 地址是 192.168.9.57, 名字叫 B 地址,
|
||||
|
||||
如何实现A局域网下的有一个设备能直接访问B局域网的一个设备,192.168.9.4这是 C 设备,他是是B的局域网内的.
|
||||
|
||||
要从192.168.3.33 的 D 设备,D 设备是 MAC 设备,是 A 局域网的。
|
||||
|
||||
A 局域网的 D需要访问到 B 局域网中的 192.168.9.4的设备 C,如何配置,D 发送 UDP 包到 C 设备
|
||||
|
||||
## 开启 iptables
|
||||
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
查看iptables规则:
|
||||
|
||||
```bash
|
||||
iptables -L -n -v
|
||||
# 查看nat表的PREROUTING链
|
||||
iptables -t nat -L PREROUTING -n --line-numbers
|
||||
# 查看nat表的POSTROUTING链
|
||||
iptables -t nat -L POSTROUTING -n --line-numbers
|
||||
```
|
||||
# 1. 允许转发从eth1到eth0的SIP数据包(目的192.168.9.4:5060)
|
||||
iptables -A FORWARD -i eth1 -o eth0 -p udp --dport 5060 -d 192.168.9.4 -j ACCEPT
|
||||
|
||||
@@ -8,4 +17,7 @@ iptables -A FORWARD -i eth0 -o eth1 -p udp --sport 5060 -s 192.168.9.4 -j ACCEPT
|
||||
iptables -t nat -A PREROUTING -i eth1 -p udp --dport 5060 -j DNAT --to-destination 192.168.9.4:5060
|
||||
|
||||
# 4. SNAT:修改转发包的源地址为设备eth0的IP(192.168.9.57),确保192.168.9.4的响应能回传给设备
|
||||
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 5060 -d 192.168.9.4 -j SNAT --to-source 192.168.9.57
|
||||
iptables -t nat -A POSTROUTING -o eth0 -p udp --dport 5060 -d 192.168.9.4 -j SNAT --to-source 192.168.9.57
|
||||
|
||||
# 5. 保存iptables规则
|
||||
iptables-save > /etc/iptables/rules.v4
|
||||
Reference in New Issue
Block a user