Bagaimana melakukan pergantian di linux

1

aku punya ini clearfog pro papan router dengan gambar armbian. Yang ingin saya lakukan adalah memiliki 6 raspberryPi yang terhubung ke internet melalui clearfog pro. Pada akhirnya saya ingin semua 7 komputer memiliki alamat IP sehingga saya bisa mengatakan kepada semua orang dari mereka. Setelah membaca di internet saya melihat bahwa saya perlu mengatur jembatan jaringan untuk mewujudkannya.

Saya pertama kali mencoba konfigurasi ini sini . Tetapi mereka tidak bekerja untuk saya.

ini adalah konfigurasi saat ini di file / etc / network / interfaces saya

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
  bridge_ports eth0 lan1

ini adalah output dari 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

dan ip route

    192.168.178.0/24 dev br0  proto kernel  scope link  src 192.168.178.44 

jadi saya mencoba ssh ke 192.168.178.44 berpikir itu akan menuntun saya ke komputer di l1 tetapi tidak. Saya terhubung ke clearfog lagi.

Saya juga mencoba menjembatani eth1 dan eth0 tetapi kembali can't add eth1 to bridge br0: Invalid argument

jadi pertanyaan saya adalah: apa pengaturan jembatan yang benar?

EDIT: seperti yang diminta saya 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)

dan 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 
Maarten de Klerk
sumber
Bisakah Anda menunjukkan kepada saya output dari perintah berikut: ifconfig, brctl show, ip route show
Gregory Wolf
Anda tidak ingin menjembatani antarmuka wan Anda ke lan Anda, itulah gunanya routing. Anda ingin mereka terpisah. Sebuah jembatan bertindak sangat mirip dengan sakelar perangkat keras.
Gregory Wolf
@GregoryWolf Daripada bagaimana saya harus mencapai tujuan saya? Maaf juga jika saya terkadang menggunakan istilah yang salah. Saya seorang pemula dalam jaringan
Maarten de Klerk

Jawaban:

1

Hanya agar saya mengerti dengan benar, Anda memiliki 6 RPi terhubung ke switch yang juga terhubung ke clearfrog. Anda hanya ingin RPi dapat berkomunikasi dengan satu sama lain serta mengakses internet melalui clearfrog. Saya akan merujuk ke Clearfrog sebagai CF mulai sekarang.

Sekarang mari kita lihat tautan ip Anda:

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

Yang tidak jelas bagi saya adalah apakah router Anda akan menerima alamat IP publik di sisi WAN atau jika itu akan tetap berada di belakang gateway lain. Jika berada di belakang gateway lain, Anda harus memiliki RPi di subnet yang terpisah dan memerintahkan CF untuk merutekan traffic untuk Anda.

SO misalnya:

*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

Saya telah menetapkan jaringan utama Anda subnet 192.168.178.0/25 yang akan memiliki rentang yang dapat digunakan .1-.126; Saya telah menetapkan subnet 192.168.178.128/25 ke jaringan Pi Anda, yang akan memiliki rentang yang dapat digunakan .129-.254

Saya pikir apa yang Anda coba lakukan sebelumnya adalah menjembatani dua adapter bersama. Ketika Anda memiliki banyak host di belakang dua adapter yang juga memiliki alamat mac maka Anda perlu melakukannya rute , tidak menjembatani.

Lagipula, ini router bukan? Pertanyaannya adalah "bagaimana cara beralih", tetapi tidakkah Anda menggunakan perangkat ini untuk mengontrol lalu lintas antara dua jaringan? Jika tidak, Anda bisa menghapus CF dan membuang switch bodoh, tidak diperlukan linux tertanam.

Untuk menghapus 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

Selanjutnya, mari kita siapkan router untuk melakukan hal-hal router.

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

Kemudian edit /etc/sysctl.conf dan aktifkan penerusan. Kamu benar-benar saja perlu baris pertama, tapi inilah yang biasanya saya gunakan untuk 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         

Kemudian jalankan: sysctl -p

Sekarang kita akan menambahkan rute. Saya akan menyarankan melakukan ip route flush all, tetapi Anda akan ingin berada di konsol ketika Anda melakukan ini karena akan segera memutuskan Anda dari 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

Sekarang Anda ingin pergi ke router jaringan utama Anda dan menambahkan rute statis: 192.168.178.128/25 via 192.168.178.129 Ini memberitahu gateway / router utama Anda bahwa ketika sebuah host di jaringan internal ingin terhubung ke jaringan RPi Anda, untuk meneruskan permintaan ke CF (bertindak sebagai gateway) untuk dialihkan lebih lanjut.

Kembali ke CF, hal terakhir yang akan saya lakukan adalah menambahkan aturan penerusan di 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

Anda ingin menyimpan aturan-aturan ini dengan iptables-save & gt; /etc/iptables/rules.v4

Sekarang Anda akan memerlukan server dhcp di CF untuk menetapkan IP ke Pi atau Anda perlu menetapkannya alamat statis. Dalam kedua kasus, Anda ingin mengatur gateway default mereka ke IP CF 192.168.178.129

Hanya itu yang Anda butuhkan. Jika Anda memiliki masalah, jangan ragu untuk berkomentar dan saya akan membantu Anda sebaik mungkin.

Gregory Wolf
sumber
Anda mengatakan bahwa gateway untuk rute statis pada router utama saya harus 192.168.178.129. Tetapi router utama bukan bagian dari subnet itu, kan? bukankah seharusnya 192.168.178.126?
Maarten de Klerk
0

dalam file jaringan / antarmuka Anda:

auto lo br0 eth1 lan1
iface lo inet loopback

iface br0 inet dhcp
bridge_ports eth0 lan1

Ini membantu untuk memisahkan beberapa hal

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

Semoga ini membantu

archae0pteryx
sumber
Saya mencoba menambahkan eth1 ke jembatan tetapi mengembalikan kesalahan ini: can't add eth1 to br0: invalid argument
Maarten de Klerk
@ MaartendeKlerk saya memperbaikinya. sry
archae0pteryx
Saya cukup yakin Lan1 adalah tag vlan.
Gregory Wolf