Como posso me comunicar com vários dispositivos que estão todos no mesmo endereço IP?

2

Eu trabalho em um ambiente de produção e tenho a necessidade de me comunicar com até 50 dispositivos, todos em 192.168.0.2, a partir de um único computador (Windows). Suponha que eu não tenha a capacidade de alterar os endereços IP nesses dispositivos.

Eu tenho algumas soluções em mente no momento. Um que eu confirmei é funcional, e outro que quase funciona. Eu estou basicamente investigando para ver o que os outros fizeram, ou se há algo melhor, ou se há uma maneira de consertar meu método de quase-trabalho.

A configuração do hardware é a mesma para ambos e é muito semelhante à configuração descrita em esta questão. Eu tenho um PC com Windows conectado a um switch gerenciado. O switch gerenciado é configurado de modo que cada porta seja inserida em sua própria vlan não-marcada e todas essas vlans são marcadas na porta conectada ao PC.

Opção A (as opções -almost- works)

Eu executo uma única VM Linux executando a versão mais recente do Ubuntu Server no Windows PC e executando os seguintes comandos

# eth1 connects to the managed switch.
# eth2 connects to the Windows PC (Windows PC is at 192.168.1.50).

# This handles the initial setup and the first device
sudo ifconfig eth2 192.168.1.51/24
sudo vconfig add eth1 101
sudo ifconfig eth1.101 192.168.0.1
sudo ip route del 192.168.0.0/24
sudo ip addr add 192.168.1.61/24 dev eth2
sudo ip rule add fwmark 101 table 101
sudo ip route add 192.168.0.0/24 dev eth1.101 table 101
sudo ip route add 192.168.1.0/24 dev eth2 table 101
sudo iptables -t mangle -A PREROUTING -i eth2 -d 192.168.1.61 -j MARK --set-mark 101
sudo iptables -t nat -A PREROUTING -m mark --mark 101 -j DNAT --to-destination 192.168.0.2

#this handles a second device and is modified for each additional device
sudo vconfig add eth1 102
sudo ip addr add 192.168.1.62/24 dev eth2
sudo ifconfig eth1.102 192.168.0.1/24
sudo iptables -t mangle -A PREROUTING -i eth2 -d 192.168.1.62 -j MARK --set-mark 102
sudo iptables -t nat -A PREROUTING -m mark --mark 102 -j DNAT --to-destination 192.168.0.2
sudo ip rule add fwmark 102 table 102
sudo ip route del 192.168.0.0/24
sudo ip route add 192.168.0.0/24 dev eth1.102 table 102

Basicamente, tenho vários endereços IP virtuais na NIC voltados para o Windows PC e cada IP virtual usa IPTables e regras de roteamento para mapear e encaminhá-lo para uma NIC virtual específica representando uma vlan. Agora, acho que algo está ficando confuso na tabela ARP a julgar pela saída que vi via TCPDump (muitas vezes, nada responde à solicitação ARP do dispositivo). Eu posso fazê-lo funcionar se eu remover as regras de rota ip e tiver uma rota ip "global" para 192.168.0.0/24, mas obviamente não funciona para vários dispositivos.

** Opção B (Funciona muito bem, mas é um pouco bobo)

Eu inicio 50 VMs no Windows PC executando a versão mais recente do DSL Linux . Cada VM basicamente lida com o roteamento de um único dispositivo. Os comandos são os seguintes.

# eth1 connects to the managed switch.
# eth2 connects to the Windows PC
ifconfig eth1 up
vconfig add eth1 101
ifconfig eth1.101 192.168.0.1
ip addr add 192.168.56.2/24 dev eth2
iptables -t nat -A PREROUTING -i eth2 -d 192.168.56.2 -j DNAT --to-destination 192.168.0.2

E, por mais tolo que seja lançar 50 VMs em um único PC, ele funciona e funciona muito bem.

Eu adoraria ir com a opção A se eu pudesse fazê-la funcionar, mas estou pensando que bati em uma parede de tijolos com essa. A opção B é o meu último esforço se eu não conseguir fazê-lo funcionar. Eu posso acabar colocando todas as VMs em hardware separado, se eu tiver que fazer isso. Então minha (s) pergunta (s) ao Superusuário é: Posso fazer a Opção A funcionar? Quais outras soluções existem? Existem roteadores / NATs de hardware que podem fazer o que eu quero?

    
por MGSoto 13.07.2016 / 21:58

0 respostas