web-dev-qa-db-ja.com

再起動後にタップインターフェイスを永続化するにはどうすればよいですか?

一部のタスクでは、タップインターフェイス設定済み+所有権の割り当てが必要です。だから、私はそれを手動でやっています:

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

しかし、何らかの理由で機能しません。

何か案は?

24
AJN

私の人生において、なぜこの質問に反対票が投じられるべきか、私にはわかりません。明確で正しい、明確な答えがあります。私はそれを賛成しました。

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

あなたの間違いはmanualの代わりにstaticを使用することでした。その理由は、仮想インターフェースにメインインターフェース(wlan0/eth0)と同じサブネット内のアドレスを与えようとしているため、ローカルルートを自動的に追加しようとすると、

    ip route add 192.168.1.0/24 dev tap1

そのようなルートがすでに存在することがわかり、文句を言います。 staticの代わりにmanualを使用する場合、このルートを削除することが許可されますが、これはもちろん役に立ちません。

また、ルートを追加する必要があります

     ip route add 192.168.1.121/32 dev tap1

ルートに例外があることをカーネルに通知する

     ip route add 192.168.1.0/24 dev eth0/wlan0 

それで全部です。

21
MariusMatutiae

あなたがする必要があるかもしれないさらにいくつかのステップがあります:

  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
0
Ethan Ghoreishi