TAP: автоматическое создание интерфейса и его настройка
Автоматическое создание TAP-интерфейса может быть необходимо по нескольким причинам:
- Выпустить виртуальную машину “в мир” через NAT.
- Настройка автоматического запуска VPN соединения через нестандартный VPN клиент (или демон).
По-умолчанию FreeBSD не создает TAP-интерфейс даже если в /etc/rc.conf
указаны его настройки. Поэтому необходимо немного “похимичить”, чтобы интерфейс поднимался автоматически при загрузке системы.
Эта статья подразумевает, что в качестве имени TAP-интерфейса будет использоваться tap2000
, а в качестве сети для интерфейса: 192.168.255.0/24
.
/boot/loader.conf
Необходимо загрузить модуль ядра для работы с TAP-интерфейсами. Для этого допишем в /boot/loader.conf
:
if_tap_load="YES"
Эта строка укажет загрузчику загружать модуль при загрузке системы. Если же перманентные изменения не нужны, то можно просто загрузить модуль руками:
# kldload if_tap
/etc/rc.conf
Так как автоматически интерфейс не поднимается - необходимо добавить команды для ручного запуска. Это можно сделать в /etc/rc.local
, но перед этим необходимо включить сервис, который будет этот файл выполнять:
local_enable="YES"
/etc/rc.local
По умолчанию такого файла не существует, и его надо создать вручную.
Добавим в него следующие строчки:
#!/bin/sh
# Поднимаем интерфейс.
echo -n > /dev/tap2000
# Настраиваем интерфейс.
ifconfig tap2000 inet 192.168.255.1 netmask 255.255.255.0
Для применения изменений просто перезапускаем сервис local
:
# service local restart
Даем доступ к интерфейсу обычному пользователю
Данный раздел релевантен только для тех, кто хочет выпустить виртуальную машину “в мир” с помощью TAP-интерфейса.
Добавляем в /etc/devfs.rules
следующую строку:
add path 'tap2000' mode 666
В /etc/devfs.conf
:
# taps.
perm /dev/tap2000 0666
Возможно, последнее действие не нужно. Проверьте!
После чего перезагружаем компьютер, или перезагружаем сервис devfs
:
# service devfs restart