attes tankar, till vardags och på fest
Anycast och iproute
Jag brukar undvika att skriva om jobbrelaterade ämnen men det här är intressant nog för att kvalificera. Vi har nämligen blivit tilldelade ett gäng anycastadresser till CentralNic, ett /24-nät för att vara exakt. Tanken med anycast är att samma adresser annonseras på flera platser på nätet. När en användare ansluter sig går trafiken helt enkelt till den instans som finns närmast.
Av naturen är anycast olämpligt för tjänster som kräver pålitliga TCP-kopplingar men utmärkt för lättare UDP-baserade protokoll som NTP och DNS. Går en server ner finns de andra kvar och routingtabellerna uppdateras vartefter. Försöker någon överbelasta en instans dör kanske den men övriga överlever och färre användare drabbas.
Det var förresten tack vare anycast rootnamnservrarna överlevde en stor överbelastningsattack härom veckan.
Idag fick vi igång första instanserna av våra anycastade namnservrar. Det var första gången jag stött på problem med de gamla verktygen ifconfig och route. Tänk er en server med två nätverkskort på två olika nätverk med två olika publika ip-adresser. Svaren på förfrågningar till respektive nätverkskort/adress ska gå ut på samma nät frågan kom ifrån.
Det visar sig (ursäkta om jag är lite efterbliven här) att ip (från iproute2) är verktyget jag söker och en utmärkt ersättare för ifconfig/route, även för enklare uppgifter.
För er som inte testat ip, här är några kommandon att leka med:
ip link list | (ifconfig) |
ip address show | (ifconfig) |
ip route show | (route -n) |
ip neigh show | (arp -a) |
ip rule list | (listar regler för routingbeslut) |
ip route list table main | (visar de regler som finns för huvudtabellen) |
Nya tabeller kan namnges i /etc/iproute2/rt_tables
. Lägger jag till exempel till en tabell som heter Foo kan jag sedan tilldela den trafik och regler. Antag att jag vill att all trafik från 192.168.2.2 ska gå ut på eth0 till (default-gw) 192.168.1.1:
ip rule add from 192.168.2.2 table Foo
ip route add default via 192.168.1.1 dev eth0 table Foo
Och slutligen ett lite mer avancerat exempel med två tabeller, T0 och T1. Två ip-adresser, $IP0 och $IP1 på nätverken $IP0NET (t ex 192.168.1.0/24) och $IP1NET. Två nätverkskort, eth0 och eth1. Två gateways, $GW0 och $GW1:
ip route add $IP0NET dev eth0 src $IP0 table T0
ip route add default via $GW0 table T0
ip route add $IP1NET dev eth1 src $IP1 table T1
ip route add default via $GW1 table T1
ip route add $IP0NET dev eth0 src $IP0
ip route add $IP1NET dev eth1 src $IP1
ip route add default via $GW0
ip rule add from $IP0 table T0
ip rule add from $ip1 table T1
Exemplet kommer härifrån och hela dokumentet, Linux Advanced Routing & Traffic Control HOWTO finns här. Enjoy!
Skrivet av atte, 2007-03-13 00:30
Fattar ingenting! fan, det räcker väl med att kunna använda Photoshop och Dreamweaver.
Förövrigt har Dr Who börjat på SVT 2, det var fan på tiden, visserligen är det den senaste versionen och man har ju redan sett en bunt avsnitt på Dansk TV, men Dr Who är alltid The Timelord, fick fan tårar i ögonen när den sissta Daleken var med.
Ipod nämdes i torsdags, skulle ju absolut inte kunna hända i de avsnitt som gjordes på 70-talet, visades på BBC i slutet av 90-talet, jävulsk lång halsduk, 2000-talet kör med skinnjacka. Fan man borde ha sett 60-tals avsnitten också, kanske finns på DVD, näfyfan, tacka vet jag VHS.
Skrivet av danpark, 2007-03-17 20:57
Fett! Man lär sig nå nytt varje dag! :-)
Skrivet av PMan, 2007-03-13 09:36