
나는 이것을 가지고있다클리어포그 프로armbian 이미지가 있는 라우터 보드입니다. 내가 하고 싶은 것은 Clearfog Pro를 통해 6개의 raspberryPi를 인터넷에 연결하는 것입니다. 결국 나는 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를 통해 lan1의 컴퓨터로 연결될 것이라고 생각하려고 했지만 192.168.178.44
그렇지 않았습니다. 클리어포그에 다시 연결했어요.
또한 eth1과 eth0을 연결하려고 시도했지만 반환되었습니다.can't add eth1 to bridge br0: Invalid argument
그래서 내 질문은: 올바른 브리지 설정은 무엇입니까?
편집: 요청한 대로 내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
제가 정확하게 이해하도록 하자면, Clearfrog에도 연결된 스위치에 6개의 RPi가 연결되어 있습니다. RPi가 서로 통신할 수 있을 뿐만 아니라 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
나에게 확실하지 않은 것은 라우터가 WAN 측에서 공용 IP 주소를 수신하는지 아니면 다른 게이트웨이 뒤에 남아 있는지 여부입니다. 다른 게이트웨이 뒤에 있는 경우 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
귀하의 기본 네트워크에 사용 가능한 범위가 .1-.126인 서브넷 192.168.178.0/25를 할당했습니다. Pi 네트워크에 서브넷 192.168.178.128/25를 할당했습니다. 이 네트워크의 사용 가능한 범위는 .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 경로 모두 플러시를 수행할 것을 제안할 것입니다. 그러나 이 작업을 수행하면 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.129를 통해 192.168.178.128/25 이는 내부 네트워크의 호스트가 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를 사용하여 이러한 규칙을 저장하고 싶을 것입니다.
이제 Pi에 IP를 할당하려면 CF에 DHCP 서버가 필요하거나 고정 주소를 할당해야 합니다. 두 경우 모두 기본 게이트웨이를 CF의 IP 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
도움이 되었기를 바랍니다