我现在有一台国内的服务器,但是因为某些问题,禁止国际网络了(攻击太多),然后现在导致无法连接到 s?eam 的服务器,但是使用 iptables 作为转发是可以连接上去,服务端上显示的 ip 是 iptables 的那个 IP,所以我想求助一下 iptables 如何只进行包转发,而不改变来源 IP ? 可能话说的比较多,但是简易演示如下: A 服务器:1.1.1.1 B 服务器:2.2.2.2 C 服务器:国外
由于 A 服务器 无法连接到 C 服务器,所以想利用 B 服务器进行中转一下,连接到 C 服务器。 目前是 A 可以通过 B 连接到 C,但是 C 上显示的是 B 的服务器 IP,我想 B 上面以 A 的 IP 进行中转。C 服务器获得的 IP 不是 B 的服务器 IP。请问有方法吗?
条件: 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
dbw9580
2018-12-21 14:20:09 +08:00
你这是 ip spoofing,很可能出不了运营商的网络
evansfix
2018-12-21 14:37:09 +08:00
@likuku 感谢您的回复,A 无法直接连接至 C,但是通过 B 可以。所以我想中转一下,但是不修改来源 IP, 目前的情况是 C 点收到的 IP 是 2.2.2.2 (也就是 B 的 IP ) ,但是我没办法让他收到的 IP 是 1.1.1.1 ( A 的 IP ) (A 和 B 我都有直接管理权限,C 点只作为收),所以想在 B 上做一个转发,让 A 通过 B 连接到 C,C 得到的 IP 是 A 的 IP 即可。
@dbw9580 您好,我也测试过了,可以访问.但是无法被提交至 s?eam 的服务器,因为获取的 public 的 IP 是 B 的 IP。
mason961125
2018-12-21 14:49:42 +08:00
不可能实现,首先你这是 NAT,如果在 B 上把源 IP 改为 A 的 IP,那么回程路径就不会经过 B。