У меня есть настольный компьютер с Ubuntu 14.04, на котором установлен VirtualBox. Я делаю две виртуальные машины, один сервер Ubuntu, другой клиент Lubuntu. Настройки по умолчанию позволяют мне подключать Интернет от гостей к Интернету через 3G-модем, подключенный к хост-компьютеру, так как гости по умолчанию используют NAT, но я не могу подключиться от клиента к серверу.
Я хочу разместить двух гостей в отдельной сети и разрешить гостевому серверу подключаться к Интернету через NAT с другим сетевым интерфейсом, а также заставить гостевого клиента подключаться к Интернету через гостевой сервер.
Я сделал следующее:
Что я должен сделать, чтобы гостевой сервер подключился к Интернету, а затем чтобы гостевой клиент мог подключиться и к Интернету, но через гостевой сервер?
У Вас есть список режимов организации сети VirtualBox в его Документации.
Тот, в котором Вы нуждаетесь в обеих системах, является Внутренними сетями. Необходимо дать ему имя, можно создать несколько сетей в этом режиме. VirtualBox соединит всех гостей в той же внутренней сети, таким образом, имена должны будут соответствовать на обеих виртуальных машинах. Значение по умолчанию должно работать правильно out-of-the-box.
Серверу нужны Внутренние сети с тем же именем и другим, который соединяется с миром в Вашем случае NAT.
Теперь гостевой сервер должен смочь соединиться с Интернетом через интерфейс NAT.
Чтобы клиенту и серверу достигают друг друга, их интерфейсы должны быть настроены в той же сети. Можно сделать это вручную (статические адреса) или конфигурирование сервера DHCP в машине сервера.
Это шаги, чтобы сделать это вручную:
root@server:~# ifconfig eth0 192.168.1.1 netmask 255.255.255.0
root@client:~# ifconfig eth0 192.168.1.5 netmask 255.255.255.0
Можно установить любой IP, который Вы хотите, но они должны быть в той же сети. Здесь, eth0
в сервере машина относится к Внутреннему интерфейсу при установке интерфейса 1 столь же Внутренний и 2 как NAT вышеупомянутые команды будут хорошо работать.
Теперь необходимо смочь ping
друг друга, но пакеты от клиентской машины не сможет переместиться через машину сервера все же, только к серверу.
Примечание: Эти изменения будут потеряны в следующей перезагрузке, для внесения изменений постоянными, необходимо отредактировать и настроить /etc/network/interfaces
. При конфигурировании клиента с GUI от рабочего стола пропустите конфигурацию CLI.
Необходимо настроить передачу. Вы могли просто сделать
root@server:~# echo 1 > /proc/sys/net/ipv4/ip_forward
но это только работало бы, пока Вы не перезагружаете машину. Необходимо отредактировать /etc/sysctl.conf
и некомментарий #net.ipv4.ip_forward=1
таким образом, это похоже:
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
Это настроит машину сервера к передачам пакетов (в следующей перезагрузке).
Это настроит сервер, чтобы сделать подмену IP.
root@server:~# modprobe iptable_nat
root@server:~# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
root@server:~# iptables -A FORWARD -i eth0 -j ACCEPT
Заботьтесь о eth0
и eth1
, здесь 2-я строка должна быть -o NAT_interface
и 3-я строка -i Internal_interface
.
Эта установка должна была быть уже установлена, или в помощнике GUI или путем редактирования /etc/network/interfaces/
. На всякий случай это не применяется, добавьте маршрут по умолчанию через машину сервера:
root@client:~# route add default gw 192.168.1.1
Теперь необходимо смочь связаться от клиентской машины, но если бы Вы настроили IP-адреса вручную, то все еще необходимо обеспечить серверы DNS, таким образом, можно разрешить имена.
Править /etc/resolv.conf
и добавьте серверы, которые Вы любите:
nameserver 4.2.2.1
nameserver 4.2.2.2
nameserver 8.8.8.8
nameserver 8.8.4.4
При конфигурировании DHCP в машине сервера необходимо было уже сказать сервер DHCP, какие серверы DNS использовать (в противном случае делают это теперь).
Снова при конфигурировании клиента с помощником GUI просто удостоверьтесь, что DNS допустим и пропускает этот раздел.