Přesměrování
Typy přesměrování
Jednotlivé typy přesměrování se vyhodnocují zdola nahoru, může tedy nastat více přesměrování po sobě.
- neznámé zařízení
- přerušené členství
- dlužník
- upozornění na placení - člen ho může sám vypnout
- volitelná zpráva - např. pozvání na valnou hromadu, člen ho může sám vypnout
Podmínky pro přesměrování
- je potřeba mít na centrálním routeru linux, kde jeho jádro bude zkompilováno spolu s modulem ipset
- na centrálním routeru je potřeba mít správně nakonfigurovaný firewall
- je pořeba řádně nastavit synchronizační skript
Instalace ipsetu v bebianu lze z balíků
apt-get install ipset ipset-source m-a a-i ipset
v jiných distrech dle možností a v neposlední řadě je vlastní kompilace.
Sychronizační skript by měl být nekonfliktní s vaším aktuálně nastaveným firewallem. Pokud nastanou problém, je nutné je řešit individuálně.
Do /etc/init.d/freenetis dáme spouštěcí skript z application/vendors/redirection/freenetis
upravíme práva
chmod 755 /etc/init.d/freenetis
a spust9me po startu
update-rc.d freenetis defaults
Do /usr/local/sbin/freenetis_synchronization.sh dáme skript z application/vendors/redirection/freenetis_synchronization.sh
chmod "a+x" /usr/local/sbin/freenetis_synchronization.sh
Do /etc/freenetins.cfg dáme skript z application/vendors/redirection/freenetis.cfg a dle potřeby upravíme.
Při samotném přesměrování se předpokládá, že na centrálním routeru naslouchá na portu 36000(lze kdykoliv změnit v /etc/freenetis.cfg) démon, který veškeré příchozí http dotazy přesměruje pomoci http redirect na stránku freenetisu.
Pro naši potřebu je dostatečný server lighttpd. V debianu nainstalujema pomocí
apt-get install lighttpd
a v /etc/lighttpd/lighttpd.conf přidáme/upravíme:
server.port = 36000
url.redirect = ( "." => "http://freenetis.domain.ltd" )
Defaultně nám server startuje i na ipv6 což nepotřebuje, takže zakomentujeme
#include_shell "/usr/share/lighttpd/use-ipv6.pl"
Takovéto přesměrování ale bude mít kód 301, moved permanently. Pro bezproblémový chd doporučuji přesměrovávát s kódem 307, tj. temporary redirect. V lighttpd od verze 1.5.0 lze změnit kód malou úpravou
url.redirect-code = 307
Je možné použít jakýkoliv http server - i vlastní řešení.
TODO: Plánuji vlastní "server" založený na nějakém malém http serveru - např. TinyHTTPd. Na jakýkoliv dotaz odpoví temporary redirect na freenetis a nic víc. Eazy.
Synchronizační skript startuje automaticky po startu systému. Je pomžné jej zastavit, nastartovat nebo restartovat pomocí příkazu /etc/init.d/freenetis start|stop|restst
POZOR! Pokud budete jakoliv měnit konfigurační soubor ujistěte se, že je skript ukončen a až pak soubor editujte. Vyhnete se tím nanuálnímu odstaňování starých pravidel z iptables.
Jak to funguje
__deprecated__
Freenetis na speciální stránce http://domena/cs/redirect/ipset/ranges vypíše seznam všech podsítí, které mají ve Freenetisu zaplé přesměrování. Na tyto rozsahy pak skript na centrálním routeru reaguje tak, že je přidá do ipsetu rozsahů, na které jsou pak aplikována pravidla v iptables. Na další speciální stránce http://domena/cs/redirect/ipset/members jsou vypisovány seznamy povolených IP adres. Pokud IP adresa není ve Freenetisu, nebo tam je a má nastavený nějaký příznak přesměrování, pak zde není zobrazena. Tyto IP adresy jsou pak centrálním routerem přesměrovány na stránky http://domena/cs/redirect. Freenetis pak sám zjistí důvod přesměrování a zobrazí příslušnou strnku. Pokud je důvodů víc pak se vyhodnocují podle priority, viz typy přesměrování.
Všechny speciální stránky se seznamy IP adres nebo rozsahů jsou pak kvůli bezpečnosti přístupné jen z IP adresy centrálního routeru. Tato IP adresa se dá nastavit volitelně.
Jak to používat
__deprecated__
V sekci Administrace->Nastavení->Brána si nadefinujte texty pro jednotlivé důvody přesměrování. Můžete použít i jednoduché HTML tagy. Náhledy výsledných zpráv jsou k dispozici na http://domena/cs/redirect/test/0, kde možné čísla jsou 0, 1, 2, 4, 8 (kvůli binární masce). Připomínám, že je potřeba mít vše správně nastaveno na straně centrálního routeru i na straně Freenetisu. Hlavně je důležité, aby bylo zaplé přesměrování na dané podsíti. Přesměrovat lze z různého důvodu manuálně jednoho člena v jeho profilu, celou podsíť v sekci Podsítě nebo všechny členy kterých se to týká v sekci Členové.