Směrování a maškaráda: Porovnání verzí
(Založení článku) |
(→Podpora pro FTP a spol.: upřesnění, testování) |
||
Řádka 41: | Řádka 41: | ||
== Podpora pro FTP a spol. == | == Podpora pro FTP a spol. == | ||
− | Problémem při použití maškarády jsou složitější protokoly, mezi něž patří například FTP. FTP používá dvě spojení - jedno řídící a druhé datové. V případě, že stanice naváže z vnitřní sítě řídící spojení se serverem v Internetu, je vše v pořádku. Problém nastane ve chvíli, kdy klient požádá o soubor a server se pokusí navázat datové spojení se stanicí (v klasickém aktivním režimu). Maškarádující stroj totiž nemá ve své tabulce žádný záznam, který by umožnil toto spojení přesměrovat ke stanici. | + | Problémem při použití maškarády jsou složitější protokoly, mezi něž patří například FTP. FTP používá dvě spojení - jedno řídící a druhé datové. V případě, že stanice naváže z vnitřní sítě řídící spojení se serverem v Internetu, je vše v pořádku. Problém nastane ve chvíli, kdy klient požádá o soubor a server se pokusí navázat datové spojení se stanicí (v klasickém aktivním režimu). Maškarádující stroj totiž nemá ve své tabulce žádný záznam, který by umožnil toto spojení přesměrovat ke stanici. Řešením je použít na maškarádujícím stroji speciální modul, který bude sledovat všechna řídící spojení a bude v případě potřeby zanášet do maškarádující tabulky takové záznamy, které navázání datového spojení ze serveru ke stanici umožní. |
− | + | Verzi jádra zjistíte příkazem <code>uname -r</code>. | |
+ | |||
+ | === Jádro 2.6.x === | ||
+ | |||
+ | V jádrech 2.6.x jsou potřeba tři moduly: <code>ip_conntrack</code> (zavádí se automaticky při nastavení maškarády příkazem <code>iptables</code>), <code>ip_conntrack_ftp</code> a <code>ip_nat_ftp</code>. Zkontrolujeme přítomnost modulu <code>ip_conntrack</code> (příkaz <code>lsmod</code> vypisuje moduly zavedené v jádře a příkaz <code>grep</code> omezí výstup jen na řádek, který obsahuje jméno modulu): | ||
+ | |||
+ | lsmod | grep ip_conntrack | ||
+ | |||
+ | Zbývající moduly můžeme zavést ručně příkazem <code>modprobe</code>: | ||
modprobe ip_conntrack_ftp | modprobe ip_conntrack_ftp | ||
modprobe ip_nat_ftp | modprobe ip_nat_ftp | ||
− | Pokud chcete zavedení těchto modulů automatizovat, využijte toho, že v okamžiku aktivace maškarády je automaticky zaváděn do jádra modul ip_conntrack. Pomocí záznamu do souboru | + | Pokud chcete zavedení těchto modulů automatizovat, využijte toho, že v okamžiku aktivace maškarády je automaticky zaváděn do jádra modul <code>ip_conntrack</code>. Pomocí záznamu do souboru zajistíme, že v okamžiku jeho zavedení budou následně zavedeny ještě další dva potřebné moduly pro podporu FTP. Vložte tedy do souboru <CODE>/etc/modprobe.conf</CODE> následující dvojřádek (záznam je rozdělený na dva řádky znakem zpětného lomítka): |
install ip_conntrack /sbin/modprobe --ignore-install ip_conntrack && \ | install ip_conntrack /sbin/modprobe --ignore-install ip_conntrack && \ | ||
/sbin/modprobe ip_conntrack_ftp && /sbin/modprobe ip_nat_ftp || : | /sbin/modprobe ip_conntrack_ftp && /sbin/modprobe ip_nat_ftp || : | ||
+ | |||
+ | === Jádro 2.4.x a starší === | ||
Pro jádra 2.4.x a starší použijeme v souboru <CODE>/etc/modules.conf</CODE>: | Pro jádra 2.4.x a starší použijeme v souboru <CODE>/etc/modules.conf</CODE>: | ||
Řádka 57: | Řádka 67: | ||
above ip_conntrack ip_conntrack_ftp ip_nat_ftp | above ip_conntrack ip_conntrack_ftp ip_nat_ftp | ||
− | Pokud bude vše dobře fungovat, půjde se z vnitřní stanice spojit s FTP serverem a zahájit FTP přenos (např. ve Windows Commanderu) i v aktivním režimu, kdy datové spojení navazuje server | + | === Testování funkčnosti === |
+ | Pokud bude vše dobře fungovat, půjde se z vnitřní stanice spojit s FTP serverem a zahájit FTP přenos (např. ve Windows Commanderu) i v aktivním režimu, kdy datové spojení navazuje server. | ||
− | Nemáte-li z nějakého důvodu možnost moduly použít, budete muset FTP přenosy nastavit do tzv. pasivního režimu, kdy je datové spojení navazováno od klienta směrem k serveru (lze nastavit v programu, který pro FTP přenosy používáte, WWW prohlížeč používá pasivní režim implicitně). | + | Nemáte-li z nějakého důvodu možnost moduly použít (například v případě, že se k FTP serveru připojujete pomocí šifrovaného spojení, které modul nemůže sledovat), budete muset FTP přenosy nastavit do tzv. pasivního režimu, kdy je datové spojení navazováno od klienta směrem k serveru (lze nastavit v programu, který pro FTP přenosy používáte, WWW prohlížeč používá pasivní režim implicitně). |
Verze z 3. 9. 2008, 06:23
Maškaráda zprostředkovává přístup do Internetu počítačům, které ve vnitřní síti používají privátní IP adresy (tj. neveřejné, obvykle 10.x.x.x, 192.168.x.x atp).
Obsah
Princip funkce
Maškaráda funguje tak, že při průchodu prvního datagramu z privátní sítě směrem do Internetu přepíše odesílající port a IP adresu (z privátního rozsahu) na veřejnou IP adresu, kterou router disponuje (zde rozhraní eth0
). Zároveň zavede do maškarádovací tabulky /proc/net/ip_conntrack
záznam, podle kterého bude proveden překlad zpět (při příchodu datagramu s odpovědí). Vzhledem k tomu, že tato tabulka vzniká dynamicky na popud z vnitřní stanice (stanice zahájí komunikaci s někým v Internetu), nelze z Internetu zahájit komunikaci směrem k vnitřní stanici (protože z Internetu můžete odeslat datagram jen na rozhraní eth0
s veřejnou IP adresou). To může být v některých případech nepříjemné (např. různé peer-to-peer sítě, kde je pak potřeba použít portforwarding), ale může to být i výhoda (ochrana vnitřních stanic před nezvanými hosty z Internetu).
Nastavení maškarády
Maškarádu pro počítače ve vnitřní síti zapnete příkazem (10.0.0.0/24 je vnitřní síť, eth0
je venkovní síťové rozhraní):
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
Všechna nastavení iptables lze uložit. Při každém startu je můžeme obnovovat tak, že povolíme start služby iptables pomocí programu ntsysv
nebo příkazem chkconfig
, jak je uvedeno níže. Uložení aktuálních pravidel a povolení jejich obnovení při startu pak zajistíme těmito dvěma příkazy:
/etc/init.d/iptables save chkconfig iptables on
Výpis nastavení
Pravidla v iptables si můžete vypsat příkazem:
iptables -L -n -t nat # výpis nat tabulky (musí být vidět pravidlo # uložené příkazem výše) iptables -L -n # výpis klasické tabulky (zde může být prázdná) iptables -L -n -t mangle # výpis mangle tabulky (zde také nepoužita)
Pokud byste chtěli iptables vypráznit, lze použít příkazy:
/etc/init.d/iptables stop # použití skriptu iptables -F # ruční vyprázdnění iptables -X iptables -F -t nat iptables -X -t nat iptables -F -t mangle iptables -X -t mangle iptables -P INPUT ACCEPT # nastavení iplicitních politik iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT
Podpora pro FTP a spol.
Problémem při použití maškarády jsou složitější protokoly, mezi něž patří například FTP. FTP používá dvě spojení - jedno řídící a druhé datové. V případě, že stanice naváže z vnitřní sítě řídící spojení se serverem v Internetu, je vše v pořádku. Problém nastane ve chvíli, kdy klient požádá o soubor a server se pokusí navázat datové spojení se stanicí (v klasickém aktivním režimu). Maškarádující stroj totiž nemá ve své tabulce žádný záznam, který by umožnil toto spojení přesměrovat ke stanici. Řešením je použít na maškarádujícím stroji speciální modul, který bude sledovat všechna řídící spojení a bude v případě potřeby zanášet do maškarádující tabulky takové záznamy, které navázání datového spojení ze serveru ke stanici umožní.
Verzi jádra zjistíte příkazem uname -r
.
Jádro 2.6.x
V jádrech 2.6.x jsou potřeba tři moduly: ip_conntrack
(zavádí se automaticky při nastavení maškarády příkazem iptables
), ip_conntrack_ftp
a ip_nat_ftp
. Zkontrolujeme přítomnost modulu ip_conntrack
(příkaz lsmod
vypisuje moduly zavedené v jádře a příkaz grep
omezí výstup jen na řádek, který obsahuje jméno modulu):
lsmod | grep ip_conntrack
Zbývající moduly můžeme zavést ručně příkazem modprobe
:
modprobe ip_conntrack_ftp modprobe ip_nat_ftp
Pokud chcete zavedení těchto modulů automatizovat, využijte toho, že v okamžiku aktivace maškarády je automaticky zaváděn do jádra modul ip_conntrack
. Pomocí záznamu do souboru zajistíme, že v okamžiku jeho zavedení budou následně zavedeny ještě další dva potřebné moduly pro podporu FTP. Vložte tedy do souboru /etc/modprobe.conf
následující dvojřádek (záznam je rozdělený na dva řádky znakem zpětného lomítka):
install ip_conntrack /sbin/modprobe --ignore-install ip_conntrack && \ /sbin/modprobe ip_conntrack_ftp && /sbin/modprobe ip_nat_ftp || :
Jádro 2.4.x a starší
Pro jádra 2.4.x a starší použijeme v souboru /etc/modules.conf
:
above ip_conntrack ip_conntrack_ftp ip_nat_ftp
Testování funkčnosti
Pokud bude vše dobře fungovat, půjde se z vnitřní stanice spojit s FTP serverem a zahájit FTP přenos (např. ve Windows Commanderu) i v aktivním režimu, kdy datové spojení navazuje server.
Nemáte-li z nějakého důvodu možnost moduly použít (například v případě, že se k FTP serveru připojujete pomocí šifrovaného spojení, které modul nemůže sledovat), budete muset FTP přenosy nastavit do tzv. pasivního režimu, kdy je datové spojení navazováno od klienta směrem k serveru (lze nastavit v programu, který pro FTP přenosy používáte, WWW prohlížeč používá pasivní režim implicitně).