Routování veřejné IP

Z HKfree wiki
Skočit na navigaci Skočit na vyhledávání

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 85.132.16

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
  • Přidám na router IP 85.132.160.1 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 85.132.160.1/32 dev eth0
  • 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