1
sujin190 2023-09-21 10:16:51 +08:00 1
|
2
LitterGopher OP @sujin190 是端口转发,但问题在于这些教程如果解决了我的问题我还需要用这种第效率的方法么(前两页的所有内容都看过了)?
|
3
tool2d 2023-09-21 10:34:18 +08:00
听起来不难,就是在 B 上设置条件。
1. 判断所有从 A 发起的 UDP 包,通过 iptables 修改 DNAT ,目标地址为 C 2. 判断所有从 C 返回的 UDP 包,通过 iptables 修改 SNAT ,目标地址为 A 只是从理论上可行,具体有什么大坑就不清楚了。 |
4
sujin190 2023-09-21 10:55:37 +08:00 1
@LitterGopher #2 第一条说的就是没问题的
iptables -t nat -A PREROUTING -p udp --dport 1234 -j DNAT --to-destination C 的 IP iptables -t nat -A POSTROUTING -s A 的 IP -p udp --dport 1234 -j SNAT --to-source B 的 IP 就是这样啊,但是需要调整 A 的路由表在 A 访问 C 是下一跳是 B 脾气不要这么差 |
5
sujin190 2023-09-21 10:56:29 +08:00 1
A 的 IP 不确定,第二条可以不写就是了
iptables -t nat -A POSTROUTING -p udp --dport 1234 -j SNAT --to-source B 的 IP |
6
gulugu 2023-09-21 11:00:46 +08:00 1
sudo iptables -t nat -A PREROUTING -i eth0 -p udp -d A_IP --dport 1234 -j DNAT --to-destination C_IP:1234
sudo iptables -A FORWARD -i eth0 -o eth0 -p udp -d C_IP --dport 1234 -j ACCEPT vi /etc/sysctl.conf net.ipv4.ip_forward=1 sudo sysctl -p |
7
LitterGopher OP @sujin190 确实没注意情绪,十分抱歉。
|
8
bowser1701 2023-09-22 09:06:28 +08:00 via iPhone 1
如果 A B 不是二层互通的做不到,如果是二层互通的直接 A 加路由 通过 B ,在 B 上加 MASQUERADE 就可以了。
如果只需要访问到 C ,那可以在 A 上直接访问 B 的某个端口,B 转发到 C 的目的端口。前提是可以在 A 上把 C 改成 B 的地址。 |