环境
想象两个不同 LAN 中的三台机器:
Machine1 (1 NIC) : NIC_IP=10.1.1.1
Machine2 (2 NIC) : NIC(1)_IP = 10.3.3.3 ; NIC(2)_IP= 10.1.1.1
Machine3 (1 NIC) : NIC_IP=10.3.3.3
LAN 是这样配置的:
LAN(1) = Machine1.NIC, Machine2.NIC1
LAN(2) = Machine3.NIC, Machine2.NIC2
因此只有 Machine2 是两个 LAN 的成员。
问题
现在我们要建立一个从 Machine2.Nic2 到 Machine3.NIC 的连接。这是从 machine2 上的 10.1.1.1 到 machine3 上的 10.3.3.3 的连接。
我们如何告诉 Machine2 的 TCP/IP 堆栈在 LAN(2) 上而不是在 localhost 上找到目标地址!?(显然,如果 Machine3 发起连接,所需的端点将参与连接 [但 machine2 在我们的例子中是发起者])
使用场景(我想要的那个)
[Machine3=] ______LAN 2 _____ [=Machine2=]_______LAN 1________ [=Machine1]
| |
|_ _ _ _ _ _ _ _ _ _ _ _ virtually connected_ _ _ _ _ _ _ _ _ _|
将 Machine2 视为以某种方式在 LAN(1) 和 LAN(2) 之间为 Machine1 和 Machine3 的通信提供一种“桥接服务”。这样,machine1 尝试连接到 machine3(认为它们好像在同一个 LAN 中),但是中间的 machin2 出现了 machine3 的所需 IP 对 machine1 可见。在这个过程中,机器 2 可以将机器 1 的数据传递给机器 3(因此是一种选择性手动桥接的东西)。
在思考更多之后......(一种解决方法)
[Machine3=] __LAN 2 __ [=Machine2A=]__LAN3__ [=Machine2B=]___LAN 1___ [=Machine1]
| |
|_ _ _ _ _ _ _ _ _ _ _ _ virtually connected_ _ _ _ _ _ _ _ _ _ _ _ _ _|
Machine2B (2 NIC) : NIC(1)_IP = 10.3.3.3 ; NIC(2)_IP= 10.x.y.z
Machine2A (2 NIC) : NIC(1)_IP = 10.w.s.t ; NIC(2)_IP= 10.1.1.1
我看到可以通过在场景中添加另一台机器和另一个 LAN 来实现相同的效果 [但是它目前只是一种解决方法(至少现在不是答案)]
PS:在同一领域有一个问题,不同之处在于他们正在编写数据包嗅探器并且可能没有建立连接(只是读取/注入数据包等)并且他们没有为他们的接口分配 IP 地址,因此他们没有t 有两个不同的目的地,一个在其本地主机中,另一个在 LAN 中。