Roteamento entre dois sistemas isolados sem VPN

2

Cenário estranho para você:

Eu tenho dois Raspberry Pis rodando Raspbian 8 (jessie) conectados um ao outro por um cabo cross-over entre suas portas Ethernet. A porta Ethernet na unidade A é configurada estaticamente como 10.5.10.1. A porta Ethernet na unidade B é configurada estaticamente como 10.5.10.2. A máscara de sub-rede para a interface Ethernet é 255.255.255.0 - / 24.

Ambas as unidades estão executando o daemon de ponto de acesso do host (hostapd) e o servidor DHCP em sua interface Wifi (wlan0). Cada um deles tem um único SSID: a unidade A é “raspiA” enquanto a unidade B é “raspiB”. A unidade A é executada no canal 1. A unidade B é executada no canal 11.

O adaptador wlan0 na unidade A é atribuído estaticamente como 10.10.1.1. O servidor DHCP na unidade A atende a endereços no intervalo de 10.10.1.50 a 10.10.1.250. O adaptador wlan0 na unidade B é atribuído estaticamente como 10.10.2.1. O servidor DHCP na unidade B sete endereços no intervalo de 10.10.2.50 - 10.10.2.250. Máscaras de sub-rede para os adaptadores wlan0 são ambas / 24.

Os sistemas estão completamente isolados - não há conexão com a Internet.

Ambos os sistemas executam um processo que executa um servidor HTTP na porta 80, disponível em qualquer interface (eth0 ou wlan0).

Eu quero um cliente conectado ao ponto de acesso no sistema A para poder acessar o processo no sistema B no 10.10.1.2.

Eu quero que um cliente conectado ao ponto de acesso no sistema B possa acessar o processo no sistema A no 10.10.2.2.

[Client 1]         [Unit A              ]        [Unit B ]
10.10.1.50 —wifi—> 10.10.1.2 —> 10.5.10.1 —eth—> 10.5.10.2

E ...

[Unit A ]        [Unit B              ]         [Client 2]
10.5.10.1 <—eth— 10.5.10.2 <— 10.10.2.2 <—wifi— 10.10.2.50

Qual é a melhor maneira de fazer isso acontecer?

    
por Steven Sokol 22.02.2018 / 19:28

2 respostas

1

Tudo que você precisa fazer é ativar o encaminhamento de ip em A e B (como root):

echo 1 > / proc / sys / net / ipv4 / ip_forward

    
por 22.02.2018 / 19:54
1

Eu finalmente encontrei uma configuração que funciona. Permite que um cliente entre na rede e tenha acesso a ambos os sistemas. Também não requer roteamento, o que é importante, pois qualquer esquema que atribua um roteador (gateway padrão) faz com que os clientes móveis (iOS, Android) priorizem sua interface Wi-Fi na interface 4G, impedindo o acesso à Internet.

Eu simplifiquei o esquema de IP movendo tudo para o mesmo segmento / 24 (classe c). Eu estabeleço pontes entre a interface eth0 e a interface wlan0 em ambos os sistemas. A ponte no sistema A foi atribuída 0,1 e a ponte no sistema B foi atribuída. Todos os serviços fornecidos pelo sistema estão vinculados a / disponíveis no endereço da ponte.

Eu ajustei os daemons DHCP em cada sistema para atender a um intervalo diferente do / 24 (ou seja, o sistema A era .50 - .149 e o sistema B era de 150 - 249). Como os sistemas são interligados (isto é, todos no mesmo segmento), qualquer solicitação DHCP se transforma em uma corrida, com os dois daemons respondendo. Como as duas ofertas estarão no mesmo / 24, não importa qual delas "ganha".

Isso cria uma certa forma de redundância. Se algum dos sistemas morre, os clientes podem se associar novamente ao ponto de acesso no outro sistema. Se o aplicativo em qualquer sistema falhar, os clientes poderão se conectar à instância no outro sistema. Os dois sistemas também podem monitorar uns aos outros, espelhar a configuração e cruzar os dados.

Uma limitação dessa abordagem é que os clientes devem saber que os aplicativos estão disponíveis em .1 e .2. Uma iteração futura pode incluir algum tipo de suporte MDSN / Avahi que permita que os clientes descubram servidores automaticamente.

Etapas:

  1. Instale bridge-utils , hostapd e isc-dhcp-server
  2. Edite o /etc/sysctl.conf :
    1. Adicione ou descomente net.ipv4.ip_forward = 1
  3. Em /etc/network/interfaces :
    1. Marque a eth0 e a wlan0 como manuais
    2. Adicione a ponte br0 com a configuração de rede estática desejada
    3. Adicione somente a interface eth0 (o wlan0 será adicionado pelo hostapd)
  4. Edite o /etc/dhcpcd.conf :
    1. Exclua eth0 e wlan0 do DHCP adicionando denyinterfaces eth0 wlan0 na parte inferior.
  5. Edite o /etc/default/isc-dhcp-server :
    1. Defina o valor INTERFACES para br0
  6. Edite o /etc/dhcp/dhcpd.conf :
    1. Crie uma nova entrada de sub-rede
    2. Adicione um certo número de IPs disponíveis ao cliente ao intervalo
    3. NÃO adicione "roteadores de opção"
  7. Edite o /etc/hostapd/hostapd.conf :
    1. Adicione bridge=br0 na parte inferior

Repita este processo para o outro sistema, alterando o IP atribuído à ponte (passo 2.2) e o intervalo de endereços servido pelo servidor DHCP (passo 5.2). Conecte as portas Ethernet com um cabo. Reinicie. Voila - redundante, rede plana.

    
por 26.02.2018 / 16:56