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 show
aş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/interfaces
basittir 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 main
gö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 main
rota 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 eth0
metrik düşük olan bu sürece kullanılacak gidiyor varsayılan yoldur eth0
doldu. Eğer eth0
iner, giden trafik geçer wlan1
.
Bu kurulum ile ping 8.8.8.8
bir terminale ve ifdown eth0
başka bir terminale yazabiliriz . ping
yine de çalışmalıdır, çünkü ifdown eth0
ilgili varsayılan rotayı kaldıracağı için eth0
giden 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 eth0
varsayılan yoldan çektiğinizde eth0
hala orada ve giden trafiğin başarısız olmasıdır. Arabirimlerimizi izlemek ve arabirimle ifdown eth0
ilgili 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 wlan1
ve 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.