web-dev-qa-db-ja.com

物理アダプターのないマシンで仮想イーサネットインターフェイスを作成するにはどうすればよいですか?

Dell XPS 13ウルトラブックを持っていますが、これにはwifi nicがありますが、物理イーサネットnic(wlan0、ただしeth0)はありません。 NFSでVagrantを使用するための仮想アダプターを作成する必要がありますが、一般的なifup eth0:1...ignoring unknown interface eth0:1=eth0:1で失敗することがわかりました。また、wlan0に対して仮想インターフェースを作成してみましたが、同じ結果が得られました。

物理インターフェイスなしでこのマシンに仮想インターフェイスを作成するにはどうすればよいですか?

75
STW

ダミーインターフェイスのセットアップ

ネットワークインターフェイスを作成したいが、物理的なNICそれをサポートしていない場合は、ダミーのリンクタイプを使用できます。それらの詳細については、こちらをご覧ください。 iproute2 Wikipedia page

Eth10の作成

このインターフェイスを作成するには、まずダミーのカーネルモジュールが読み込まれていることを確認する必要があります。あなたはそうすることができます:

$ Sudo lsmod | grep dummy
$ Sudo modprobe dummy
$ Sudo lsmod | grep dummy
dummy                  12960  0 

ドライバーが読み込まれたら、ダミーネットワークインターフェイスを作成できます。

$ Sudo ip link add eth10 type dummy

注:ipの古いバージョンでは、上記のようにすると、途中で変更されたように見えます。これを参照目的でここに保持しますが、コメントによるフィードバックに基づいて、上記は現在機能します。

$ Sudo ip link set name eth10 dev dummy0

そしてそれを確認してください:

$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether c6:ad:af:42:80:45 brd ff:ff:ff:ff:ff:ff

MACの変更

その後、必要に応じてMACアドレスを変更できます。

$ Sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether 00:22:22:ff:ff:ff brd ff:ff:ff:ff:ff:ff

エイリアスを作成する

次に、eth10の上にエイリアスを作成できます。

$ Sudo ip addr add 192.168.100.199/24 brd + dev eth10 label eth10:0

そして、それらをそのように確認します:

$ ifconfig -a eth10
eth10: flags=130<BROADCAST,NOARP>  mtu 1500
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ifconfig -a eth10:0
eth10:0: flags=130<BROADCAST,NOARP>  mtu 1500
        inet 192.168.100.199  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)

またはipを使用:

$ ip a | grep -w inet
    inet 127.0.0.1/8 scope Host lo
    inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
    inet 192.168.100.199/24 brd 192.168.100.255 scope global eth10:0

これをすべて削除しますか?

これらすべてを巻き戻したい場合は、次のコマンドを実行して実行できます。

$ Sudo ip addr del 192.168.100.199/24 brd + dev eth10 label eth10:0
$ Sudo ip link delete eth10 type dummy
$ Sudo rmmod dummy

参考文献

111
slm

iproute2 ツールキットを使用して仮想インターフェースを作成できます。

ip link add veth0 type veth peer name veth1

これにより、veth0veth1の2つのインターフェイスが作成されます。それらをパイプの両端と考えてください。 veth0に送信されたトラフィックはveth1から送信され、その逆も同様です。

トラフィックをルーティングしたい場合は、以下を実行できます。

sysctl -w net.ipv4.conf.veth0.forwarding=1

これにより、カーネルはveth0からのトラフィックを転送するようになります(使用するエンドポイントにはveth1を使用してください)。

別のオプションは、veth0と別のインターフェースでブリッジを設定することです。次に、仮想インターフェイスを経由するトラフィックは、マシンが単にスイッチとして機能しているかのように、ネットワークにルーティングされます。

このトラフィックでできることは他にもたくさんあります(マスカレード、リダイレクト、DNATなど)が、それは達成しようとしていることに依存します。

それを分解するには:

ip link del veth0
29
Patrick