Como posso encaminhar o tráfego entre duas placas Ethernet?

2

Estou tendo dificuldades em descobrir como configurar isso corretamente. Eu mal posso formular uma consulta do Google que explica isso, então vou tentar fazer o meu melhor.

Eu tenho um PC Ubuntu com duas placas NIC.

eth0 (192.168.1.0) vai para o principal gateway padrão e para a internet, e o eth1 (192.168.176.0) vai para um switch de rede com um monte de câmeras IP conectadas a ele.

Eu habilitei as regras e hosts de IP Forwarding e iptables no PC do roteador. Hosts dentro da rede eth1 podem acessar a internet e acessar outros hosts na rede eth0. Então isso é bom.

O que estou tentando fazer agora é fazer com que os hosts dentro da rede eth0 possam acessar os hosts dentro da rede eth1.

Os computadores estão na rede eth0, mas as câmeras de rede estão na rede eth1. Um único computador com duas placas NIC atua como a ponte. Por fim, quero que os computadores da eth0 possam ver as câmeras IP na eth1.

Tentando mapear: hosts em 192.168.1.1 devem ser capazes de ver hosts em 192.168.176.1, mas não podem.

os hosts em 192.168.176.1 podem ver os hosts em 192.168.1.1 (esses hosts também podem acessar a Internet). Então tudo bem aqui.

Até agora eu tenho essas regras de IP e estas permitiram que a rede eth1 saísse.

iptables --table nat --append POSTROUTING --out-interface enp1s0 -j MASQUERADE
iptables --append FORWARD --in-interface enp3s0 -j ACCEPT

Acho que minha pergunta é: como a rede eth0 pode chegar aos hosts na rede eth1?

Eu tenho que adicionar rotas nos computadores individuais que desejam acessar a rede eth1?

Preciso configurar o encaminhamento entre o eth0 & Interfaces eth1 no roteador?

Aqui estão as minhas regras atuais de add route, / etc / network / interfaces e iptables:

(On macos:)
sudo route -n add -net 192.168.176.0/24 192.168.1.1

(on two-NIC PC) /etc/network/interfaces #primary interface enp3s0 auto enp1s0 iface enp1s0 inet static address 192.168.1.12 netmask 255.255.255.0 network 192.168.1.0 gateway 192.168.1.1 dns-nameservers 8.8.4.4 8.8.8.8

#secondary interface enp3s0 auto enp3s0 iface enp3s0 inet static address 192.168.176.1 netmask 255.255.255.0 broadcast 192.168.176.255 network 192.168.176.0

(on two-NIC PC) iptables -t filter -A FORWARD -i enp1s0 -o enp3s0 -j ACCEPT iptables -t filter -A FORWARD -i enp3s0 -o enp1s0 -j ACCEPT iptables -t nat -A POSTROUTING -j MASQUERADE

    
por Mike 07.12.2017 / 21:13

2 respostas

2

Seu problema é principalmente a configuração de rota dos hosts. Eu suponho que sua configuração atual é a seguinte:

  • a interface enp1s0 possui endereço IP 192.168.1.1/24
  • a interface enp3s0 tem endereço IP 192.168.176.1/24

Para que os hosts entre as duas redes IP se comuniquem, eles precisam de uma entrada dedicada em sua tabela de roteamento.

  1. Os hosts em 192.168.1.0/24 que precisam acessar a câmera IP precisam saber que 192.168.1.1 é o roteador para 192.168.176.0/24.
  2. Os hosts em 192.168.176.0/24 precisam de uma rota para 192.168.1.0/24.

Agora, presumo que a configuração estática / DHCP das câmeras IP é rotear o tráfego padrão por meio de 192.168.176.1, para que eles saibam para onde enviar pacotes para os PCs. Mas os PCs em 192.168.1.0/24 têm apenas uma entrada padrão, o roteador de internet. Então, qualquer pacote para 192.168.176.0/24 é enviado para lá e perdido.

Você pode

  • configure seu roteador DHCP em 192.168.1.0/24 para anunciar uma rota estática para 192.168.176.0/24 via 192.168.1.1 com a opção "rota estática sem classe"
  • adicione manualmente 192.168.1.1 como um gateway para 192.168.176.0/24 nos PCs

Você também precisará liberar suas regras do iptables. A regra POSTROUTING atrapalhará o roteamento e a regra FORWARD será inútil (a menos que você tenha uma política DROP).

iptables -t nat -F POSTROUTING
iptables -F FORWARD

Suas câmeras podem ver os PCs porque eles foram configurados com um gateway padrão de 192.168.176.1 e a entrada nat POSTROUTING. Por exemplo, se a câmera IP 192.168.176.10 envia um pacote para o PC 192.168.1.20, o pacote será primeiro enviado para 192.168.176.1 (enp3s0) o gateway padrão. O Ubuntu PC encaminhará o pacote para enp1s0, reescrevendo o endereço do remetente, 192.168.1.1. Quando 192.168.1.20 responde ao pacote, ele o envia de volta ao endereço substituído, 192.168.1.1. Quando o Ubuntu PC recebe, ele sabe que é uma resposta para a câmera IP 192.168.176.10. Então, ele reescreve o endereço de destino para 192.168.176.10 e envia para o enp3s0.

Agora você não quer bagunçar pacotes com NAT, você só precisa de roteamento IP. No exemplo anterior, o PC vê o endereço IP da câmera como 192.168.1.1, como foi substituído pelo PC Ubuntu. Depois de definir as rotas corretas,

  • em uma conexão iniciada pelo PC para a câmera, o PC verá o endereço IP da câmera como 192.168.176.10.
  • em uma conexão iniciada pela câmera para o PC, o PC ainda verá o endereço IP da câmera como 192.168.1.1 (endereço NAT)

Para dispositivos IP simples, é improvável que o segundo seja importante. Mas isso pode levar ao comportamento de bugs. Por exemplo, se você tivesse um switch gerenciado e quisesse usar traps SNMP. Você deve excluir a regra iptables -t nat -A POSTROUTING -j MASQUERADE .

Um problema que irá surgir: Você quer que suas câmeras IP acessem a Internet? Se não, eu incluiria uma rota FORWARD do iptables para negar pacotes de 192.168.176.0/24 para qualquer lugar exceto 192.168.1.0/24. Se você deseja conceder acesso, você precisará configurar seu roteador com uma rota estática para 192.168.176.0/24.

    
por 07.12.2017 / 22:43
0

Exemplos de endereços e nomes de sub-redes

net “main” 192.168.1.0/24 (255.255.255.0) - enp1s0

net “câmeras” 192.168.176 / 24 (255.255.255.0) - enp3s0

Você está encaminhando de "câmeras" para "principal" com:

iptables --table nat --append POSTROUTING --out-interface enp1s0 -j MASQUERADE

iptables --append FORWARD --in-interface enp3s0 -j ACCEPT

main tem um gateway padrão que "direciona" o tráfego para a sub-rede local ou para a internet.

Se você adicionou as regras opostas à ponte:

iptables --table nat --append POSTROUTING --out-interface enp3s0 -j MASQUERADE

iptables --append FORWARD --in-interface enp1s0 -j ACCEPT

AND

Adicione uma rota no gateway padrão em “main” ao computador de ponte para a sub-rede 192.168.176.0/24.

sintaxe errada, mas você tem a ideia

route add -net 192.168.2.176/24 gateway “bridge computer”

Acho que você conseguirá o que quiser sem adicionar ou alterar informações de gateways nas câmeras.

    
por 07.12.2017 / 22:22