Как сделать постоянные интерфейсы после перезагрузки?


24

Некоторые задачи требуют настройки интерфейсов касания + назначения владельца . Итак, я делаю это вручную:

sudo tuntap -u <username>
sudo ifconfig tap0 up
sudo ip a a 192.168.1.1/24 dev tap0

или используя

ip tuntap add dev tap0 mode tap user <username>

Как я могу сделать настройку интерфейсов касания постоянной после перезагрузок, не добавляя эти команды в скрипт оболочки и добавляя в автозагрузку

Я имею в виду делать это через / etc / network / interfaces, как показано ниже:

iface tap1 inet static
address 192.168.1.121
netmask 255.255.255.0
pre-up /usr/sbin/tunctl -u ajn -t tap1

Но по какой-то причине это не работает.

Любые идеи?

Ответы:


20

Я не вижу, на всю жизнь, почему этот вопрос должен быть отвергнут. Это ясно, правильно, у него есть четко определенный ответ. Я проголосовал за это.

Вы используете устаревшие утилиты, такие как tunctl, вместо этого вы должны использовать ip . Правильный раздел для / etc / network / interfaces :

    iface tap1 inet manual 
    pre-up ip tuntap add tap1 mode tap user root
    pre-up ip addr add 192.168.1.121/24 dev tap1
    up ip link set dev tap1 up
    post-up ip route del 192.168.1.0/24 dev tap1 
    post-up ip route add 192.168.1.121/32 dev tap1
    post-down ip link del dev tap1

Ваша ошибка заключалась в использовании статического вместо ручного . Причина в том, что, поскольку вы пытаетесь дать виртуальному интерфейсу адрес в той же подсети, что и ваше основное межфайонное соединение (wlan0 / eth0), когда он пытается автоматически добавить локальный маршрут,

    ip route add 192.168.1.0/24 dev tap1

он находит, что такой маршрут уже существует, и жалуется. Если вы используете руководство вместо статического, вы можете удалить этот маршрут, который, конечно, бесполезен.

Кроме того, вы должны добавить маршрут

     ip route add 192.168.1.121/32 dev tap1

сообщить ядру, что есть исключение из маршрута

     ip route add 192.168.1.0/24 dev eth0/wlan0 

Вот и все.


Что-то не работает для меня здесь, на Ubuntu 17.10: мой tun0 не создан - статус службы сети говорит о том, что интерфейс tun0не существует. Вот файл интерфейсов, если кто-нибудь захочет
velis

@velis Ваш новый интерфейс называется tap0 , а не tun0 , поэтому он не найден. Обратите внимание, что интерфейсы tun и tap принципиально отличаются, en.wikipedia.org/wiki/TUN/TAP , какой из них вы хотите создать?
MariusMatutiae

Да, это называется tap0. Этот ответ о создании устройства с переключателем, а не о настройке. Я не понимаю, как это может быть причиной моей неудачи. Команда pre-up add device отлично выполняется из командной строки.
Велис

Оказывается, мне не хватало auto tap0строфы. Гист обновляется соответственно.
Вели

0

Есть еще несколько шагов, которые вам могут понадобиться сделать:

  1. Добавьте новую таблицу маршрутизации. Отредактируйте / etc / iproute2 / rt_tables, чтобы добавить новую таблицу маршрутизации. Назовите его таблицей маршрутизации «rt2» и установите для нее предпочтения 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Как объяснялось в предыдущем ответе, создайте интерфейс подключения, но затем вам необходимо настроить новые таблицы маршрутизации и установить правила маршрутизации. Добавьте в / etc / network / interfaces:
   #create a tap interface and make it persistent
    iface tap1 inet manual 
    pre-up ip tuntap add tap1 mode tap user root
    pre-up ip addr add 192.168.1.121/24 dev tap1
    up ip link set dev tap1 up
    post-up ip route del 192.168.1.0/24 dev tap1 
    post-up ip route add 192.168.1.121/32 dev tap1
    post-down ip link del dev tap1

    #configure the new routing table so that network 192.168.1.0 can be reached through the tap1 interface
    post-up ip route add 192.168.1.0/24 dev tap1 src 192.168.1.121 table rt2

    #set the default gateway to be 192.168.1.10
    post-up ip route add default via 192.168.1.10 dev tap1 table rt2

    #set rules so that traffic from and to 192.168.1.121 use the rt2 routing table 
    post-up ip rule add from 192.168.1.121/24 table rt2
    post-up ip rule add to 192.168.1.121/24 table rt2
sudo ifup tap1

Чтобы проверить это:

ip route list table rt2
ip rule show
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.