LINUX.ORG.RU
решено ФорумAdmin

Достучаться из виртуальной машины до интернета через bridge

 , , ,


0

1

Настроил сеть в виртуальной машине через bridge по имени vnet0, который объединяет виртуальный интерфейс vnet1 и ethernet по имени (допустим) eth0 (но кабель к нему не подключён, хотя это и не важно). Интернет идёт через wifi. Сделал так, чтобы все сетевые устройства (реальные и виртуальные) были в одной сети с маской 255.255.255.0, адреса:

wifi: 192.168.0.100
vnet0: 192.168.0.2
виртуальный: 192.168.0.3
gw для интернета: 192.168.0.1

Пинг из реальной машины в виртуальную и наоборот настроил, теперь надо ходить из виртуальной машины в интернет. Насколько я понимаю, необходимо перенаправлять пакеты со всеми «внешними» адресами из виртуальной машины на адрес 192.168.0.1, причём это должно выполняться на мосту.

Вопрос: как этого добиться, имеет ли к этому отношение ebtables, и если имеет, то какое?

Еще параллельно вопрос - я не смог объединить в мост wifi, это нормально?

★★★★☆

Еще параллельно вопрос - я не смог объединить в мост wifi, это нормально?

Не все wifi дравйра (карточки) позволяют включать себя в мост. ИМХО, логичнее было бы создать отдельную тему, где бы вам объяснили подходящий или нет драйвер на вашей wifi карточке. А то вы сейчас просите помочь с настройками несуществующего моста.

mky ★★★★★
()
Ответ на: комментарий от mky

так мне и не надо включать wifi в мост, просто когда я попытался сделать это (думал забить на redirect), ничего не вышло.

Sahas ★★★★☆
() автор топика
Ответ на: комментарий от Sahas

думал забить на redirect

Какой redirect? Если мост не нужен, значит нужна маршрутизация. Тогда адреса должны быть с такими масками 192.168.0.2/32 и 192.168.0.3/32, а на wifi интерфейсе должна быть proxy arp запись для 192.168.0.3 или SNAT уходящих через wifi интерфейс пакетов.

mky ★★★★★
()
Ответ на: комментарий от mky

Не понял (я вообще в этих IP-пакетах мало понимаю).

Вот у меня IP-пакет с виртуальной машины на внешний адрес (допустим, 8.8.8.8). Какой я должен ставить gw внутри виртуальной машины? 192.168.0.1 она не видит. Допустим, ставлю 192.168.0.2, пакет идет на интерфейс eth0, а дальше что с ним должно произойти? Где и какое правило я должен прописать для этого пакета, чтобы он таки ушёл через 192.168.0.1 в интернет?

Или мне достаточно для моста и виртуальной карты прописать маску 255.255.255.255? В принципе, для route я так и сделал...

Sahas ★★★★☆
() автор топика
Последнее исправление: Sahas (всего исправлений: 2)
Ответ на: комментарий от Sahas

пакет идет на интерфейс eth0, а дальше что с ним должно произойти?

А дальше он будет смаршрутизирован, так как у вас уже прописан в реальной системе маршрут по умолчанию через 192.168.0.1.

А чтобы пакет был успешно смаршрутизирован, нужно чтобы была разрешена маршрутизация через sysctl (net.ipv4.ip_forward) и прохождение пакета в iptables в цепочке FORWARD. Это всё тысячу раз описано и гуглится на раз, даже ищется поиском на ЛОРе :-).

Потом возникает проблема с ответным пакетом, который пойдёт из Интернета в виртуалку. Либо прописывать на wi-fi точке доступа (маршрутизаторе с wi-fi) маршрут к 192.168.0.3 через 192.168.0.100, либо создавать proxy arp запись для 192.168.0.3 на wifi интерфейсе, либо делать SNAT пакетов, уходящих через wifi интерфейс, чтобы точка доступа совсем не видела пакетов от 192.168.0.3.

SNAT самое простое, это если вам не нужен доступ к виртуалке от других компьютеров сети 192.168.0.0/24.

mky ★★★★★
()
Ответ на: комментарий от mky

спасибо за инфу, forwarding я сделал так:

iptables -A FORWARD -i vnet0 -o wlp2s0 -j ACCEPT

(wlp2s0 - wifi), теперь делаю, например, из виртуалки ping 8.8.8.8 и вижу через iptables -L FORWARD -v:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    8   672 ACCEPT     all  --  vnet0  wlp2s0  anywhere             anywhere

То есть, пакеты туда форвардятся, а для обратного пути надо настроить SNAT? Копаю Гугл, но не могу постичь, как...

Sahas ★★★★☆
() автор топика

Вроде, разобрался с SNAT, помогло:

iptables -t nat -A POSTROUTING  -s 192.168.0.3 -j SNAT --to-source 192.168.0.2
Sahas ★★★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.