Kendim çözdüm. Linux ile yapabileceğiniz ağ oluşturma hakkında çok az bilgi var gibi görünüyor, bu yüzden çözümümü ayrıntılı olarak belgelemeye ve açıklamaya karar verdim. Bu benim son kurulumum:
- 3 NIC: eth0 (tel), wlan0 (yerleşik wifi, zayıf), wlan1 (usb wifi adaptörü, wlan0'dan daha güçlü sinyal)
- Hepsi tek bir alt ağda, her biri kendi IP adresiyle.
- eth0 varsayılan olarak hem gelen hem de giden trafik için kullanılmalıdır.
- Eth0 başarısız olursa, wlan1 kullanılmalıdır.
- Wlan1 başarısız olursa wlan0 kullanılmalıdır.
İlk adım : içindeki her arayüz için yeni bir rota tablosu oluşturun /etc/iproute2/rt_tables. Onlara rt1, rt2 ve rt3 diyelim
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
1 rt1
2 rt2
3 rt3
İkinci adım : Ağ yapılandırması /etc/network/interfaces. Bu ana bölüm ve ben mümkün olduğunca açıklamaya çalışacağım:
auto eth0 wlan0
allow-hotplug wlan1
iface lo inet loopback
iface eth0 inet static
address 192.168.178.99
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
post-up ip route add 192.168.178.0/24 dev eth0 src 192.168.178.99 table rt1
post-up ip route add default via 192.168.178.1 dev eth0 table rt1
post-up ip rule add from 192.168.178.99/32 table rt1
post-up ip rule add to 192.168.178.99/32 table rt1
post-up ip route add default via 192.168.178.1 metric 100 dev eth0
post-down ip rule del from 0/0 to 0/0 table rt1
post-down ip rule del from 0/0 to 0/0 table rt1
iface wlan0 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.97
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
post-up ip route add 192.168.178.0/24 dev wlan0 src 192.168.178.97 table rt2
post-up ip route add default via 192.168.178.1 dev wlan0 table rt2
post-up ip rule add from 192.168.178.97/32 table rt2
post-up ip rule add to 192.168.178.97/32 table rt2
post-up ip route add default via 192.168.178.1 metric 102 dev wlan0
post-down ip rule del from 0/0 to 0/0 table rt2
post-down ip rule del from 0/0 to 0/0 table rt2
iface wlan1 inet static
wpa-conf /etc/wpa_supplicant.conf
wireless-essid xyz
address 192.168.178.98
netmask 255.255.255.0
dns-nameserver 8.8.8.8 8.8.4.4
post-up ip route add 192.168.178.0/24 dev wlan1 src 192.168.178.98 table rt3
post-up ip route add default via 192.168.178.1 dev wlan1 table rt3
post-up ip rule add from 192.168.178.98/32 table rt3
post-up ip rule add to 192.168.178.98/32 table rt3
post-up ip route add default via 192.168.178.1 metric 101 dev wlan1
post-down ip rule del from 0/0 to 0/0 table rt3
post-down ip rule del from 0/0 to 0/0 table rt3
Eğer yazarsanız ip rule showaşağıdakileri görmelisiniz:
0: from all lookup local
32756: from all to 192.168.178.98 lookup rt3
32757: from 192.168.178.98 lookup rt3
32758: from all to 192.168.178.99 lookup rt1
32759: from 192.168.178.99 lookup rt1
32762: from all to 192.168.178.97 lookup rt2
32763: from 192.168.178.97 lookup rt2
32766: from all lookup main
32767: from all lookup default
Bu bize "192.168.178.99" IP adresinden gelen veya giden trafiğin rt1 yol tablosunu kullanacağını söyler. Çok uzak çok iyi. Ancak yerel olarak oluşturulan trafik (örneğin, makineden başka bir yere ping veya ssh göndermek istediğinizde) özel işlem gerektirir (söz konusu büyük alıntıya bakın).
İlk dört post-up hattı /etc/network/interfacesbasittir ve internette açıklamalar bulunabilir, beşinci ve son post-up hattı sihir yapan şeydir:
post-up ip r add default via 192.168.178.1 metric 100 dev eth0
Bu kayıt satırı için nasıl bir rota tablosu belirtmediğimizi unutmayın. Bir rota tablosu belirtmezseniz, bilgiler maingördüğümüz rota tablosuna kaydedilir ip rule show. Bu kayıt satırı, gelen trafiğe yanıt olmayan yerel olarak oluşturulan trafik için kullanılan "ana" yol tablosuna varsayılan bir rota koyar. (Örneğin, sunucunuzda e-posta göndermeye çalışan bir MTA.)
Üç arayüzün tümü, farklı metriklerle de olsa ana rota tablosuna varsayılan bir rota koyar. Şimdi aşağıdakilerle bir mainrota tablosuna bakalım ip route show:
default via 192.168.178.1 dev eth0 metric 100
default via 192.168.178.1 dev wlan1 metric 101
default via 192.168.178.1 dev wlan0 metric 102
192.168.178.0/24 dev wlan0 proto kernel scope link src 192.168.178.97
192.168.178.0/24 dev eth0 proto kernel scope link src 192.168.178.99
192.168.178.0/24 dev wlan1 proto kernel scope link src 192.168.178.98
Ana rota tablosunun, farklı metriklerle de olsa üç varsayılan rotası olduğunu görebiliriz. En yüksek öncelik eth0, sonra wlan1 ve wlan0'dır, çünkü daha düşük metrik sayılar daha yüksek bir önceliği gösterir. Yana eth0metrik düşük olan bu sürece kullanılacak gidiyor varsayılan yoldur eth0doldu. Eğer eth0iner, giden trafik geçer wlan1.
Bu kurulum ile ping 8.8.8.8bir terminale ve ifdown eth0başka bir terminale yazabiliriz . pingyine de çalışmalıdır, çünkü ifdown eth0ilgili varsayılan rotayı kaldıracağı için eth0giden trafik geçecektir wlan1.
Aşağıya doğru açılan satırlar ip rule show, her şeyin düzenli kalması için arabirim çöktüğünde ilgili rota tablolarının yönlendirme ilkesi veritabanından ( ) silinmesini sağlar .
Kalan sorun, fişi eth0varsayılan yoldan çektiğinizde eth0hala orada ve giden trafiğin başarısız olmasıdır. Arabirimlerimizi izlemek ve arabirimle ifdown eth0ilgili bir sorun varsa (yani NIC hatası veya fişi çeken biri) yürütmek için bir şeye ihtiyacımız var.
Son adım : girin ifplugd. Bu ifup/ifdown, fişi çekerseniz veya wifi bağlantısında bir sorun varsa arayüzleri izleyen ve yürüten bir daemon /etc/default/ifplugd:
INTERFACES="eth0 wlan0 wlan1"
HOTPLUG_INTERFACES=""
ARGS="-q -f -u0 -d10 -w -I"
SUSPEND_ACTION="stop"
Şimdi fişi çekebilirsiniz eth0, giden trafik değişecektir wlan1ve fişi tekrar takarsanız, giden trafik geri döner eth0. Üç arabirimden biri çalıştığı sürece sunucunuz çevrimiçi kalacaktır. Sunucunuza bağlanmak için eth0'ın ip adresini ve başarısız olursa wlan1 veya wlan0'ın ip adresini kullanabilirsiniz.