
у меня есть этопрозрачный туман проМаршрутизатор с образом armbian. Я хочу подключить 6 raspberryPi к интернету через clearfog pro. В конце концов, я хочу, чтобы у всех 7 компьютеров был IP-адрес, чтобы я мог зайти на каждый из них. Почитав в интернете, я понял, что мне нужно настроить сетевой мост, чтобы это произошло.
Я сначала попробовал эти конфигурацииздесь. Но мне они не подошли.
это текущая конфигурация в моем файле /etc/network/interfaces
auto lo br0 eth1 lan1
iface lo inet loopback
iface br0 inet dhcp
bridge_ports eth0 lan1
это вывод из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
иip route
192.168.178.0/24 dev br0 proto kernel scope link src 192.168.178.44
поэтому я попытался подключиться по ssh, 192.168.178.44
думая, что это приведет меня к компьютеру на lan1, но этого не произошло. Я снова подключился к clearfog.
Я также пытался соединить мостом eth1 и eth0, но это вернулоcan't add eth1 to bridge br0: Invalid argument
поэтому мой вопрос: какова правильная настройка моста?
EDIT: как и просил мой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)
и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
решение1
Просто чтобы я правильно понял, у вас есть 6 RPi, подключенных к коммутатору, который также подключен к clearfrog. Вы просто хотите, чтобы RPi могли общаться друг с другом, а также иметь доступ к интернету через clearfrog. С этого момента я буду называть Clearfrog CF.
Теперь давайте посмотрим на ваши 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
Мне не ясно, получит ли ваш маршрутизатор публичный IP-адрес на стороне WAN или он останется за другим шлюзом. В случае, если он находится за другим шлюзом, вам нужно разместить ваши RPi в отдельной подсети и указать CF маршрутизировать трафик для вас.
ТАК, например:
*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
Я назначил вашей основной сети подсеть 192.168.178.0/25, которая будет иметь используемый диапазон .1-.126; я назначил подсеть 192.168.178.128/25 вашей сети Pi, которая будет иметь используемый диапазон .129-.254.
Я думаю, что вы пытались сделать раньше, это объединить два адаптера вместе. Когда у вас есть несколько хостов за двумя адаптерами, которые также имеют mac-адреса, тогда вам нужно сделатьмаршрутизация, а не мостик.
В конце концов, это маршрутизатор, не так ли? Вопрос был "как сделать коммутатор", но разве вы не используете это устройство для управления трафиком между двумя сетями? В противном случае вы могли бы удалить CF и вставить тупой коммутатор, встроенный Linux не требуется.
Чтобы удалить 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
Далее давайте подготовим маршрутизатор к выполнению функций маршрутизатора.
Редактировать /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
Затем отредактируйте /etc/sysctl.conf и включите пересылку. Вы действительно тольконуждатьсяпервая строка, но это то, что я обычно использую для маршрутизаторов:
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
Затем выполните: sysctl -p
Теперь мы собираемся добавить маршруты. Я собираюсь предложить выполнить ip route flush all, однако вам нужно будет находиться в консоли, когда вы это сделаете, потому что это немедленно отключит вас от 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
Теперь вам нужно перейти к маршрутизатору основной сети и добавить статический маршрут: 192.168.178.128/25 через 192.168.178.129. Это сообщит вашему основному шлюзу/маршрутизатору, что когда хост во внутренней сети хочет подключиться к вашей сети RPi, необходимо пересылать запросы в CF (действующий как шлюз) для дальнейшей маршрутизации.
Возвращаясь к CF, последнее, что я бы сделал, это добавил правила переадресации в 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
Вам нужно будет сохранить эти правила с помощью iptables-save > /etc/iptables/rules.v4
Теперь вам понадобится либо сервер dhcp на CF для назначения IP-адресов Pi, либо вам нужно будет назначить им статические адреса. В любом случае вам нужно будет установить их шлюз по умолчанию на IP-адрес CF 192.168.178.129
Это все, что вам нужно. Если у вас возникнут какие-либо проблемы, не стесняйтесь комментировать, и я помогу вам, как смогу.
решение2
в файле сети/интерфейсов:
auto lo br0 eth1 lan1
iface lo inet loopback
iface br0 inet dhcp
bridge_ports eth0 lan1
Это помогает разделить некоторые вещи
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
Надеюсь это поможет