1
likuku 2018-12-21 14:16:34 +08:00 via iPhone
不作地址转换,那么只开启包转发这也是可以实现,只是也有条件的,以下建议基于一些之前类似的实践,建议你先在试验环境测试:
条件: A 和 B 可顺利双向收发数据, B 和 C 可顺利通讯, A 可以收到 C 发来的数据(很重要) 作法: B 开启 网络转发功能( ip_forwarding = 1,防火墙可关闭,或者针对 A C 都双向放行) A 机上 route 指令 /网卡配置 增加一些路由策略: 目标是 C 网段 /IP 的 下一跳 gw 是 B 的 ip 如此,B 会收到 A 发来目标是 C 的包转给 C, C 收到后,因为来源是 A,则响应 /反馈 直接发给 A |
2
dbw9580 2018-12-21 14:20:09 +08:00 via Android
你这是 ip spoofing,很可能出不了运营商的网络
|
3
evansfix OP |
4
mason961125 2018-12-21 14:49:42 +08:00 via iPhone
不可能实现,首先你这是 NAT,如果在 B 上把源 IP 改为 A 的 IP,那么回程路径就不会经过 B。
|
5
mason961125 2018-12-21 14:51:50 +08:00 via iPhone
建议补一下 路由&交换 知识
|
6
evansfix OP @mason961125 也可以试试,在 iptables 上我没找到修改源的东西,请问有例子吗?
|
7
mason961125 2018-12-21 14:57:33 +08:00 via iPhone 1
@evansfix mangle 链专门用于修改包信息
|
8
likuku 2018-12-21 15:47:36 +08:00
@evansfix 如此这般,那不能实现。
C 机收到了“来自 A ” 的请求,当然是发回给 A 了, C 它不会发回给 B 的,除非 B 就是 C 的 默认路由 /默认网关, 或者 你能控制 C 机,增加一条 目的到 A 的数据包 就发给 B |
9
likuku 2018-12-21 15:50:18 +08:00
web 服务里,proxy 和 后段 web server 的确是可以做到这种需求,
但是,这得对中转 proxy 和 web server 都有特别设定才行, 假若是你这个例子,那么就是 B, C 都必须你自己掌控才可。 |
10
lieh222 2018-12-21 17:22:21 +08:00
A 在 nat 表的 output 链做 dnat 到 B,B 再 DNAT 到 C,这时候 C 获得的地址是 A 的地址,所以回应的时候直接回到 A 去了,中间如果没有干扰应该可以通信,有干扰就没辙了,除非你能控制 C 服务器,让它把应该发往 A 的包转发到 B 上去
|
11
julyclyde 2018-12-21 17:54:24 +08:00
首先,iptables 不负责转发
你先理解完这一句再重新提问吧 |
12
LGA1150 2018-12-21 19:45:10 +08:00 via Android
VPN
|
13
sunznx 2018-12-21 20:54:41 +08:00
在 1 楼的基础上,在 B 上加个 SNAT 应该可行
|