IPNAT: простой NAT
IPNAT является подсистемой для IPFilter, кроссплатформенного файрволла, который был портирован на несколько ОС, включая *BSD. Подробнее про IPFilter на английском языке.
Делать NAT может потребоваться по многим причинам, например, выпустить виртуальную машину “в мир” с помощью NAT. Это может быть полезно если вы держите виртуалку для разработки или тестирования на своем ноутбуке, который не сидит в одной сети (то есть вы ходите с ним на работу, подключаетесь к разным Wi-Fi точкам, и т.д.). Для того, чтобы виртуалка всегда работала, надо выполнить следующие действия:
- Создать TAP интерфейс.
- Назначить ему адрес и сетевую маску.
- Настроить правильно сеть для виртуальной машины.
- Настроить NAT.
Данная статья описывает четвертый пункт из этого списка.
Возможно, создание TAP-интерфейса не является правильным и тут правильнее будет создать отдельный мост. Однако создание моста может потребовать изменения сетевых настроек, которые у нас должны получаться по DHCP, поэтому выбор пал именно на TAP.
IPNAT входит в стандартную поставку FreeBSD, поэтому ничего доустанавливать не нужно.
/etc/rc.conf
Вносим следующие изменения в /etc/rc.conf
:
ipnat_enable="YES" # Включаем IPNAT.
ipnat_program="/sbin/ipnat" # Местонахождение бинарника IPNAT.
ipnat_rules="/etc/ipnat.rules" # Файл описания правил IPNAT.
ipnat_flags="" # Флаги, которые передаются IPNAT при запуске.
Включаем форвардинг пакетов через sysctl
:
net.inet.ip.forwarding=1
Настройка IPNAT
Примем, что:
wlan0
- внешний интерфейс.192.168.255.0/24
- подсеть для локальных виртуалок.
В этом случае в /etc/ipnat.rules
необходимо добавить следующую строчку:
map wlan0 192.168.255.0/24 -> 0.0.0.0/32
Эта строчка позволяет использовать динамический внешний адрес (или вообще любой внешний адрес) для натирования трафика. В этом случае трафик будет уходить в шлюз, который настроен по-умолчанию.
Если вы подключены к VPN - в этом случае трафик будет уходить через VPN.
Завершение настройки
Для завершения настройки перезапустите сервис ipnat:
service ipnat restart
или же перезагрузите компьютер. При загрузке NAT должен быть настроен автоматически.
Статистика
Для получения статистики от IPNAT необходимо выполнить следующую команду:
ipnat -s