再起動後にタップインターフェイスを永続的にする方法


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が存在しないと表示されます。:誰も苦労は見て取る場合はここでinterfacesファイルですgist.github.com/velis74/ab75a46893eaed8bd08b8c6292b2737a
velis

@velis新しいインターフェースはtun0ではなくtap0と呼ばれ、それが見つからない理由です。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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.