Como fazer um switch no linux

1

Eu tenho essa placa de roteador clearfog pro com uma imagem do armbian. O que eu quero fazer é ter 6 raspberryPi's conectados à internet através do clearfog pro. No final, quero que todos os 7 computadores tenham um endereço IP para que eu possa falar com todos eles. Depois de ler na internet, vi que precisava configurar uma ponte de rede para que isso acontecesse.

Primeiramente, tentei estas configurações aqui . Mas eles não funcionaram para mim.

esta é a configuração atual no meu arquivo / etc / network / interfaces

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
  bridge_ports eth0 lan1

esta é a saída de ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether fe:cc:39:e2:0e:81 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP mode DEFAULT group default qlen 532 link/ether 00:50:43:25:fb:84 brd ff:ff:ff:ff:ff:ff
4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 532 link/ether 00:50:43:84:25:2f brd ff:ff:ff:ff:ff:ff
5: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 532 link/ether 00:50:43:0d:19:18 brd ff:ff:ff:ff:ff:ff
6: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/ipip 0.0.0.0 brd 0.0.0.0
7: lan1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP mode DEFAULT group default qlen 1000 link/ether 00:50:43:84:25:2f brd ff:ff:ff:ff:ff:ff
13: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 00:50:43:25:fb:84 brd ff:ff:ff:ff:ff:ff

e ip route

    192.168.178.0/24 dev br0  proto kernel  scope link  src 192.168.178.44 

então eu tentei usar o ssh em 192.168.178.44 pensando que isso me levaria ao computador na lan1, mas isso não aconteceu. Eu me conectei ao clearfog novamente.

Eu também tentei vincular eth1 e eth0, mas ele retornou can't add eth1 to bridge br0: Invalid argument

então minha pergunta é: qual é a configuração correta da ponte?

EDITAR: como pedido meu brctl show

bridge name bridge id       STP enabled interfaces
br0         8000.00504325fb84   no      eth0
                                        lan1

ifconfig

br0    Link encap:Ethernet  HWaddr 00:50:43:25:fb:84  
      inet addr:192.168.178.44  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::250:43ff:fe25:fb84/64 Scope:Link
      inet6 addr: 2001:984:6433:1:250:43ff:fe25:fb84/64 Scope:Global
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:572 errors:0 dropped:0 overruns:0 frame:0
      TX packets:86 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:147582 (144.1 KiB)  TX bytes:11762 (11.4 KiB)

 eth0      Link encap:Ethernet  HWaddr 00:50:43:25:fb:84  
      inet addr:192.168.178.44  Bcast:192.168.178.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:1225 errors:0 dropped:0 overruns:0 frame:0
      TX packets:118 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:532 
      RX bytes:318910 (311.4 KiB)  TX bytes:15514 (15.1 KiB)
      Interrupt:38 

 eth1      Link encap:Ethernet  HWaddr 00:50:43:84:25:2f  
      UP 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:532 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
      Interrupt:39 

lan1      Link encap:Ethernet  HWaddr 00:50:43:84:25:2f  
      UP 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:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  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:1 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

e ip route show

default via 192.168.178.1 dev br0 
192.168.178.0/24 dev br0  proto kernel  scope link  src 192.168.178.44 
192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.44 
    
por Maarten de Klerk 04.09.2016 / 00:20

2 respostas

1

Apenas para que eu entenda corretamente, você tem 6 RPi's conectados a um switch que também está conectado ao clearfrog. Você simplesmente quer que os RPIs sejam capazes de se comunicar uns com os outros, assim como acessar a internet através do clearfrog. Vou me referir ao Clearfrog como CF a partir de agora.

Agora vamos dar uma olhada nos seus links ip:

1: lo <- loopback
2: bond0 <- special interface for traffic aggregation/bonding
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> <- Assuming this is your uplink
4: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> <- Assuming this is physically connected to your switch
5: eth2: <BROADCAST,MULTICAST>  <- Assuming this is inactive
6: tunl0@NONE: <NOARP> <- Tunnel interface for vpn
7: lan1@eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> <- Lan1 isn't physical, it's a VLAN inteface.
13: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> <- bridge interface you created

O que não está claro para mim é se o seu roteador receberá um endereço IP público no lado da WAN ou se permanecerá atrás de outro gateway. No caso de estar atrás de outro gateway, você precisa ter seus RPIs em uma sub-rede separada e instruir o CF para rotear o tráfego para você.

SO por exemplo:

*internets*
   ^
|modem| -> |gateway| -> |    switch    |
                        ^    ^    ^    ^         
   192.168.178.0/25     PC1  PC2  PC3  CF           Primary Network
                                       ^
                                  |   switch    |
                                  ^  ^  ^  ^  ^  ^
   192.168.178.128/25             Pi Pi Pi Pi Pi Pi    Pi Network

