Инструменты: Ubuntu 8.10, Sun xVM VirtualBox 2.1.4
У меня стоит ubuntu 8.10, ADSL модем подключеный через ethernet к машине (ip 192.168.1.1), внутренний ip компьютера 192.168.1.2 как eth0 - после установки VirtualBox он автоматически прописался в таблицу хост-интерфейсов.(см. настройка сети в VirtualBox)
Создаем две виртуальные машины Ubuntu 8.10 (U8) и Windows XP (XP). Для XP настроим один сетевой адаптер как хост-интерфейс. U8 будет шлюзом в интернет, для этого создаем два сетевых интерфейса: один NAT, а второй как хост-интерфейс (Если у вас нет физического ethernet интерфейса используйте для виртуальных сетевых устройств режим "виртуальный адаптер хоста" ). Запускаем виртуальную машину U8 и...
NAT интерфейс у меня eth0, получает адрес от virtualbox ip 10.0.2.15. с помощью network-manager второй eth1 настроил интерфейс так ip=192.168.1.3/24. В итоге:
$ netstat -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.0.2.0 * 255.255.255.0 U 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth1
link-local * 255.255.0.0 U 0 0 0 eth0
default 10.0.2.2 0.0.0.0 UG 0 0 0 eth0
а DNS сервер определяем так
$cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3
Далее все делал по внутренней документации Ubuntu Server Guide (см. Настройка UFW).
Ниже следует мой сокращенный перевод
Настройка ip Masquerading на правилах ufw .
Во первых , необходимо включить пересылку пакетов. Для этого убедитесь, что в файле /etc/default/ufw параметру DEFAULT_FORWARD_POLICY присвоено значение “ACCEPT”:
DEFAULT_FORWARD_POLICY="ACCEPT"
В файле /etc/ufw/sysctl.conf уберите комментарий из строчки:
net.ipv4.ip_forward=1
а для IPv6 :
net.ipv6.conf.default.forwarding=1
Далее необходимо в начало файла (после начальных коментариев) /etc/ufw/before.rules добавить правила:
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth1 through eth0.
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
Учтите, что после изменений правил в фалах /etc/ufw, вы должны добавлять команду commit
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
После изменений перезапустим ufw:
sudo ufw disable && sudo ufw enable
Стандартный для linux метод, включения masquerading через iptables
Как и для ufw, первый шаг включение пакетной пересылки. В файле /etc/sysctl.conf расскомментируйте строки:
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
затем , выполните команду sysctl для принятия изменений:
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/16 -o eht0 -j MASQUERADE
sudo iptables -A FORWARD -s 192.168.1.0/16 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.1.0/16 -m state --state ESTABLISHED,RELATED -i eth0 -j ACCEPT
Чтобы все это работало после перезагрузки необходимо добавить эти команды в файл /etc/rc.local. Настройки хорошо описаны в различных источниках о linux, поэтому не буду их комментировать.
Остается запустить виртуальную машину XP и настроить в ней сеть, например:
ip 192.168.1.30
маска 255.255.255.0
шлюз 192.168.1.3
dns 10.0.2.3
Как настроить получение динамических адресов смотрите статью Настройка DHCP сервера
Проверим работу нашего шлюза:
C:\Documents and Settings\user>ping -n 1 ya.ru
При проверке связи не удалось обнаружить узел ya.ru. Проверьте имя узла и повторите попытку.
Не работает!? Правильно, firewall то мы не настраивали! Временно его отключим:
sudo ufw disable
и повторим ping:
C:\Documents and Settings\user>ping -n 1 ya.ru
Обмен пакетами с ya.ru [213.180.204.8] по 32 байт:
Ответ от 213.180.204.8: число байт=32 время=26мс TTL=125
Статистика Ping для 213.180.204.8:
Пакетов: отправлено = 1, получено = 1, потеряно = 0 (0% потерь),
Приблизительное время приема-передачи в мс:
Минимальное = 26мсек, Максимальное = 26 мсек, Среднее = 26 мсек
У меня все заработало, а у вас?
Оставить комментарий в Гостевая книга