Como faço para criar dispositivos Ethernet virtuais no Linux?
-
21-09-2019 - |
Pergunta
Estou testando uma implementação de um protocolo que fala entre dois computadores usando Ethernet (não IP). Para não ter que ter dois computadores físicos, quero criar duas interfaces virtuais Ethernet. Isso só seria capaz de conversar um com o outro, para que um programa de terminal se vincule a uma interface e o outro endpoint se vincularia ao outro.
Isso é possível e como faço isso?
Solução
Você pode usar o VDE2, um interruptor virtual.
Por exemplo (você precisará de alguns termos):
# 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
Digite de um lado, ele aparecerá no outro.
Outras dicas
Você pode usar o driver virtual Ethernet "TAP", que permite que um programa do Usuários Space pretenha ser uma interface Ethernet. Esse é um recurso padrão do kernel há algum tempo (no entanto, pode não estar ativado no seu kernel).
Você pode usar o NS3 para emular uma rede complicada entre dois dispositivos TAP, se precisar: http://www.nsnam.org/
Eu emulando dois interruptores, um cliente sem fio e um AP, entre duas instâncias do VirtualBox.
Man Interfaces Man Ifconfig
Basta adicionar uma nova estrofe em/etc/rede/interfaces
minha configuração de exemplo:
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 possui IP 192.168.2.150 enquanto Eth0: 1 possui 192.168.2.2
Se você deseja sua própria sub -rede e não quer se preocupar em usar o VDE.
Olhe para isto. Resumidamente:
# 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 com 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
Você pode usar o exemplo de comando vconfig:
vconfig add eth0 10 #virtual interface eth0.10 will be created
Talvez eu esteja perdendo algo importante .. mas não é exatamente isso que é a interface loopback (LO)?