Eu atribuímos à sua rede primária a sub-rede 192.168.178.0/25, que terá um intervalo útil de 0,1 a 126; Eu atribuí a sub-rede 192.168.178.128/25 à sua rede Pi, que terá um intervalo utilizável .129-.254

Acho que o que você estava tentando fazer antes era unir os dois adaptadores juntos. Quando você tem múltiplos hosts atrás de dois adaptadores que também possuem endereços mac, então você precisa fazer roteamento , sem fazer bridging.

Afinal, este é um roteador, não é? O questestion era "como fazer um switch", mas você não está usando este dispositivo para controlar o tráfego entre as duas redes? Caso contrário, você poderia remover o CF e colocar um switch mudo, sem necessidade de linux embutido.

Para remover o br0:

    brctl show | awk '{if(NR>1)print}' | awk '{print $NF}' | while read line ; do brctl delif br0 $line ; done

ifconfig br0 down

brctl delbr br0

Em seguida, vamos preparar o roteador para fazer as coisas do roteador.

Edite / etc / network / interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
       address 192.168.178.126
       network 192.168.178.0
       netmask 255.255.255.128
       gateway 192.168.178.1
       broadcast 192.168.178.127

auto eth1
iface eth1 inet static
       address 192.168.178.129
       network 192.168.178.128
       netmask 255.255.255.128
       broadcast 192.168.178.255   

Em seguida, edite /etc/sysctl.conf e habilite o encaminhamento. Você realmente só precisa da primeira linha, mas é isso que geralmente uso para roteadores:

net.ipv4.conf.all.forwading=1
net.ipv4.conf.default.accept_source_route = 1
net.ipv4.tcp_synack_retries = 2
net.ipv4.conf.all.send_redirects = 1                                                                                                                                                                                                         
net.ipv4.conf.default.send_redirects = 1                                                                                                                                                                                                                                                                                                                                                                                                            
net.ipv4.conf.all.accept_source_route = 1                                                                                                                                                                                                                                                                                                                                                                                                     
net.ipv4.conf.all.accept_redirects = 1                                                                                                                                                                                                       
net.ipv4.conf.all.secure_redirects = 1         

Em seguida, execute: sysctl -p

Agora vamos adicionar as rotas. Eu vou sugerir a execução de um ip route flush all, no entanto você vai querer estar no console quando fizer isso porque ele irá desconectá-lo imediatamente do ssh.

ip route flush all
ip rule flush
ip route add 192.168.178.0/25 via 192.168.178.1 dev eth0
ip route add 192.168.178.128/25 src 192.168.178.129
ip route add default via 192.168.178.1 dev eth0

Agora, você deseja ir ao seu roteador de rede principal e adicionar uma rota estática: 192.168.178.128/25 via 192.168.178.129 Isso informa ao seu gateway / roteador principal que quando um host na rede interna deseja se conectar à sua rede RPi, para encaminhar as solicitações para o CF (agindo como o gateway) para serem roteadas ainda mais. / p>

De volta ao CF, a última coisa que gostaria de fazer é adicionar regras de encaminhamento no iptables:

#Allow rpi's to connect to the outside world but not initiate new connections to hosts on your primary network
iptables -I FORWARD -i eth1 -o eth0 -s 192.168.178.128/25 ! -d 192.168.178.0/25  -m conntrack --ctstate NEW -j ACCEPT
# Allow forwarding for established connections
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Allow hosts on your primary network to initiate new connections to pi's
iptables -I FORWARD -i eth0 -o eth1 -s 192.168.178.0/25 -d 192.168.178.128/25  -m conntrack --ctstate NEW -j ACCEPT

Você desejará salvar essas regras com o comando iptables-save > /etc/iptables/rules.v4

Agora, você precisará de um servidor dhcp no CF para atribuir IPs aos Pi's ou será necessário atribuir endereços estáticos. Em ambos os casos, você desejará configurar seu gateway padrão para o IP 192.168.178.129 do CF.

Isso deve ser tudo que você precisa. Se você tiver algum problema, fique à vontade para comentar e eu o ajudarei da melhor maneira possível.

    
por 05.09.2016 / 00:57
0

na sua rede / arquivo de interfaces:

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
bridge_ports eth0 lan1

Ajuda a separar algumas coisas

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet static #or dhcp
address <your address>
netmask  255.255.255.0
gateway  <your gateway>
bridge_ports eth1
bridge_stp off
bridge_fd 0

Espero que isso ajude

    
por 04.09.2016 / 19:31