Anycast DNS
Από AWMN-WiKi
Πίνακας περιεχομένων |
Τι είναι το Anycast;
Το Anycast είναι μία μέθοδος διευθυνσιοδότησης και δρομολόγησης όπου τα δεδομένα αποστέλονται στον πλησιέστερο δικτυακά προορισμό. Υλοποιείται χρησιμοποιώντας δυναμικά πρωτόκολλα δρομολόγησης και διαφημίζοντας το ίδιο prefix από διαφορετικά σημεία του δικτύου.
Ρύθμιση BGP
Χρειάζεται να διαφημίσουμε την IP που έχει οριστεί για την υπηρεσία του Anycast DNS. Αυτή είναι για το AWMN η 10.0.0.1.
Παράδειγμα για Quagga:
~# telnet localhost bgpd Entering character mode Escape character is '^]'. Hello, this is Quagga (version 0.98.6). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: OpenWrt> enable Password: OpenWrt# configure terminal OpenWrt(config)# router bgp 1979 OpenWrt(config-router)# network 10.0.0.1/32 OpenWrt(config-router)# quit OpenWrt(config)# quit OpenWrt# write Configuration saved to /etc/quagga//bgpd.conf OpenWrt# quit Connection closed by foreign host ~#
Προσθήκη Στατικού Route
Με την προσθήκη του network 10.0.0.1/32 στο BGP διαφημίσαμε ότι τρέχουμε Anycast DNS υπηρεσία αλλά τα queries ακόμη φτάνουν μέχρι τον router. Θα πρέπει να προσθέσουμε ένα στατικό route για το 10.0.0.1/32 προς την IP του server ώστε ο router να τα προωθεί στο DNS Server όπου θα εξυπηρετούνται.
Παράδειγμα για Quagga:
~# telnet localhost zebra Entering character mode Escape character is '^]'. Hello, this is Quagga (version 0.98.6). Copyright 1996-2005 Kunihiro Ishiguro, et al. User Access Verification Password: OpenWrt> enable Password: Password: OpenWrt# configure terminal OpenWrt(config)# ip route 10.0.0.1/32 10.2.16.130 OpenWrt(config)# quit OpenWrt# write Configuration saved to /etc/quagga//zebra.conf OpenWrt# quit Connection closed by foreign host ~#
Προσθήκη διεύθυνσης Anycast
Σε αυτό το βήμα προσθέτουμε την IP 10.0.0.1/32 στο loopback interface του server ώστε να εξυπηρετεί τα anycast DNS queries.
Παράδειγμα:
ip addr add 10.0.0.1 dev lo # Προσθήκη IP 10.0.0.1 στο loopback interface rndc reload # Επαναφόρτωση bind ώστε να "ακούει" στη νέα IP
Firewall για λοιπές υπηρεσίες και TCP
Οι υπόλοιπες υπηρεσίες που τρέχουν στο server, αλλά και το TCP θα πρέπει να κλείσουν με firewall ώστε να μην εξυπηρετούν στην anycast διεύθυνση:
iptables -t filter -A INPUT -p udp -d 10.0.0.1/32 --dport domain -j ACCEPT iptables -t filter -A INPUT -p tcp -d 10.0.0.1/32 -j REJECT --reject-with tcp-reset iptables -t filter -A INPUT -d 10.0.0.1/32 -j REJECT
ΠΡΟΧΟΧΗ! Αυτό θα πρέπει να γίνεται με το REJECT target και όχι με το DROP! Έτσι εξασφαλίζεται ότι θα ενημερωθεί ο client με ICMP και θα κάνει άμεσα προσπάθεια σε πιθανό backup unicast DNS server.
Ομάδα δοκιμών
Οι servers που αυτή τη στιγμή συμμετέχουν δοκιμαστικά την υπηρεσία Anycast DNS είναι οι:
| Unicast IP | Διαχειριστής | Περιοχή | Ενεργός |
|---|---|---|---|
| 10.2.16.130 | Acinonyx | Πατήσια | ΝΑΙ |
| 10.21.128.14 | Nettraptor | Βριλήσσια | ΝΑΙ |
| 10.14.154.3 | acoul | Αγ. Παρασκευή | ΝΑΙ |
| 10.2.19.1 | acoul | Κέντρο | ΝΑΙ |
| 10.22.11.50 | JB172 | Βύρωνας | ΝΑΙ |
Συμμετοχή σε δοκιμές
Αρκεί να ακολουθήσετε τις παραπάνω οδηγίες και να δηλώσετε ως master τον 10.19.143.12.
Παράδειγμα για bind:
/etc/named.conf
zone "awmn" IN {
type slave;
file "zones/awmn.zone";
masters {
10.19.143.12;
};
};
zone "10.in-addr.arpa" IN {
type slave;
file "zones/10.in-addr.arpa.zone";
masters {
10.19.143.12;
};
};


