it-swarm.com.de

Wie erstelle ich virtuelle Ethernet-Geräte unter Linux?

Ich teste eine Implementierung eines Protokolls, das über Ethernet (nicht IP) zwischen zwei Computern kommuniziert. Um eigentlich nicht zwei physische Computer haben zu müssen, möchte ich zwei virtuelle Ethernet-Schnittstellen erstellen. Diese können nur miteinander kommunizieren, sodass ein Endpunktprogramm an eine Schnittstelle und der andere Endpunkt an die andere Schnittstelle gebunden wird.

Ist das möglich und wie mache ich das?

22
Greg Rogers

Sie können den virtuellen Switch VDE2 verwenden.

Zum Beispiel (Sie benötigen einige Begriffe):

# 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

Tippen Sie auf einer Seite ein, es wird auf der anderen Seite angezeigt.

21
Tobu

Sie können den virtuellen Ethernet-Treiber "tippen", mit dem ein Benutzerraumprogramm sich als Ethernet-Schnittstelle ausgeben lässt. Dies ist seit einiger Zeit eine Standard-Kernel-Funktion (möglicherweise ist sie jedoch nicht in Ihrem Kernel aktiviert).

6
MarkR

Sie können ns3 verwenden, um ein kompliziertes Netzwerk zwischen zwei Tap-Geräten zu emulieren, wenn Sie es benötigen: http://www.nsnam.org/

Ich habe zwei Switches, einen Wireless-Client und einen AP zwischen zwei Virtualbox-Instanzen emulieren lassen.

2
Andrew McGregor

wenn Sie ein eigenes Subnetz haben möchten und nicht vde verwenden möchten.

schaue auf this . Zusamenfassend:

# 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)

Oder mit 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 Schnittstellen man ifconfig

fügen Sie einfach eine neue Zeilengruppe in/etc/network/interfaces hinzu

meine Beispielkonfiguration:

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 hat ip 192.168.2.150, während eth0: 1 192.168.2.2 hat

1
Tiago Geada

Vielleicht fehlt mir etwas wichtiges .. aber ist das nicht genau das, wozu die Loopback (lo) -Schnittstelle dient? 

0

Sie können den Befehl vconfig Verwenden. Beispiel:

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