Směrování a maškaráda: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
(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í.
  
Ř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í. Moduly můžete zavést ručně příkazy:
+
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 zajistíme, že v okamžiku jeho zavedení budou následně zavedeny ještě naše další dva moduly pro podporu FTP. Vložte tedy do souboru <CODE>/etc/modprobe.conf</CODE> následující řádek:
+
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. Zavedené moduly lze vypsat příkazem <CODE>lsmod</CODE>.
+
=== 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).

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ě).