Ok amigos! ¡Realmente agradecería algo de ayuda esta vez! = |
Estoy usando el virtualizador VirtualBox y estoy tratando de hacer que mis máquinas invitadas tengan acceso a Internet utilizando SOLO una interfaz de red "solo de host" (VirtualBox).
De acuerdo con la documentación oficial en https://www.virtualbox.org/manual/ch06.html usando una interfaz de red "solo host", tengo los siguientes "modos de red" (accesos) ...
VM <-> Host | YES
VM1 <-> VM2 | YES
VM -> Internet | NO
Sin embargo , hay MUCHAS documentaciones en Internet que le informan que puede acceder a Internet (usando solo la interfaz "solo host") desde una máquina invitada usando el siguiente "truco" / "solución" (ejemplo) en la máquina host ...
sudo iptables -A FORWARD -o <HOST_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
Probé muchos y muchos ejemplos. El iptables.service
se ejecuta correctamente en mi máquina host. ¿QUÉ ESTOY HACIENDO MAL?
Mi host es un Linux Manjaro (basado en Linux Arch).
¡Muchas gracias!
A continuación hay algunas fuentes con información sobre el "truco" / "solución" que mencioné ...
http://archlinux.org.ru/forum/topic/2219/ http://nerdbynature.de/s9y/2015/06/09/VirtualBox-switching-to-Host-only-networking https://askubuntu.com / preguntas / 293816 / in-virtualbox-how-do-i-set-up-host-only-virtual-machines-that-can-access-the-in https://cuckoo.sh/docs/installation/host/ routing.html https://downloads.cuckoosandbox.org/docs/installation/guest/network.html https://github.com/cuckoosandbox/cuckoo/issues/1376 https://jackal777.wordpress.com/2012/02 / 13 / internet-access-in-virtualbox-host-only-networking / https://kyrofa.com/posts/virtualbox-internet-access-with-host-only-network https://precisionsec.com/virtualbox- host-only-network-cuckoo-sandbox-0-4-2 / Virtualbox NAT y conexión solo host https://unix.stackexchange.com/questions/74663/virtualbox-nat-host-only-adapter https://www.howtogeek.com/howto/4922/week-in-geek-the-fixing-slow-internet -en-virtualbox-xp-guest-edition / https://www.rffuste.com/tag/cuckoo/ https://www.virtualbox.org/manual/ch06.html
A continuación se presentan algunos de los MUCHOS ejemplos que probé ...
> --------------------------------------------
sudo iptables -t nat -I POSTROUTING -s 192.168.56.0/24 -j MASQUERADE
sudo sysctl net.ipv4.ip_forward=1
sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -P POSTROUTING ACCEPT
< --------------------------------------------
> --------------------------------------------
sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
< --------------------------------------------
> --------------------------------------------
sudo iptables -A FORWARD -o <HOST_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
< --------------------------------------------
> --------------------------------------------
sudo iptables -A FORWARD -o <HOST_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o <HOST_INTERFACE_WITH_INTERNET> -j MASQUERADE
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
< --------------------------------------------
> --------------------------------------------
sudo iptables -A FORWARD -o <HOST_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv4.conf.all.proxy_arp=1
< --------------------------------------------
> --------------------------------------------
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -F
sudo iptables -t nat -A POSTROUTING -o <HOST_INTERFACE_WITH_INTERNET> -j MASQUERADE
sudo iptables -A FORWARD -i <HOST_INTERFACE_WITH_INTERNET> -o vboxnet0 -j ACCEPT
sudo iptables -A FORWARD -i vboxnet0 -o <HOST_INTERFACE_WITH_INTERNET> -j ACCEPT
< --------------------------------------------
> --------------------------------------------
sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo sysctl -w net.ipv4.ip_forward=1
< --------------------------------------------
> --------------------------------------------
sudo bash -c "printf \"net.ipv4.ip_forward = 1\nnet.ipv4.conf.all.proxy_arp = 1\n\" >> /etc/sysctl.conf"
sudo sysctl -p
sudo iptables -t filter -I FORWARD --in-interface vboxnet0 --out-interface <HOST_INTERFACE_WITH_INTERNET> --source 192.168.56.0/24 -j ACCEPT
sudo iptables -t filter -I FORWARD --in-interface <HOST_INTERFACE_WITH_INTERNET> --out-interface vboxnet0 --destination 192.168.56.0/24 -j ACCEPT
sudo iptables -t nat -I POSTROUTING -o <HOST_INTERFACE_WITH_INTERNET> -j MASQUERADE
< --------------------------------------------
> --------------------------------------------
sudo iptables -A POSTROUTING -o enp+ -t nat -j MASQUERADE
sudo iptables -A POSTROUTING -o wlp+ -t nat -j MASQUERADE
< --------------------------------------------
> --------------------------------------------
sudo iptables -A PREROUTING -t mangle -i vboxnet+ -j MARK --set-mark 1
sudo iptables -A POSTROUTING -o enp+ -t nat -m mark --mark 1 -j MASQUERADE
sudo iptables -A POSTROUTING -o wlp+ -t nat -m mark --mark 1 -j MASQUERADE
< --------------------------------------------
> --------------------------------------------
sudo iptables -t nat -A POSTROUTING -o <HOST_INTERFACE_WITH_INTERNET> -s 192.168.56.0/24 -j MASQUERADE
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -j ACCEPT
sudo iptables -A FORWARD -s 192.168.56.0/24 -d 192.168.56.0/24 -j ACCEPT
< --------------------------------------------
> --------------------------------------------
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -A FORWARD -o <HOST_INTERFACE_WITH_INTERNET> -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 192.168.56.0/24 -o <HOST_INTERFACE_WITH_INTERNET> -j MASQUERADE
sudo iptables -I INPUT 1 -i vboxnet0 -j ACCEPT
< --------------------------------------------
> --------------------------------------------
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo sysctl -p /etc/sysctl.conf
sudo iptables -I FORWARD -i vboxnet0 -d 192.168.56.0/255.255.255.0 -j DROP
sudo iptables -A FORWARD -i vboxnet0 -s 192.168.56.0/255.255.255.0 -j ACCEPT
sudo iptables -A FORWARD -i <HOST_INTERFACE_WITH_INTERNET> -d 192.168.56.0/255.255.255.0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o <HOST_INTERFACE_WITH_INTERNET> -j MASQUERADE
< --------------------------------------------
fuente
Respuestas:
INTRODUCCIÓN
Es una guía completa para tener los accesos "VM <-> Host", "VM1 <-> VM2" y "VM -> Internet" en los invitados utilizando una única interfaz de red ("solo host") en VirtualBox.
IMPORTANTE: Ejecute todos los comandos como "root".
EJECUTAR EN ANFITRIÓN
NOTA: Utilizamos un host Manjaro (basado en Arch) como plantilla. Es posible que necesite ajustes y cambios en otras distribuciones.
Necesita copiar el archivo de configuración de la plantilla de iptables ...
... para que pueda iniciar el "iptables.service".
Habilite e inicie "iptables.service" ...
Habilitar el reenvío de IP ...
Agregue las siguientes reglas de iptables. Esto reenviará los paquetes a través del host ("vboxnet0") y a Internet ...
PLANTILLA I... O agregue las siguientes reglas de iptables ...
PLANTILLA IINOTA: En la "PLANTILLA II" no necesita informar el nombre de la interfaz del host (
<HOST_INTERFACE_WITH_INTERNET>
) y el nombre de la interfaz VirtualBox (vboxnet0
). De esa manera, cualquier interfaz de host que tenga Internet funcionará, es decir, no tengo que ajustar el nombre de la interfaz que tiene Internet cada vez que cambia. Un ejemplo de esto es cuando cambiamos de la interfaz con cable (por ejemplo: enp4s0f2) a la interfaz inalámbrica (por ejemplo: wlp3s0) y viceversa.PREGUNTA ADICIONAL: presenté dos formas de configurar "iptables" porque no sé si hay alguna ventaja en usar la "PLANTILLA I". ¿Cualquier comentario?
SUGERENCIA: para averiguar el nombre de la interfaz de red (
<HOST_INTERFACE_WITH_INTERNET>
) que tiene Internet, utilice el comando "ip a".Guarde las reglas en la configuración de iptables y reinicie el servicio ...
Habilite e inicie "dnsmasq" en el host ...
NOTA: "dnsmasq" es un pequeño proxy DNS de almacenamiento en caché y un servidor DHCP / TFTP.
EJECUTAR EN INVITADO
NOTA: Usamos un invitado CentOS 7 como plantilla. Es posible que necesite ajustes y cambios en otras distribuciones.
Configure la interfaz de red según el modelo ...
NOTA: El archivo de configuración de red está en la ruta de la carpeta "/ etc / sysconfig / network-scripts /".
P.ej.:
Reiniciar el servicio de red ...
Probar...
REFERENCIA
fuente