VirtualBox VM как посредник для сетевого моста
У меня есть проводной порт Ethernet и беспроводной порт. У меня есть устройство, подключенное напрямую к моему ПК (под управлением Windows 7) через порт Ethernet, и устройство подключается к Интернету, который доступен по беспроводной сети. Я могу достаточно просто подключить проводной порт к беспроводному порту с помощью Control Panel > Network and Internet > Network Connections
, выбрав два интерфейса и соединяя их. Это позволяет устройству получить доступ к Интернету.
Тем не менее, я хотел бы разместить виртуальную виртуальную машину VirtualBox в середине этого моста, позволяя ей анализировать (и изменять с помощью libnetfilter_queue
в линуксе) сетевой трафик на мосту. Какой самый простой способ достижения этого?
2 ответа
Вы не можете сделать это, просто соединяя интерфейсы вместе. Вам потребуется настроить мостовые адаптеры от виртуальной машины к обоим интерфейсам и включить переадресацию ip в виртуальной машине. Этот подход работал для меня в прошлом.
редактировать: почти забыл, вам также нужно раздать dhcp из коробки linux в этой конфигурации и правило пост-маршрутизации NAT
VirtualBox позволяет подключать сетевые адаптеры виртуальной машины к определенным интерфейсам на хосте. Я подключил один адаптер виртуальной машины к одному хост-адаптеру, а другой адаптер виртуальной машины - к другому хост-адаптеру - как сказал aking1012, функциональность моста, предоставляемая Windows, здесь не требуется и не нужна.
В гостевой системе Linux я выполнил следующие команды:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ifconfig eth0 0.0.0.0 promisc up
ifconfig eth1 0.0.0.0 promisc up
ifconfig br0 <lan ip> netmask <netmask> broadcast <broadcast>
iptables -A FORWARD -p all -i br0 -j ACCEPT
iptables -t mangle -A FORWARD -m physdev --physdev-in eth0 -j NFQUEUE --queue-num 0
iptables -t mangle -A FORWARD -m physdev --physdev-in eth1 -j NFQUEUE --queue-num 1
Это не обязательно является правильным или наиболее эффективным методом, но, похоже, он мне подходит. Большое спасибо aking1012 за указание в правильном направлении.