Bagaimana cara membuat antarmuka tap tetap ada setelah reboot?

24

Beberapa tugas memerlukan antarmuka tap yang dikonfigurasi + tetapkan kepemilikan . Jadi, saya melakukannya secara manual:

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

atau menggunakan

ip tuntap add dev tap0 mode tap user <username>

Bagaimana saya bisa membuat konfigurasi antarmuka tap tetap setelah reboot tanpa menambahkan perintah ini ke skrip shell dan menambahkan ke startup

Apa yang ada dalam pikiran saya adalah melakukannya melalui / etc / network / interfaces seperti berikut:

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

Tetapi untuk beberapa alasan, itu tidak berhasil.

Ada ide?

AJN
sumber

Jawaban:

20

Saya tidak bisa melihat, untuk kehidupan saya, mengapa pertanyaan ini harus dipilih. Jelas, benar, ia memiliki jawaban yang jelas. Saya telah membatalkannya.

Anda menggunakan utilitas usang seperti tunctl, Anda harus menggunakan ip sebagai gantinya. Bait yang benar untuk / etc / network / interfaces adalah:

    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

Kesalahan Anda dalam menggunakan statis, bukan manual . Alasannya adalah, karena Anda mencoba memberikan ke antarmuka virtual alamat dalam subnet yang sama dengan antaragama utama Anda (wlan0 / eth0), ketika mencoba secara otomatis untuk menambahkan rute lokal,

    ip route add 192.168.1.0/24 dev tap1

ia menemukan bahwa rute semacam itu sudah ada, dan ia mengeluh. Jika Anda menggunakan manual alih-alih statis, Anda diizinkan untuk menghapus rute ini, yang tentu saja tidak berguna.

Anda juga harus menambahkan rute

     ip route add 192.168.1.121/32 dev tap1

untuk memberi tahu kernel Anda bahwa ada pengecualian pada rute

     ip route add 192.168.1.0/24 dev eth0/wlan0 

Itu saja.

MariusMatutiae
sumber
Sesuatu tidak berfungsi untuk saya di sini di ubuntu 17.10: tun0 saya tidak dibuat - status jaringan layanan mengatakan bahwa antarmuka tun0tidak ada. Inilah file antarmuka jika ada yang mau melihatnya: gist.github.com/velis74/ab75a46893eaed8bd08b8c6292b2737a
velis
@velis Antarmuka baru Anda disebut tap0 , bukan tun0 , itu sebabnya tidak ditemukan. Harap perhatikan bahwa antarmuka tun dan ketuk pada dasarnya berbeda, en.wikipedia.org/wiki/TUN/TAP , yang mana yang ingin Anda buat?
MariusMatutiae
Ya, itu disebut tap0. Jawaban ini adalah tentang membuat perangkat tap, bukan yang tun. Saya gagal melihat bagaimana ini bisa menjadi penyebab kegagalan saya. Perintah add-up pre-up dieksekusi dengan sempurna dari command line.
velis
Ternyata saya hanya melewatkan auto tap0bait. Intinya diperbarui sesuai.
velis
0

Ada beberapa langkah lagi yang perlu Anda lakukan:

  1. Tambahkan tabel routing baru Edit / etc / iproute2 / rt_tables untuk menambahkan tabel routing baru. Sebut saja tabel routing "rt2" dan atur preferensi ke 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Seperti yang dijelaskan dalam jawaban sebelumnya, buat antarmuka tap, tetapi Anda harus mengonfigurasi tabel perutean baru, dan menetapkan aturan perutean. Tambahkan ke / 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

Untuk mengujinya:

ip route list table rt2
ip rule show
Ethan Ghoreishi
sumber