
eu tenho istoClearFog Proplaca do roteador com uma imagem armbian. O que eu quero fazer é ter 6 raspberryPi 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.
Eu primeiro tentei essas configuraçõesaqui. 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 deip 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
eip route
192.168.178.0/24 dev br0 proto kernel scope link src 192.168.178.44
então tentei pensar 192.168.178.44
que isso me levaria ao computador na lan1, mas isso não aconteceu. Eu me conectei ao clearfog novamente.
Eu também tentei fazer a ponte entre eth1 e eth0, mas ela retornoucan't add eth1 to bridge br0: Invalid argument
então minha pergunta é: qual é a configuração correta da ponte?
EDIT: conforme solicitado meubrctl 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)
eip 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
Responder1
Só para que entendi corretamente, você tem 6 RPi's conectados a um switch que também está conectado ao clearfrog. Você simplesmente deseja que os RPi possam se comunicar entre si e também acessar a Internet através do clearfrog. Vou me referir ao Clearfrog como CF de agora em diante.
Agora vamos dar uma olhada em 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. Caso esteja atrás de outro gateway, você precisa ter seus RPi em uma sub-rede separada e instruir o CF a rotear o tráfego para você.
Então, 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
Atribuí à sua rede primária a sub-rede 192.168.178.0/25 que terá um intervalo utilizável .1-.126 ; Atribuí a sub-rede 192.168.178.128/25 à sua rede Pi, que terá um intervalo utilizável de 0,129 a 0,254
Acho que o que você estava tentando fazer antes era unir os dois adaptadores. Quando você tem vários hosts atrás de dois adaptadores que também possuem endereços MAC, você precisa fazerroteamento, não fazendo ponte.
Afinal, este é um roteador, não é? A questão era "como fazer uma troca", 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 usar um switch idiota, sem necessidade de Linux incorporado.
Para remover 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
A seguir, vamos preparar o roteador para fazer as tarefas 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 ative o encaminhamento. Você realmente sóprecisara 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
Então execute: sysctl -p
Agora vamos adicionar as rotas. Vou sugerir realizar um ip route flush all, mas você vai querer estar no console quando fizer isso, pois isso 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 para o roteador da rede primária 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 quiser se conectar à sua rede RPi, encaminhe as solicitações para CF (atuando como gateway) sejam roteadas posteriormente.
De volta ao CF, a última coisa que eu faria é 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ê deseja salvar essas regras com iptables-save > /etc/iptables/rules.v4
Agora você precisará de um servidor DHCP no CF para atribuir IPs aos Pis ou precisará atribuir-lhes endereços estáticos. Em ambos os casos, você desejará definir o gateway padrão para o IP 192.168.178.129 do CF.
Isso deve ser tudo que você precisa. Se você tiver qualquer problema, fique à vontade para comentar e eu o ajudarei da melhor maneira que puder.
Responder2
no seu arquivo de rede/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 isto ajude