, последнее обновление:

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