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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top