Routování veřejné IP
Pro správce
- Nejdříve je potřeba přidat cestu (routu) k přidělené IP (idealně do zebra.conf)
Příklad:
eth0 je interface na který je připojen klient a 85.132.160.55 je přidělená IP.
ip route 85.132.160.55/32 eth0
Pokud se bude přes jeden interface připojeno víc lidí s veřejnou IP vedle sebe, tak je lepší dávat do zebra.conf i routy s větší maskou. (Vlastně je to více než vhodné!)
- Zkontroluji, jestli nedistribuuji veřejnou IP s podivně malou metrikou (1, 20 apod.)
na charonu spustím
ip route |grep 89.248.24
a podívám se, jestli je metrika OK, pokud není, tak se podívám do svého ospfd.conf
router ospf ospf router-id 10.107.xx.xx redistribute connected metric-type 1 route-map just-10 redistribute kernel metric-type 1 redistribute static metric-type 1 ...
zde je klíčové kouzelné slovo metric-type 1
- Zapnu proxy_arp (a hodím do nějakého init scriptu)
echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp
Místo all raději použít jenom interfacy, které směřují k lidem, kteří VIP používají.
- Přidám na router IP 89.248.255.254 a ujistím se, že není ! distribuovaná ! přes ospf (nemělo by se stát ani při redistribute static, redistribute kernel). Tato IP slouží jako brána pro uživatele. (Protože není distribuovaná, tak nikde nemůže vzniknout její duplicita - stejný funkční efekt by měl statický arp záznam, ale klient pak nemůže bránu pingnout, což není správně)
Tu IP by mělo stačit dát na jeden interface na routru a okamžitě by mělo být možné ji pingnout ze všech ostatních ifaců (díky arp_proxy). Pokud ne, přidám tuto IP na potřebné ifacy. I když jde o podsíť /23, stačí mít bránu jako /32, ale není to nutné.
ip addr add 89.248.255.254/32 dev eth0
Pokud takto předěláváme router uživatele, který je např. na všesměrové anténě a měníme jeho OpenWRT HWAP, IP veřejné brány dáváme POUZE na hlavní router a arp_proxy zapneme na hlavním routeru i na HWAP na rozhraní směrem k uživateli. Kdyby IP veřejné brány bylo na klientově HWAP, toto HWAP by se propagovalo všem ostatním klientům na wifi jako brána. Je pak třeba ještě za pomoci statických rout dodělat routování, aby se paket od OSPF routeru dostalo přes HWAP až ke klientovi (pokud klient ospf nepoužívá).
- Upravím DNS záznam na charonu v /etc/bind/master/85.132.160 nebo /etc/bind/master/85.132.161, /etc/bind/master/hkfree.org a /etc/bind/master/hkfree.org-out a změním serial (o přístup žádejte na ip@hkfree.org se svým loginem na charona). Dám si pozor na to, abych needitoval tyto soubory, když je edituje někdo jiný.
- Jesliže uživatel nemá veřejnou IP adresu nastavenou u sebe v userdb, tak mu ji přidám.
- Oznámím svému připojenci, že by mu to mělo jet.
- Příchozí spojení uživateli zablokuji následujícím pravidlem, pokud bude potřeba
iptables -A FORWARD -d komu -p tcp --syn -j REJECT --reject-with tcp-reset