Come fare un passaggio in linux


1

ho questo clearfog pro scheda router con un'immagine armbian. Quello che voglio fare è avere 6 RaspberryPi connessi a internet tramite clearfog pro. Alla fine voglio che tutti i 7 computer abbiano un indirizzo IP, quindi posso dire in ognuno di loro. Dopo aver letto su internet ho visto che avevo bisogno di installare un bridge di rete per farlo accadere.

Per prima cosa ho provato queste configurazioni Qui . Ma non hanno funzionato per me.

questa è la configurazione corrente nel mio file / etc / network / interfaces

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
  bridge_ports eth0 lan1

questo è l'output di 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 

così ho provato a ssh 192.168.178.44 pensando che mi avrebbe portato al computer su lan1, ma non lo fece. Mi sono connesso di nuovo al clearfog.

Ho anche provato a collegare eth1 ed eth0 ma è tornato can't add eth1 to bridge br0: Invalid argument

quindi la mia domanda è: qual è l'impostazione corretta del bridge?

MODIFICARE: come richiesto mio 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 

Potete per favore mostrarmi l'output dei seguenti comandi: ifconfig, brctl show, ip route show
Gregory Wolf

Non vuoi collegare la tua interfaccia wan alla tua lan, ecco a cosa serve il routing. Vuoi che siano separati. Un bridge funziona in modo molto simile a un interruttore hardware.
Gregory Wolf

@ GregoryWolf Di quanto dovrei raggiungere il mio obiettivo? Mi dispiace anche se a volte uso i termini sbagliati. Sono un principiante nel networking
Maarten de Klerk

Risposte:


1

Solo per capire bene, hai 6 RPi collegati a uno switch che è anche collegato al clearfrog. Semplicemente vuoi che i giochi di ruolo siano in grado di comunicare tra loro e accedere a Internet attraverso il clearfrog. Da ora in poi mi riferirò a Clearfrog come CF.

Ora diamo un'occhiata ai tuoi collegamenti 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

Ciò che non mi è chiaro è se il router riceverà un indirizzo IP pubblico sul lato WAN o se rimarrà dietro un altro gateway. Nel caso in cui si trovi dietro un altro gateway, è necessario avere i propri RPi su una sottorete separata e istruire CF per instradare il traffico per conto dell'utente.

COSÌ, ad esempio:

*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

Ho assegnato alla tua rete primaria la subnet 192.168.178.0/25 che avrà un intervallo utilizzabile .1-.126; Ho assegnato la sottorete 192.168.178.128/25 alla rete Pi, che avrà un intervallo utilizzabile .129-.254

Penso che quello che stavi tentando di fare prima era di collegare i due adattatori insieme. Quando hai più host dietro a due adattatori che hanno anche indirizzi Mac, devi farlo instradamento non colmare.

Dopotutto, questo è un router vero? La ricerca era "come fare un interruttore", ma non stai usando questo dispositivo per controllare il traffico tra le due reti? Altrimenti, è possibile rimuovere la CF e lanciare uno switch stupido, senza bisogno di linux embedded.

Per rimuovere 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

Quindi, prepariamo il router a fare cose del router.

Modifica / 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   

Quindi modificare /etc/sysctl.conf e abilitare l'inoltro. Sei davvero solo bisogno la prima riga, ma questo è quello che generalmente uso per i router:

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         

Quindi eseguire: sysctl -p

Ora stiamo andando ad aggiungere i percorsi. Ho intenzione di suggerire di eseguire un IP route flush all, tuttavia vorrai essere alla console quando lo fai perché ti disconnetterà immediatamente da 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

Ora vuoi andare al tuo router di rete primario e aggiungere una route statica: 192.168.178.128/25 via 192.168.178.129 Questo dice al tuo gateway / router principale che quando un host sulla rete interna vuole connettersi alla tua rete RPi, per inoltrare le richieste a CF (che funge da gateway) per essere instradato ulteriormente.

Tornando alla CF, l'ultima cosa che farei è aggiungere le regole di inoltro in 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

Ti consigliamo di salvare queste regole con iptables-save & gt; /etc/iptables/rules.v4

Ora avrai bisogno di un server DHCP su CF per assegnare gli IP ai Pi o dovrai assegnare loro degli indirizzi statici. In entrambi i casi, è necessario impostare il gateway predefinito su IP 192.168.178.129 della CF

Questo dovrebbe essere tutto ciò di cui hai bisogno. Se hai problemi, sentiti libero di commentare e ti assisterò nel miglior modo possibile.


Dici che il gateway per la route statica sul mio router principale dovrebbe essere 192.168.178.129. Ma il router principale non fa parte di quella subnet, giusto? non dovrebbe essere 192.168.178.126?
Maarten de Klerk

0

nel file network / interfaces:

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
bridge_ports eth0 lan1

Aiuta a separare alcune cose

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

Spero che questo ti aiuti


Ho provato ad aggiungere eth1 al bridge ma ha restituito questo errore: can't add eth1 to br0: invalid argument
Maarten de Klerk

@ Martin Klerk ho risolto. sry
archae0pteryx

Sono abbastanza sicuro che lan1 è un tag vlan.
Gregory Wolf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.