Як зробити інтерфейси крана стійкими після перезавантаження?


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 / інтерфейси на зразок наступного:

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 / інтерфейсів :

    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не існує. Ось файл інтерфейсів, якщо хтось зацікавлений подивитися: gist.github.com/velis74/ab75a46893eaed8bd08b8c6292b2737a
velis

@velis Ваш новий інтерфейс називається tap0 , а не tun0 , тому його не знайдено. Зауважте, що інтерфейси налаштування та налаштування принципово відрізняються, en.wikipedia.org/wiki/TUN/TAP , який з них ви хочете створити?
MariusMatutiae

Так, це називається tap0. Ця відповідь стосується створення крана, а не налаштування. Я не бачу, як це може бути причиною моєї невдачі. Команда пристрою попереднього додавання пристрою ідеально виконується з командного рядка.
velis

Виявляється, я бракував лише auto tap0строфи. Суть оновлена ​​відповідно.
velis

0

Ви можете зробити ще кілька кроків:

  1. Додайте нову таблицю маршрутизації Edit / etc / iproute2 / rt_tables, щоб додати нову таблицю маршрутизації. Назвіть його таблицю маршрутизації "rt2" і встановіть її переваги у 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Як пояснено в попередній відповіді, створіть інтерфейс для вибору, але потім вам потрібно налаштувати нові таблиці маршрутизації та встановити правила маршрутизації. Додати в / etc / network / interface:
   #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.