· freebsd tap autostart

Автоматическое создание TAP-интерфейса и его настройка при загрузке FreeBSD

Автоматическое создание 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
  • LinkedIn
  • Tumblr
  • Reddit
  • Google+
  • Pinterest
  • Pocket