好的,我有以下设置(除了最后一跳之外的所有内容都是 QubesOS 内的虚拟机,但大概适用 Linux 网络注意事项)
-- 表示“虚拟以太网卡”连接
== 表示物理以太网卡连接(从 Qubes 主机物理 NIC 到 Windows XP 盒的交叉电缆)
Windows-7-VM--ProxyVM--NIChostVM==WindowsXP-USB-share
我想要的是通过 Fabulatech 的 USB 共享软件端口传递 USB 是 33000
所以我需要做的是让 iptables 规则在 Win-7 VM 和 WindowsXP-USB-share 之间正确传递流量
我无论如何也想不通。
如果我将 NIC 传递到 ProxyVM,则可以获得流量
Windows-7-VM--ProxyVM==WindowsXP-USB-share
在该简化的设置中,ProxyVM 中只需要以下规则:
ifconfig enp0s0f6 up
ifconfig enp0s0f6 192.169.1.2
ifconfig eth1 netmask 255.255.255.0
DNAT --to-destination 10.137.77.2:33000
iptables -I FORWARD -s 10.137.4.22 -d 192.169.1.1 -j ACCEPT
iptables -I FORWARD -d 10.137.4.22 -s 192.169.1.1 -j ACCEPT
iptables -I INPUT -s 192.169.1.1 -d 192.169.1.2 -j ACCEPT
但是,尝试提出一种可以在机器链较长的情况下起作用的方法会导致回复丢失(以及共享设备的奇怪不当行为)
当然,我可以接受将 NIC 传递到 proxyvm,但考虑到它连接到 Windows XP 机器,我宁愿它位于单独的 VM 中。
哦,实验表明,Fabulatech 的产品使用源/目标 IP 进行一些基本的身份验证(即使身份验证被禁用)
所以我需要的是以下内容:
通过四台机器组成的链条传递端口 33000,如下所示
(Windows 7)-(default gateway, aka Linux host 1)-(linux-host-2)
|
|
[crossover link on a dedicated NIC of Linux host 2]
|
|
(windows XP host)
这样,Windows XP 主机就会在所有回复中将 Windows 7 的 IP“视为”源,而 Windows 7 也会将 Windows XP 的 IP 视为“源 IP”。
它可能涉及一些 SNAT 和策略路由,坦率地说,我已经失去了理智。
附言:
Windows 7 IP 是 10.137.4.22
Linux 主机 1 充当 Windows 7 和 Linux 主机 2 的默认网关
linux主机2的IP是10.137.4.4
XP 的网卡连接到 Linux 主机 2,它的 IP 是 192.169.1.2
Windows XP 的 IP 是 192.169.1.1
答案1
我越看越觉得你的问题在于缺少静态路由。让我们明确一点,不需要 NAT 规则来实现这一点。
但是,它之所以只使用中间的 VMProxy 工作,是因为所有机器都知道如何找到彼此。XP 有一个 VM 代理的默认网关。Windows 7 有一个到其他 VMProxy 接口的默认网关。VMProxy 直接连接到两个网络,瞧,它们可以通信。
当添加具有多个接口的更多机器时,您必须设置静态路由。任何需要与非直接连接且无法通过默认网关访问的网络进行通信的系统都需要设置静态路由,该路由表示,如果您想访问 xxxx 网络,下一跳是 yyyyyyyy,这是可以到达目标网络的下一个最近接口的 IP 地址。
我想说得更具体一些,但您的信息中至少遗漏了一个 IP 地址。