ip6nat

Zde představím ukázkovou konfiguraci pro zprovoznění aplikace, která umožní přesměrovat TCP spojení protokolu ipv6 na konkrétním portu na jiný server.

Aplikace by měla běžet na igw a to zejména pro účely

  • redsysu
  • varování, že není zaplaceno
  • okamžitého povolení do internetu v případě dynamické adresy pomocí dashboardu (který není ještě hotový)

Je potřeba

Instalace

cd /usr/srv
wget http://d-network.hkfree.org/ip6nat-0.6.tgz
wget http://d-network.hkfree.org/ip6nat-0.6-lada.patch
tar xzvf ip6nat-0.6.tgz
cd ip6nat
cat ../ip6nat-0.6-lada.patch | patch -p1
make

Konfigurace

  • Je potřeba vytvořit soubor ip6nat.conf
    tcp dnat 2000::/3 80->::1 1234
  • Spustit
    ./ip6dnat -c ip6dnat.conf
  • Nastavit iptables
    ip6tables -t raw -A PREROUTING -p tcp --dport 80 -j QUEUE
    ip6tables -t raw -A OUTPUT -p tcp --sport 1234 -j QUEUE

Tímto bude spojení nasměrováno na localhost (::1) na routeru, na kterém ip6nat běží (tam už může čekat http server, který vrací redirect). Pokud budeme chtít nasměrovat jinam, je pak nutné v druhém pravidle místo OUTPUT použít opět PREROUTING.

První pravidlo v iptables lze přenastavit, aby nasměrovávalo pouze vybrané adresy např. parametrem -s, nebo použít extra chain.

Co dělá patch:

V případě, že do dnat cílové routy (kam chceme lidem zabránit se dostat) patřil zároveň nasměrovaný uživatel, vracející se paket byl opět nasměrován na cílový server. Autor zřejmě nepočítal s tím, že použijeme default routu a že se tudíž zakázaná oblast bude překrývat se zdrojem. Patch toto opravuje jednoduše - pravidla pro vracející se pakety se vyhodnocují před pravidlem pro odeslané pakety. Nic dalšího se snad nerozbilo (úsměv)