Geçenlerde, bir SSL sunucusuna atanan aynı alt ağ üzerinde iki IP adresine ihtiyaç duyduğum bir durumla karşılaştım, böylece iki SSL / TLS sitesi çalıştırabilirdik. İlk yaklaşımım IP takma adlarını kullanmaktı, örneğin, eth0: 0, eth0: 1, vb. Kullanma.
- DHCP gözetleme kullanıyorlar ve normal olarak statik IP adreslerine izin vermiyorlar. Statik adresleme statik DHCP girişleri kullanılarak gerçekleştirilir, böylece aynı MAC adresi her zaman aynı IP atamasını alır. İsterseniz ve bunun için bir nedeniniz varsa, bu özellik switchport başına devre dışı bırakılabilir (Neyse ki ağ adamları ile iyi bir ilişkim var ve bunu yapmak zor değil).
- DHP’nin geçişi devre dışı bırakma devre dışı bırakıldığında, söz konusu MAC adresinin X IP adresine Y girmesine izin verildiğine dair bir kural koymaları gerekirdi. IP adresi Y. IP takma işlemi, MAC adresine X iki IP adresi atanmasını gerektirdi, bu yüzden işe yaramadı.
Anahtar yapılandırmasında bu sorunlar etrafında bir yol olabilir, ancak ağ yöneticileriyle iyi ilişkileri korumak için başka bir yol bulmaya çalıştım. İki ağ arayüzüne sahip olmak bir sonraki mantıksal adım gibi görünüyordu. Neyse ki bu Linux sistemi sanal bir makine, bu yüzden ikinci bir ağ arayüzü kolaylıkla ekleyebildim (yeniden başlatmadan ekleyebilirim - oldukça havalı). Birkaç tuşa basma işleminden sonra DHCP'den iki ağ arayüzü kurulup çalışıyor ve IP adresleri çekildi.
Ancak sorun ortaya çıktı: ağ yöneticileri her iki arabirim için ARP girişini (anahtara) görebildiler, ancak yalnızca açtığım ilk ağ arabirimi ping'lere ya da her türlü TCP ya da UDP trafiğine yanıt verebilirdi.
Kazma ve dürtme işleminden sonra, işte bunu buldum. İşe benziyor, ancak basit olması gereken gibi görünen bir şey için çok iş gibi görünüyor. Başka alternatif fikir var mı?
Adım 1: Tüm arayüzlerde ARP filtrelemeyi etkinleştirin:
# sysctl -w net.ipv4.conf.all.arp_filter=1
# echo "net.ipv4.conf.all.arp_filter = 1" >> /etc/sysctl.conf
Linux çekirdeğindeki dokümanlar / ip-sysctl.txt dosyasından:
arp_filter - BOOLEAN
1 - Allows you to have multiple network interfaces on the same
subnet, and have the ARPs for each interface be answered
based on whether or not the kernel would route a packet from
the ARP'd IP out that interface (therefore you must use source
based routing for this to work). In other words it allows control
of which cards (usually 1) will respond to an arp request.
0 - (default) The kernel can respond to arp requests with addresses
from other interfaces. This may seem wrong but it usually makes
sense, because it increases the chance of successful communication.
IP addresses are owned by the complete host on Linux, not by
particular interfaces. Only for more complex setups like load-
balancing, does this behaviour cause problems.
arp_filter for the interface will be enabled if at least one of
conf/{all,interface}/arp_filter is set to TRUE,
it will be disabled otherwise
2. Adım: Kaynak tabanlı yönlendirmeyi uygulama
Temelde http://lartc.org/howto/lartc.rpdb.multiple-links.html adresindeki talimatları izledim , ancak bu sayfa farklı bir amaç göz önünde bulundurularak yazılmıştır (iki ISS ile ilgili olarak).
Alt ağın 10.0.0.0/24, ağ geçidi 10.0.0.1, eth0 için IP adresinin 10.0.0.100 olduğunu ve eth1 için IP adresinin 10.0.0.101 olduğunu varsayalım.
/ Etc / iproute2 / rt_tables dizininde eth0 ve eth1 adlı iki yeni yönlendirme tablosu tanımlayın:
... top of file omitted ...
1 eth0
2 eth1
Bu iki tablonun rotalarını tanımlayın:
# ip route add default via 10.0.0.1 table eth0
# ip route add default via 10.0.0.1 table eth1
# ip route add 10.0.0.0/24 dev eth0 src 10.0.0.100 table eth0
# ip route add 10.0.0.0/24 dev eth1 src 10.0.0.101 table eth1
Yeni yönlendirme tablolarının ne zaman kullanılacağına ilişkin kuralları tanımlayın:
# ip rule add from 10.0.0.100 table eth0
# ip rule add from 10.0.0.101 table eth1
Ana yönlendirme tablosu zaten DHCP tarafından halledildi (ve bu durumda kesinlikle gerekli olduğu bile belli değil), fakat temelde buna eşittir:
# ip route add default via 10.0.0.1 dev eth0
# ip route add 130.127.48.0/23 dev eth0 src 10.0.0.100
# ip route add 130.127.48.0/23 dev eth1 src 10.0.0.101
Ve işte! Her şey yolunda gibi görünüyor. Her iki IP adresine de ping göndermek iyi sonuç verir. Bu sistemden ping'lerin diğer sistemlere gönderilmesi ve ping'in belirli bir arayüzü kullanmaya zorlanması iyi çalışır ( ping -I eth0 10.0.0.1
, ping -I eth1 10.0.0.1
). Ve en önemlisi, her iki IP adresinden gelen / gelen tüm TCP ve UDP trafiği beklendiği gibi çalışır.
Yine, sorum şu: Bunu yapmanın daha iyi bir yolu var mı? Bu görünüşte basit bir sorun için çok iş gibi görünüyor.
Güncelleme: Yukarıdaki çözüm eksik kaldı. Trafik aynı alt ağda kalırsa, işler iyi çalışıyordu, ancak 2. arabirimi kullanan diğer alt ağlarla iletişim düzgün çalışmazdı. Daha büyük bir çukur kazmak yerine, ağ yöneticileri ile konuşmayı bıraktım ve tek bir arabirim için çoklu IP adreslerine izin vermelerini sağladım ve IP takma adını kullandım (örn. Eth0 ve eth0: 0).
ip
gelen iproute2
aynı arabirime birden fazla adres ekleyin.