Voici un petit mémo pour installer rapidement une passerelle et un serveur DHCP sous Ubuntu Server 10.10 dans VirtualBox.
Le principe :
Installer un réseau privé dans VirtualBox accessible de la machine qui exécute VirtualBox via une passerelle.
Source : http://www.howtoforge.com/nat-gateway-iptables-port-forwarding-dns-and-dhcp-setup-ubuntu-8.10-server
Avec des corrections…
Suivant votre configuration, il faudra remplacer le nom de la machine et le domaine.
Pré-requis :
- Une machine Ubuntu Server 10.10
- 2 cartes réseau
- Carte 0 : Accès par pont
- Carte 1 : Réseau interne
Données :
- Nom de la machine : ubsrvpass
- Domaine : jbnet.lan
- La carte 1 (eth1) aura pour ip 172.17.207.121
Contenu du fichier /etc/hosts
1 2 3 4 5 6 7 8 9 |
127.0.0.1 localhost ubsrvpass.localhost 172.17.207.121 ubsrvpass.jbnet.lan ubsrvpass jbnet.lan # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters |
Contenu du fichier /etc/hostname
1 |
ubsrvpass |
Contenu du fichier /etc/network/interfaces
1 2 3 4 5 6 7 8 9 10 11 12 |
auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 172.17.207.121 netmask 255.255.255.0 network 172.17.207.0 broadcast 172.17.207.255 |
Installation du serveur DHCP
1 |
sudo apt-get install dhcp3-server |
Contenu du fichier /etc/dhcp3/dhcpd.conf
1 2 3 4 5 6 7 8 9 10 11 |
ddns-update-style none; option domain-name "jbnet.lan"; option domain-name-servers 172.17.207.121, 208.67.222.222, 208.67.220.220; option routers 172.17.207.121; default-lease-time 42300; max-lease-time 84600; authoritative; log-facility local7; subnet 172.17.207.0 netmask 255.255.255.0 { range 172.17.207.1 172.17.207.100; } |
Le serveur DHCP ne doit répondre que sur la carte 1.
Contenu du ficher /etc/default/dhcp3-server
1 |
INTERFACES="eth1" |
Démarrer le serveur DHCP :
1 |
sudo /etc/init.d/dhcp3-server start |
Maintenant, toutes les machines virtuelles qui auront une carte réseau configurée sur « Réseau interne » auront une IP attribuée par le serveur DHCP.
Installation de IPTables
L’objectif est d’établir une passerelle entre la machine qui exécute VirtualBox et les machines présentes sur le réseau interne de VirtualBox via la passerelle.
1 |
sudo apt-get install iptables |
Décommenter la ligne suivante dans le fichier /etc/sysctl.conf
1 |
net.ipv4.ip_forward=1 |
Ajouter ces lignes dans le fichier /etc/rc.local
1 2 |
/sbin/iptables -P FORWARD ACCEPT /sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE |
Avant la ligne exit 0.
Redémarrer complétement le serveur.
1 |
sudo reboot |
Oui, mais….
Je n’arrive pas à pinger la machine qui est sur le réseau interne à partir de la machine host (la physique, celle qui exécute VirtualBox).
Tout est question de route.
D’abord, récupérer l’adresse IP attribuée au serveur DHCP sur la carte 0.
Ensuite, récupérer l’adresse IP attribuée par le serveur DHCP à la machine présente sur le réseau interne.
(C’est de la bidouille, je sais, mais c’est juste pour vérifier que tout fonctionne !)
Sur la machine hôte (celle qui exécute VirtualBox), exécuter la commande suivante :
1 |
route add -host 172.17.207.1 gw 192.168.0.17 wlan0 |
Explication :
Je cherche à joindre la machine virtuelle 172.17.207.1 via la machine virtuelle (serveur DHPC installé ci-dessus) 192.168.0.17 en utilisant ma carte wifi (wlan0).
192.168.0.17 : adresse IP attribuée par mon routeur Freebox sur la carte 0 (eth0) de ma machine virtuelle (serveur DHCP)
Pourquoi ma carte wifi ? C’est parceque je suis en wifi sur ma Freebox (sinon utiliser eth0).
Maintenant un petit ping et tout est ok !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
linux-sdna:/ # ifconfig wlan0 wlan0 Link encap:Ethernet HWaddr 00:17:C4:47:C8:6B inet adr:192.168.0.10 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::217:c4ff:fe47:c86b/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63988 errors:0 dropped:0 overruns:0 frame:0 TX packets:55043 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 lg file transmission:1000 RX bytes:67625069 (64.4 Mb) TX bytes:6621387 (6.3 Mb) linux-sdna:/ # ping 172.17.207.1 PING 172.17.207.1 (172.17.207.1) 56(84) bytes of data. 64 bytes from 172.17.207.1: icmp_seq=1 ttl=63 time=5.81 ms 64 bytes from 172.17.207.1: icmp_seq=2 ttl=63 time=1.96 ms 64 bytes from 172.17.207.1: icmp_seq=3 ttl=63 time=2.38 ms 64 bytes from 172.17.207.1: icmp_seq=4 ttl=63 time=2.18 ms ^C --- 172.17.207.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 1.960/3.085/5.813/1.582 ms |