Làm thế nào để làm cho giao diện tap liên tục sau khi khởi động lại?


24

Một số tác vụ yêu cầu phải có giao diện nhấn được cấu hình + gán quyền sở hữu . Vì vậy, tôi đang làm nó bằng tay:

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

hoặc sử dụng

ip tuntap add dev tap0 mode tap user <username>

Làm cách nào tôi có thể tạo cấu hình giao diện nhấn liên tục sau khi khởi động lại mà không cần thêm các lệnh này vào tập lệnh shell và thêm vào khởi động

Những gì tôi có trong tâm trí là thực hiện nó thông qua / etc / mạng / giao diện như sau:

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

Nhưng vì một số lý do, nó không hoạt động.

Có ý kiến ​​gì không?

Câu trả lời:


20

Tôi không thể thấy, đối với cuộc sống của tôi, tại sao câu hỏi này nên được bỏ phiếu. Rõ ràng, chính xác, nó có một câu trả lời được xác định rõ. Tôi đã nâng cấp nó.

Bạn đang sử dụng các tiện ích lỗi thời như tuncl, bạn nên sử dụng ip thay thế. Các khổ chính xác cho / etc / mạng / giao diện là:

    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

Lỗi của bạn là sử dụng tĩnh thay vì thủ công . Lý do là vì bạn đang cố gắng cung cấp cho giao diện ảo một địa chỉ trong cùng mạng con với interfae chính của bạn (wlan0 / eth0), khi nó cố gắng tự động thêm một tuyến cục bộ,

    ip route add 192.168.1.0/24 dev tap1

nó thấy rằng một tuyến đường như vậy đã tồn tại và nó phàn nàn. Nếu bạn sử dụng thủ công thay vì tĩnh, bạn được phép xóa tuyến đường này, điều này tất nhiên là vô ích.

Ngoài ra, bạn nên thêm một tuyến đường

     ip route add 192.168.1.121/32 dev tap1

để thông báo cho kernel của bạn rằng có một ngoại lệ đối với tuyến đường

     ip route add 192.168.1.0/24 dev eth0/wlan0 

Đó là tất cả.


Một cái gì đó không hoạt động với tôi ở đây trên Ubuntu 17.10: tun0 của tôi không được tạo - trạng thái mạng dịch vụ nói rằng giao diện tun0đó không tồn tại. Đây là tập tin giao diện nếu có ai quan tâm: gist.github.com/velis74/ab75a46893eaed8bd08b8c6292b2737a
velis

@velis Giao diện mới của bạn được gọi là tap0 , không phải tun0 , đó là lý do tại sao nó không được tìm thấy. Xin lưu ý rằng các giao diện tuntap khác nhau về cơ bản, en.wikipedia.org/wiki/TUN/TAP , bạn muốn tạo giao diện nào?
MariusMatutiae

Vâng, nó được gọi là tap0. Câu trả lời này là về việc tạo ra một thiết bị nhấn chứ không phải điều chỉnh. Tôi không thấy làm thế nào điều này có thể là nguyên nhân thất bại của tôi. Lệnh thêm thiết bị trước thực hiện hoàn hảo từ dòng lệnh.
velis

Hóa ra tôi chỉ thiếu một khổ auto tap0thơ. Gist cập nhật cho phù hợp.
velis

0

Có một vài bước nữa bạn có thể cần phải làm:

  1. Thêm bảng định tuyến mới Chỉnh sửa / etc / iproute2 / rt_tables để thêm bảng định tuyến mới. Gọi nó là bảng định tuyến, rt2, và đặt tùy chọn của nó thành 1:
    55     local
    254     main
    253     default
    0       unspec
    1       rt2
  1. Như đã giải thích trong câu trả lời trước, hãy tạo giao diện nhấn, nhưng sau đó bạn cần định cấu hình các bảng định tuyến mới và đặt quy tắc định tuyến. Thêm vào / etc / mạng / giao diện:
   #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

Để kiểm tra nó:

ip route list table rt2
ip rule show
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.