web-dev-qa-db-ja.com

Linuxで仮想イーサネットデバイスを作成するにはどうすればよいですか?

イーサネット(IPではない)を使用して2台のコンピューター間で通信するプロトコルの実装をテストしています。実際に2台の物理コンピューターを用意する必要がないように、2つの仮想イーサネットインターフェイスを作成します。これらは互いに通信することしかできないため、1つのエンドポイントプログラムが1つのインターフェースにバインドし、もう1つのエンドポイントがもう1つのインターフェースにバインドします。

これは可能ですか、どうすればよいですか?

24
Greg Rogers

仮想スイッチであるVDE2を使用できます。

たとえば(いくつかの用語が必要になります):

# Install vde2 (assumes Debian/Ubuntu)
Sudo aptitude install vde2
# Create the switch and two tap interfaces attached to it
Sudo vde_switch -tap tap0 -tap tap1
# Configure the interfaces
Sudo ip addr add 10.0.31.10 dev tap0
Sudo ip addr add 10.0.31.11 dev tap1
# Start a server
socat - TCP-LISTEN:4234,bind=10.0.31.10
# Alternatively, an echo server:
#socat PIPE TCP-LISTEN:4234,bind=10.0.31.10
# Start a client
socat - TCP:10.0.31.10:4234,bind=10.0.31.11

片側に入力すると、反対側に表示されます。

21
Tobu

「tap」仮想イーサネットドライバーを使用して、ユーザースペースプログラムをイーサネットインターフェイスのふりをさせることができます。これはしばらくの間、標準のカーネル機能です(ただし、カーネルで有効になっていない場合があります)。

6
MarkR

必要に応じて、ns3を使用して2つのタップデバイス間の複雑なネットワークをエミュレートできます。 http://www.nsnam.org/

2つの仮想ボックスインスタンス間で、2つのスイッチ、ワイヤレスクライアント、およびAPをエミュレートしました。

2
Andrew McGregor

独自のサブネットが必要で、vdeを使用したくない場合。

this を見てください。要するに:

# tunctl -t eth0
Set 'eth0' persistent and owned by uid 0
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr a6:9b:fe:d8:d9:5e  
      BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:500 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

またはipを使用:

# ip tuntap add dev eth0 mode tap
# ip link ls dev eth0
  7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500
  link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff
1
Alex

manインターフェースman ifconfig

/ etc/network/interfacesに新しいスタンザを追加するだけです

私の設定例:

iface eth0 inet static
   address 192.168.2.150
   netmask 255.255.255.0
   network 192.168.2.0
   broadcast 192.168.2.255
   gateway 192.168.2.253
   # dns-* options are implemented by the resolvconf package, if installed
   dns-nameservers 8.8.4.4


iface eth0:1 inet static
    address 192.168.2.2
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    gateway 192.168.2.253
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers 8.8.4.4

-

eth0にはip 192.168.2.150があり、eth0:1には192.168.2.2があります。

1
Tiago Geada

多分私は重要な何かを見逃しているかもしれませんが、これはまさにループバック(lo)インターフェースの目的ではありませんか?

0

Vconfigコマンドの例を使用できます。

vconfig add eth0 10 #virtual interface eth0.10 will be created
0
user3308297