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

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