Je teste une implémentation d'un protocole qui parle entre deux ordinateurs en utilisant Ethernet (pas IP). Afin de ne pas avoir réellement besoin de deux ordinateurs physiques, je souhaite créer deux interfaces Ethernet virtuelles. Ceux-ci ne peuvent que se parler, de sorte qu'un programme de point de terminaison se lie à une interface et l'autre point de liaison à l'autre.
Est-ce possible et comment je le fais?
Vous pouvez utiliser VDE2, un commutateur virtuel.
Par exemple (vous aurez besoin de quelques termes):
# 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
Tapez d'un côté, il apparaîtra de l'autre.
Vous pouvez utiliser le pilote Ethernet virtuel "tap" qui permet à un programme utilisateur de se faire passer pour une interface Ethernet. Il s’agit d’une fonctionnalité du noyau standard depuis un certain temps (elle ne sera peut-être pas activée dans votre noyau).
Vous pouvez utiliser ns3 pour émuler un réseau complexe entre deux appareils de prise en charge si vous en avez besoin: http://www.nsnam.org/
Je l'ai vu émuler deux commutateurs, un client sans fil et un AP, entre deux instances de virtualbox.
si vous voulez votre propre sous-réseau et que vous ne voulez pas utiliser vde.
regardez this . En bref:
# 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)
Ou avec 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
man interfacesman ifconfig
ajoutez simplement une nouvelle strophe dans/etc/network/interfaces
mon exemple de configuration:
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 a ip 192.168.2.150 alors que eth0: 1 a 192.168.2.2
Peut-être qu'il me manque quelque chose d'important .. mais n'est-ce pas exactement à quoi sert l'interface de bouclage (lo)?
Vous pouvez utiliser la commande vconfig Exemple:
vconfig add eth0 10 #virtual interface eth0.10 will be created