Puteți utiliza o punte fără a-i aservi nici una dintre interfețele fizice Ethernet de pe gazda VM.
Să presupunem că rămânem cu alegerea subrețelei 10.0.2.0/24
(ceea ce NU este necesar):
# ip adaug bridge de tip natbr0
# ip a add 10.0.2.1/24 dev natbr0
Apoi creați următorul fișier:
$ echo 'permite natbr0' | sudo tee /etc/qemu/bridge.conf
permite natbr0
Apoi începeți qemu cu de ex. -nic pod,br=natbr0
sau -netdev bridge,br=natbr0,id=nb0 -device virtio-net,netdev=nb0
, care va Atingeți
VM-ul dvs. către punte într-o manieră dinamică (adică, Atingeți
interfața va fi eliminată odată ce VM-ul este oprit).
Va trebui să configurați IP-ul static și pe VM:
# ip a add 10.0.2.2/24 dev ens3
# ip r adăugați implicit prin 10.0.2.1
Cu excepția cazului în care configurați și un server DHCP (cu, de exemplu, dnsmasq) pe gazdă. Nu uitați să configurați serverul DNS pentru a fi utilizat și în interiorul VM.
Rețineți că VM-urile care folosesc aceeași punte pot comunica între ele, cu excepția cazului în care blocați o astfel de comunicare prin anumite mijloace (de exemplu, ebtables).
The Mod implicit
ruta (și serverul DNS de utilizat) sunt necesare numai dacă doriți ca VM-ul să poată ajunge în „exterior”. Dacă aveți nevoie doar de el pentru a putea comunica cu gazda VM, ar trebui să omiteți a doua comandă și puteți opri citirea. (Ei bine, citește P.S.
)
Cel mai bine ar fi probabil să configurați de ex. dnsmasq de pe gazdă să fie un forwarder DNS dacă nu doriți să utilizați un anumit server DNS „public” în VM, deși folosiți DNAT pentru a transmite cereri DNS către, de ex. 192.168.1.1
ar trebui să funcționeze pentru cele de bază.
Apoi va trebui să activați redirecționarea IP:
# sysctl -w net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1
Dacă doriți să evitați redirecționarea IP de la/la o anumită interfață de rețea (de exemplu. tun0
) din motive de securitate, va trebui să configurați un firewall. De exemplu:
# iptables -A FORWARD -i tun0 -j DROP
# iptables -A FORWARD -o tun0 -j DROP
Deoarece aveți rute de tunel (VPN) care practic suprascriu Mod implicit
rută, traficurile de la VM către Internet vor intra și în tunel (cu excepția cazului în care ați adăugat regulile exemplu de mai sus). Dacă doriți ca traficurile să meargă de ex. prin routerul dvs., veți avea nevoie de rutare a politicii. De exemplu:
# ip ru add iif natbr0 tabelul de căutare 123
# ip r add 192.168.1.1 dev wlan0 tabelul 123 # probabil opțional
# ip r adăugați implicit prin 192.168.1.1 tabelul 123
De asemenea, puteți împiedica VM-urile dvs. să poată ajunge la gazdele dvs. LAN:
# iptables -A FORWARD -i natbr0 -d 192.168.1.0/24 -j DROP
Faceți excepții (rețineți că -Eu
) dacă intenționați să redirecționați cererile DNS către router:
# iptables -I FORWARD -i natbr0 -d 192.168.1.1 -p tcp --dport 53 -j ACCEPT
# iptables -I FORWARD -i natbr0 -d 192.168.1.1 -p udp --dport 53 -j ACCEPT
În cele din urmă, configurați iptables pentru a efectua SNAT în mod dinamic (conform interfeței de ieșire) pentru subrețeaua dvs. VM:
# iptables -t nat -A POSTROUTING -s 10.0.2.0/24 -j MASQUERADE
Rețineți că acest lucru NU este destinat și nu va împiedica exact anumite traficuri din „exterior” (gazdele LAN fizice sau Internetul; gazda VM nu contează) pentru a putea ajunge la VM-urile dumneavoastră. Pur și simplu întrerupe comunicarea ca efect secundar atunci când adresa sursă a traficurilor de răspuns de la VM-urile sunt schimbate înainte de a le transmite.Pentru o izolare adecvată, veți avea nevoie de reguli (suplimentare) adecvate în REDIRECŢIONA
lanţ. Luați în considerare o configurație „de stat” acolo dacă aveți o astfel de nevoie.
În plus, puteți redirecționa solicitările DNS către gazdă de la VM-uri către router:
iptables -t nat -A PREROUTING -d 10.0.2.1 -p udp --dport 53 -j DNAT --to-destination 192.168.1.1
iptables -t nat -A PREROUTING -d 10.0.2.1 -p tcp --dport 53 -j DNAT --to-destination 192.168.1.1
Care vă va permite mai mult sau mai puțin să utilizați 10.0.2.1
ca server DNS în VM.
P.S. Toate manipulările de mai sus (cu excepția creării / scrie la /etc/qemu/bridge.conf
) sunt volatile, adică vor dispărea odată ce reporniți (cu excepția cazului în care distribuția dvs. face ceva prostesc). Nu mă voi scufunda în modul în care le puteți face persistente, deoarece există moduri/abordări diferite și poate fi specific distro.