Хорошо, у меня есть следующая настройка (все, кроме последнего прыжка, - это виртуальные машины внутри QubesOS, но предположительно применяются сетевые соображения Linux)
- обозначает подключение "виртуальная карта Ethernet"
== обозначает подключение физической карты Ethernet (перекрестный кабель от физического сетевого адаптера Qubes к Windows XP)
Windows-7-VM - ProxyVM - NIChostVM == WindowsXP-USB-share
Я хочу передать usb через программное обеспечение совместного использования USB Fabulatech. Порт 33000.
Итак, что мне нужно сделать, это иметь правила iptables для правильной передачи трафика между виртуальной машиной Win-7 и общим ресурсом WindowsXP-USB.
За всю свою жизнь я не могу этого понять.
Я могу получить трафик, если я перейду через сетевой адаптер на 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
Однако попытка придумать что-то, что работало бы в случае более длинной машинной цепочки, приводит к потере ответов (и странному неправильному поведению совместно используемых устройств).
Конечно, я мог бы жить с сетевой картой, проходящей через proxyvm, но, учитывая, что она подключается к машине с Windows XP, я бы предпочел, чтобы она находилась в отдельной виртуальной машине.
Да, и эксперименты показывают, что материал 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 «видит» IP-адрес Windows 7 как «источник», а Windows 7 видит IP-адрес Windows XP как «исходный IP-адрес» во всех ответах.
Это, вероятно, потребует некоторого SNAT и маршрутизации политик, и, честно говоря, я не в своем уме.
P.S .:
IP-адрес Windows 7 - 10.137.4.22
linux host 1 действует как шлюз по умолчанию для windows 7 и linux-host-2
linux host 2 IP - 10.137.4.4
сетевая карта для подключения XP подключена к хосту linux 2, его IP-адрес 192.169.1.2
IP-адрес Windows XP - 192.169.1.1.
Чем больше я смотрю на это, ваша проблема связана с отсутствием статических маршрутов. Давайте проясним, что для этого не нужны правила NAT.
Но причина, по которой он работает только с VMProxy посередине, заключается в том, что все машины умеют находить друг друга. У XP был шлюз по умолчанию VM proxy. В Windows 7 есть шлюз по умолчанию для другого интерфейса VMProxy. VMProxy напрямую подключен к обеим сетям, и вуаля, они могут общаться.
При добавлении дополнительных машин с несколькими интерфейсами вам необходимо установить статические маршруты. Любая система, которая должна взаимодействовать с сетью, которая не подключена напрямую и недоступна через шлюз по умолчанию, будет нуждаться в настройке статического маршрута, в которой говорится, что если вы хотите достичь сети x.x.x.x, следующим переходом будет y.y.y.y. y.y.y.y - это IP-адрес следующего ближайшего интерфейса, который может достичь целевой сети.
Я был бы более конкретным, но вы не указали хотя бы один IP-адрес в своей информации.