iptables maskarad
7 отговора
755 прегледа
iptables maskarad
Zdraveite, kak da si napravia maskarad s iptables bez da ima riazane na kakvoto i da e?
Mersi
P.S. izviniavaite za glupavia vypros, absoliutno nachinaesh sym v Linux
No pyk v sravnenie s Windows ... Prosto mi haresva poveche "pingvin4eto" :)
Mersi
P.S. izviniavaite za glupavia vypros, absoliutno nachinaesh sym v Linux
No pyk v sravnenie s Windows ... Prosto mi haresva poveche "pingvin4eto" :)
Re: iptables maskarad
Imam 3 komputera
comp 1 - server mashina (Mandrake 9)
comp 2 - workstation (Mandrake 9)
comp 3 - office s Win2000
Internet dostyp (lan) ima samo comp 1. Iskam da go napravia gateway za lokalnata mreja
comp1 - Internet IP - 192.168.0.145
comp1 - local IP - 10.0.0.1
comp2 - 10.0.0.2
comp3 - 10.0.0.3
ne se nujdsaia ot firewalls, security i t.n.
samo prost maskarad
Mersi
comp 1 - server mashina (Mandrake 9)
comp 2 - workstation (Mandrake 9)
comp 3 - office s Win2000
Internet dostyp (lan) ima samo comp 1. Iskam da go napravia gateway za lokalnata mreja
comp1 - Internet IP - 192.168.0.145
comp1 - local IP - 10.0.0.1
comp2 - 10.0.0.2
comp3 - 10.0.0.3
ne se nujdsaia ot firewalls, security i t.n.
samo prost maskarad
Mersi
Re: iptables maskarad
iptables -t nat -P POSTROUTING DROP
iptables -t nat -A POSTROUTING -o eth0 -j MAQUERADE
eth0 e pyrviq ti ethernet interface
sega pri teb ne znam dali eth0 e 192.168.0.145
no se predpolaga 4e taka
"iptables -t nat -P POSTROUTING DROP" tfa drop pri men e "ACCEPT"
ina4e nqmam "ping" ot gateway-a kym ostanalite mashini
taka 4e ako i ti nqmash napishi
iptables -t nat -P POSTROUTING ACCEPT
i vsi4ko e case sensitive
i az sym s pod0ben lan
samo 4e sym s dialup4e
iptables -t nat -A POSTROUTING -o eth0 -j MAQUERADE
eth0 e pyrviq ti ethernet interface
sega pri teb ne znam dali eth0 e 192.168.0.145
no se predpolaga 4e taka
"iptables -t nat -P POSTROUTING DROP" tfa drop pri men e "ACCEPT"
ina4e nqmam "ping" ot gateway-a kym ostanalite mashini
taka 4e ako i ti nqmash napishi
iptables -t nat -P POSTROUTING ACCEPT
i vsi4ko e case sensitive
i az sym s pod0ben lan
samo 4e sym s dialup4e
Re: iptables maskarad
Що просто не си вземеш един RUTER и забравяш за проблемите
триабвати 486 DX 66 s 16MB ram и FDD1.44 и естествено
[линк]
Прави това което искаш и повече от това
триабвати 486 DX 66 s 16MB ram и FDD1.44 и естествено
[линк]
Прави това което искаш и повече от това
Re: iptables maskarad
IP Masquerade или Как да си share-нем интернет на локалната мрежа
Как работи IP Masquerade?
Ето една опростена диаграма взета от оригиналните IP Masquerade FAQ от Ken Eves:
+---------------------------------------------------------------------------+
|PPP/ETH/и др. +------------+ +-------------+ |
|Към ISPто ви | Линукс#1 | PPP/ETH/и др. | | |
| | | | USER#1 | |
| <---------- Модем1| |модем(NIC)2-- модем(NIC)3| | |
| | | | | |
| 111.222.121.212 | | 192.168.0.100 | | |
| +------------+ +-------------+ |
+---------------------------------------------------------------------------+
На диаграмата, Линукс машина с IP_MASQUERADING инсталиран като Линукс#1 е свързан с Интернет посредством PPP, Ethernet, и др. Той има публично IP : 111.222.121.212. Също така има и друг мрежов интерфейс (модем или мрежова карта) който го свързва с локална мрежа.
Втората система (която може да не е линукс) се свързва с Линукс#1 машината и започва да подава заявки за Интернет трафик. Но тя мяма публично IP и ползва резервиранн адрес 192.168.0.100 ([линк] - за повече информация относно резервираните адреси).
С IP Masquerade и правилно конфигурирано рутиране, втората машина USER#1 може да ползва интернет, така както ако беше директно свързана с него с малки изключения.
Ето още една диаграма която представя работата на IP Masquerade:
+---------------------------------------------------------------------------+
| Ethernet |
| 192.168.0.x |
| +----------+ |
| | | |
| | A-box |:::::: |
| | |.2 : |
| +----------+ : |
| : +----------+ PPP/ETH |
| +----------+ : .1 | Линукс | връзка |
| | | :::::::| Masq-Gate|:::::::::::::::::::>> Интернет |
| | B-box |:::::: | | 111.222.121.212 |
| | |.3 : +----------+ |
| +----------+ : |
| : |
| +----------+ : |
| | | : |
| | C-box |:::::: |
| | |.4 |
| +----------+ |
| |
| |
| | | | > |
| | <--Вътрешна мрежа--> | | <---- Външна мрежа ----> > |
| | свързана с | | Свързана от Линукс > |
| | Ethernet хъб или | | сървъра през вашата > |
| | суич | | Интернет връзка > |
+---------------------------------------------------------------------------+
В този пример имаме 4 компютъра, които имат локални IP адреси (192.168.0.х) и един Линукс сървър, който има публичен адрес 111.222.121.212 и локален адрес 192.168.0.1. Трите компютъра: A-Box (192.168.0.2); B-Box (192.168.0.3) и C-Box (192.168.0.4) могат да имат всякаква ОС каквато ви дойде на ум, която може да се върже към интернет. Когато имаме IP Masquerade, Masq-Gate системата променя така вътрешните връзки, че заявките от тяхно име да са все едно от самата Masq-gate система. След това когато има данни към някоя вътрешна система Masq-gate-а се грижи тя да достигне правилната машина.
И така да започваме със същинската част
Изисквания за IP Masquerade на Линукс 2.4.х
- Някакъв приличен хардуер
- Ядро 2.4.х (сорс кода е достъпен на hhtp://[линк])
*повечето модерни Линукси над 7.1 които са с 2.4.х ядра са по принцип модулни ядра и имат всички IP Masquarade функции включени в тях. В такъв случай няма нужда да компилирате ново ядро. Ако ъпгрейдвате вашето ядро, трябва да внимавате дали някои програми не искат ъпгрейд заедно с ядрото за да работят
- програмата iptables версия 1.2.4 или по-нова ([линк])
* Всички версии на iptables под 1.2.3 имат проблем с FTP модула който може да попречи нанякои съществуващи правила на firewall-a. Препоръчвам на всички iptables потребители да си набавят наи-новата версия.
* Всички версии на iptables под 1.2.2 имат FTP port security vulnerability в модула ip_conntrack_ftp.
- Предварително работеща TCP/IP мрежа
- Връзка с Интернет към вашата Линукс машина
- Знания по темата конфигуриране, компилиране и инсталиране на ново Линукс ядро.
Най-новите 2.4.х ядра вече ползват изцялно нов TCP/IP network stack както и нова NAT под-система наречена NetFilter. В този нов набор от инструменти NetFilter, има нещо много важно наречено IPTABLES за 2.4.х ядра, което много прилича на IPCHAINS при 2.2 ядрата и IPFWADM за 2.0.х ядрата. Новата IPTABLES система е много по мощна (комбинира няколко функции в едно като истинска NAT функция), предлага по-добра сигурност и по-добре се държи със новите 2.4.х TCP/IP stack. Но този нов набор от инструменти може да бъде доста сложен в сравнение с по-старите ядра.
За разлика от преминаването от IPFWADM към IPCHAINS, новите NetFilter инструменти имат модули, които потдържат по-старите IPCHAINS и IPFWADM правила с минимални промени. Вече не е необходимо да пренаписвате изцяло старите си МАSQ или firewall скриптове. Но имайте предвид, че може да има няколко ползи от написването на изцяло нов скрипт с ползването на новите IPTABLES функции.
Ето няколко нови функции включени в 2.4.х :
* ИСТИНСКА 1:1 NAT функция за тези, които трябва да ползват TCP/IP адреси и подмрежи (няма вечe iproute2 команди)
* Вграден PORT Forwarding ( няма вече ipmasqadm или ipportfw команди)
* Вградената PORTFW'ing потдръжка работи и свътрешен и външен трафик. Това означава, че потребителите които имат PORTFW за външен трафик и REDIR за препращане на вътрешен порт, няма да имат нужда от ползването на два инструсента!
* PORT Forwarding на FTP трафика към вътрешни хостова е напълно потдътжан и за него се грижи модула conn_trak_ftp
* Пълно рутиране на базата на правила
* Пълна потдръжка на TCP/IP v4, v6 и дори DECnet
* Потдръжка на wildcatd interface имена като "ppp" за сериина връзка като ppp0, ppp1 и т.н.
* Потдържа филтриране и на входящите и изходящите интерфейси (не само IP адресиране)
* Филтриране на Еthernet MAC
* Лимит на размера на DoS(Denial of Service) пакетите
* Различни нива на loging (различните пакети могат да бъдат записвани на различни SYSLOG нива)
Проверяване на вашието текущо ядро за работещ IP MASQ
Повечето Линукс дистрибуции са MASQ-ready, това не пречи да проверите вашата преди да се опитате да настроите нещата. Ще имате нужда от:
*IPTABLES
*Потдръжка от ядрото на:
- IP forwarding
- IP masquerading
- IP Firewalling
- и т.н.
За да проверите дали имате необходимите пакети напишете "ls /proc/sys/net/ipv4" и виште дали имате следното:
- ip_dynaddr
- ip_forward
Компилиране на Линукс 2.4.х ядро
- Първо ви трябва сорс кода на ядрото (за предпочитане последната версия)
* Тъй като 2.4.х и IPTABLES постоянно се доразработват, има възможност опциите да не са същите както вашите. Тук ще става дума за ядро 2.4.14 и IPTABLES 1.2.4. Препоръчително е да си набавите най-новите версии..
- Направете една директория /usr/src/kernel например и копирайте сорса на ядрото вътре. След това напишете следното:
* Ако файла завършва на .tar.gz
tar xvzf linux-2.4.x.tar.gz
* Ако файла завършва на .tar.bzip2
tar xyzf linux-2.4.x.tar.bzip2
** Като заменяте х-а в 2.4.х с версията на 2.4 ядрото която сте свалили
*** някои Линукс дистрибуции използват "I" вместа "у" като опция за да разархивират .bzip2 архив.
След като в разархивиран, ви препоръчвам да преименувате директорията linux в linux-2.4.x за да е по-ясно. За да го направите напишете : mv linux linux-2.4.x След това виште дали има директория или символична връзка която да сочи /usr/src/kernel/linux; например напишете ln -s /usr/src/kernel/linux-2.4.x /usr/src/kernel/linux като пак замените "х" с версията на вашето ядро.
- След това е препоръчително да добавите подходящите или по желание пачове(pathces) към вашето ядро ПРЕДИ да го компилирате. За 2.4.4, можете да добавите IPTABLES пачове за да имате потдръжка на специални протоколи за програми като IRC, FTP и т.н. И накрая IP Masq не изисква някакви спецялни пачове за да роботи със "NAT-friendly" приложения.
- Добавяне на IPTABLES kernel patches
Свалете пакета на iptables и го сложете в директория, примерно /usr/src/archive/netfilter. След това идете в тази директория и разархивирайте пакета :
tar xyvf iptables-1.2.x.tar.bz2
Сега влезте в новата iptables-1.2.x директория и напишете следното:
make pending-patches KERNEL_DIR=/usr/src/kernel/linux
* ако вашето ядро е на друго място сменете /usr/src/kernel/linux със правилния път.
Ето пример за това което ще ви излезне на екрана за 2.4.14 адро.
Имайте в предвид, че това ще се променя с течение на времето.
+----------------------------------------------------------------------------+
|Making dependencies: please wait... |
|----------------------------------------------------------------- |
|Welcome to Rusty's Patch-o-matic! |
| |
|Each patch is a new feature: many have minimal impact, some do not. |
|Almost every one has bugs, so I don't recommend applying them all! |
|------------------------------------------------------- |
|Testing... ipt_MIRROR-ttl.patch NOT APPLIED (3 rejects out of 3 hunks) |
|The ipt_MIRROR-ttl patch: |
| Author: Harald Welte |
| Status: Compiles, yet untested |
| |
| This adds TTL decrementing (and checking/dropping) in case the MIRROR |
| target is used in INPUT or PREROUTING chains/hooks. This is to avoid |
| endless packet loops. |
| |
|Do you want to apply this patch [N/y/t/f/q/?] y |
|------------------------------------------------------- |
|Already applied: ipt_MIRROR-ttl ipt_REJECT-checkentry |
| |
|Testing... ipt_LOG.patch NOT APPLIED (1 rejects out of 1 hunks) |
|The ipt_LOG patch: |
| Author: Jozsef Kadlecsik |
| Status: Submitted for kernel inclusion |
| |
| The LOG target has a bug when attempting to print the inner ip packet in |
| icmp error messages. This patch fixes the bug. |
| |
|Do you want to apply this patch [N/y/t/f/q/?] y |
|------------------------------------------------------- |
|Already applied: ipt_MIRROR-ttl ipt_REJECT-checkentry ipt_LOG 2.4.1 tos-fix |
|Already applied: tcp-MSS 2.4.4 ip6tables-export-symbols |
| |
|Testing... sackperm.patch ALREADY APPLIED (0 rejects out of 1 hunks). |
| |
|Excellent! Kernel is now ready for compilation. |
+----------------------------------------------------------------------------+
- Ако всичко е наред, трябва да видите нещо от рода на:
Excellent! Kernel is now ready for compilation.
- Сега ядрото е готово за компилиране, но първо трябва да видите дали имате програмата iptables на вашата машина. Напишете следното:
whereis iptables
и се уверете, че я имате на машината си ( мястото по подразбиране е /usr/local/sbin/iptables. Ако неможете да я намерите в тази или друга директория ви препоръчвам да си я компилирате. Тъй като вече "закърпихте" ядрото с пачовете на IPTABLES, самото компилиране на IPTABLES е лесно.
просто напишете следното:
make KERNEL_DIR=/usr/src/kernel/linux
make install KERNEL_DIR=/usr/src/kernel/linux
- Сега след като ядрото е пачнато има много малко настройки за да пуснете IP Masquerade функцията. Тук трябва да се отбележи че има много начини да се компилира ядро и тук се показва просто 1 от тях. Има хора които предпочитат да компилират нещата директно в ядрото или да ги оставят като модули, но това не е тема на нашето HOWTO
Сега трябва да се настрой ядрото.
cd /usr/src/kernel/linux
make menuconfig
На екрана ще излезне конфигурационна програма с менюта. ето какво трябва да имате (освен това което на вас ви трябва за да може вашата система да работи):
Следващите опции от менюто за настройка на ядрото трябва да са "Y" за да може IP MASQ да работи пълноценно:
Code maturity level options
* Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)
* Enable loadable module support (CONFIG_MODULES)
* Set version information on all module symbols (CONFIG_MODVERSIONS
* Kernel module loader (CONFIG_KMOD)
General setup
* Networking support (CONFIG_NET)
* Sysctl support (CONFIG_SYSCTL)
Networking options
* Packet socket (CONFIG_PACKET)
* Packet socket: mmapped IO (CONFIG_PACKET_MMAP)
* Kernel/User netlink socket (CONFIG_NETLINK)
* Routing messages (CONFIG_RTNETLINK)
* Network packet filtering (replaces ipchains) (CONFIG_NETFILTER)
* Unix domain sockets (CONFIG_UNIX)
* TCP/IP networking (CONFIG_INET)
* IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES)
Networking options --> IP: Netfilter Configuration
* Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) ***
* FTP protocol support (CONFIG_IP_NF_FTP) ***
* IRC protocol support (CONFIG_IP_NF_IRC) ***
* IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) ***
* limit match support (CONFIG_IP_NF_MATCH_LIMIT)
* MAC address match support (CONFIG_IP_NF_MATCH_MAC) ***
* netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK)
* Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT)
* Connection state match support (CONFIG_IP_NF_MATCH_STATE) ***
* Packet filtering (CONFIG_IP_NF_FILTER)
* REJECT target support (CONFIG_IP_NF_TARGET_REJECT)
* Full NAT (CONFIG_IP_NF_NAT) [M/n/?] ***
* MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) ***
* Packet mangling (CONFIG_IP_NF_MANGLE)
* MARK target support (CONFIG_IP_NF_TARGET_MARK) ***
* LOG target support (CONFIG_IP_NF_TARGET_LOG) ***
* TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) ***
* ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) ***
//БЕЛЕЖКА: опциите отбелязани с *** могат да бъдат и като отделни модули.
Network device support
* Network device support (CONFIG_NETDEVICES)
//Незабравяйте да добавите потдръжка на хардуер, който може да ви потрябва:
//Лан Карти: eth, tr, etc.
//Модеми: ppp (ppp async) and/or slip
//WANs: T1, T3, ISDN, etc.
//ISDN: for internal ISDN modems
File systems
* /proc filesystem support (CONFIG_PROC_FS)
И така изберете "exit" и запазете настроиките.
!! Внимание - Това бяха необходимите компоненти за IP Masquerade. Ще трябва да изберете каквито други опции са ви необходими за вашата машина.
- Сега комлилирайте ядрото (make dep; make clean; make bzImage; make modules; make modules_install). Отново, компилирането на ядро не е засегнато навътре в това HOWTO. Ако имате проблеми се обърнете към друго четиво.
- Обновете вашия "bootloader" и рестартирайте.
- Сега трябва да добавите няколко линии в края на вашия /etc/rc.d/rc.local файл за да се стартира вашия IP Masquerade всеки път когато пуснет или рестартирате системата:
#rc.firewall - Start IPMASQ and the firewall
# This specific file will be discussed in the next section
#
/etc/rc.d/rc.firewall
Конфигуриране на IP Masquerade
Тук трябва да се отбележи, че IPCHAINS вече не е главния инструмент за настройка на firewall. Новите ядра вече ползват IPTABLES но могат да пускат и стари IPCHAINS или IPFWADM правила. Но тогава нито един от модулите на IPTABLES може да бъде пуснат. Също така нито един от модулите за ядро 2.2.х е съвместим с ядро 2.4.х/
ОК. Както вече разбрахте скрипта /etc/rc.d/rc.local ще зареди скрипт наречен /etc/rc.d/rc.firewall всеки път когато системата бъде рестартирана. Този скрипт ще зареди всички нужни IPMASQ модули, както и ще пусне IPMASQ функцията. В по-напреднал стадии, този файл може да садържа и правила за много силна защитна стена.
Както и да е. Създайте файла /etc/rc.d/rc.firewall със следните начални правила:
+----------------------------------------------------------------------------------------+
|#!/bin/sh |
|# |
|# Мястото където 'iptables' се намира |
|# |
|# Ако вашата Linux дистрибуция има iptables инсталирани, то |
|# най-вероятно те се намират в /sbin. Ако ръчно сте си компилирали |
|# iptables, мястото по подразбиране е /usr/local/sbin |
|# |
|# ** Моля ползвайте "whereis iptables" за да разберете къде |
|# ** е вашето копие и да промените пъптя по-долу, така че |
|# ** да отговаря на истината |
|# |
|#IPTABLES=/sbin/iptables |
|IPTABLES=/usr/local/sbin/iptables |
| |
| |
|#Настройване на EXTERNAL и INTERNAL интерфейс на мрежата |
|# |
|# Всяка IP Masquerade мрежа трябва да има поне по една външна |
|# (EXTERNAL)и една вътрешна(INTERNAL) мрежа. Външната мрежа |
|# е мястото където ще NAT-ваме, а вътрешната мрежа трябва да |
|# е адресирана с RFC1918 локални адреси (пр. 192.168.0.х) |
|# |
|# За този пример, "eth0" е външен, а "eth1" е вътрешен" |
|# |
|# Бележка: Ако това не е ТОЧНО както при вашата конфигурация трябва да |
|# смените стойността на EXTIF и/или INTIF . Примерно: |
|# |
|# EXTIF="ppp0" |
|# |
|# Ако ползвате модем за връзка с Интернет. |
|# |
|EXTIF="eth0" |
|INTIF="eth1" |
|echo " External Interface: $EXTIF" |
|echo " Internal Interface: $INTIF" |
| |
| |
|echo -en " loading modules: " |
| |
|# Сега трябва да се провери дали всички модули имат нужните зависимости |
|# |
|echo " - Verifying that all kernel modules are ok" |
|/sbin/depmod -a |
| |
|# С новия IPTABLES код, главната MASQ функционалност не е нито модулна, |
|# нито компилирана в ядрото. В това HOWTO показваме ВСИЧКИ IPTABLES |
|# опции като модули. Ако вашетиюо ядро е компилирано правилно, няма нужда |
|# да зареждате модулите ръчно |
|# |
|# Бележка: Следващите редове са написани САМО С ИНФОРМАЦИОННА ЦЕЛ. |
|# Няма причина ръчно да зареждате тези модули ръчно освен ако |
|# вашето ядро не е конфигурирано по този начин или изрично сте |
|# изключили модула "autoloader". |
|# |
| |
|# БЕЛЕЖКА: Задедете само тези IP MASQ модули от които се нуждаете. Всички настоящи |
|# IP MASQ модули са показани по-долу но с коментар за да не се зареждат. |
|# =============================================================== |
| |
|#Зареждане на "гръбнака" на "IPTABLES" модула - "iptable" |
|# - Зарежда се автоматично при изпълнение на команда "iptables" |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
| |
|echo -en "ip_tables, " |
|/sbin/insmod ip_tables |
| |
| |
|#Зарежда филтриращия модул на "IPTABLES" - "iptable_filter" |
|# - Зарежда се автоматично когато филтриращите правила се активират |
| |
| |
|#Зарежда скелета за проследяване на състоянието на връзката - "ip_conntrack" |
|# |
|# "conntrack" модула сам по себе си не прави нищо без друг точно определен |
|# "conntrack" модул да бъде зареден след това, като напромер "ip_conntrack_ftp" |
|# модула |
|# |
|# - Този модул се зарежда автоматично, когато има MASQ функционалност |
|# |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
|# |
|echo -en "ip_conntrack, " |
|/sbin/insmod ip_conntrack |
| |
| |
|#Зареждане на "FTP" проследяващ механизъм за пълно "FTP" проследяване |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_conntrack_ftp, " |
|/sbin/insmod ip_conntrack_ftp |
| |
| |
|#Зарежда "IRC" проследяващ механизъм за пълно "IRC" проследяване |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_conntrack_irc, " |
|/sbin/insmod ip_conntrack_irc |
| |
| |
|#Зарежда главния "IPTABLES NAT" код - "iptable_nat" |
|# - Зарежда се автоматично, когато има MASQ функционалност |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
|# |
|echo -en "iptable_nat, " |
|/sbin/insmod iptable_nat |
| |
| |
|#Зарежда FTP NAT функционалността в главния IPTABLES код |
|# Изисква се да потдържа "on-PASV FTP". |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_nat_ftp, " |
|/sbin/insmod ip_nat_ftp |
| |
| |
|#Зарежда IRC NAT функционалността в главния IPTABLES код |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_nat_irc, " |
|/sbin/insmod ip_nat_irc |
| |
| |
|# За да бъде пълен, ето списък с останалите модули на ядрото и тяхната |
|# функция. Имайте предвид, че някои модули трябвада бъдат заредени само от |
|# правилен главен модул на ядрото за да функционират правилно. |
|# -------------------------------------------------------------------- |
|# |
|# ipt_mark - маркира даден пакет за бъещо ползване. |
|# Автоматично зарежда "ipt_MARK" модула |
|# |
|# ipt_tcpmss - позволява да бъде панимулирана TCP MSS |
|# опцията за "безмозъчни" отдалечени "firewalls" |
|# Автоматично зарежда ipt_TCPMSS модула |
|# |
|# ipt_limit - позволява пакетите да бъдат ограничени от |
|# "hits per sec/min/hr" |
|# |
|# ipt_multiport - позволява указването на обхват от номера на порт вместо |
|# изброяването на отделни портове |
|# |
|# ipt_state - позволява улавянето на пакети с различни |
|# IP и TCP флагове включени/изключени |
|# |
|# ipt_unclean - позволява улавянето на пакети които имат невлидни |
|# IP/TCP включени флагове |
|# |
|# iptable_filter - Този модул позволява пакетите да бъдат изхвърляни (DROP), |
|# отказани (REJECT) или записани (LOG). Този модул автоматично |
|# зарежда следните модули: |
|# |
|# ipt_LOG - позволява записване на пакетите |
|# |
|# |
|# ipt_REJECT - Изхвърляне на пакетите и връщане на ICMP |
|# пакет, който може да се конфирурира, обратно |
|# на изпращача. |
|# |
|# iptable_mangle - Позволява пакети да бъдат манипулирани за неща |
|# като TCPMSS опцията и т.н. |
| |
|echo ". Done loading modules." |
| |
| |
| |
|#МНОГО ВАЖНО: Трябжа да се пусне IP forwarding тъй като то е изключено по подразбиране |
|# |
|# Redhat Потребители: може да опитате да смените опцията в: |
|# /etc/sysconfig/network от: |
|# |
|# FORWARD_IPV4=false |
|# на |
|# FORWARD_IPV4=true |
|# |
|echo " enabling forwarding.." |
|echo "1" > /proc/sys/net/ipv4/ip_forward |
| |
| |
|# Динамични IP потребители: |
|# |
|# Ако получавате вашия IP адрес динамично от SLIP, PPP или DHCP |
|# включете следващата опция. Това позволява откриването на динамични адреси |
|# което прави работата с "Diald" и подобни програни много по-лесна. |
|# |
|echo " enabling DynamicAddr.." |
|echo "1" > /proc/sys/net/ipv4/ip_dynaddr |
| |
| |
|# Пускане на упрстен "IP forwarding" и "Masquerading" |
|# |
|# БЕЛЕЖКА: На IPTABLES език, "IP Masquerading" е форма на "SourceNAT" или "SNAT". |
|# |
|# БЕЛЕЖКА #2:Следнитя код е пример за вътрешно LAN адресиране в |
|# 192.168.0.x мрежа с 255.255.255.0 или "24" битова маска |
|# която се свързва с Интернет чрез интерфейс "eth0". Този пример |
|# ще MASQ-не вътрешния трафик навън към Интернет, но няма да |
|# да пропусне нежелан трафик в вашата вътрешнамрежа. |
|# |
|# |
|# БЕЛЕЖКА #3: Моля променете мрежовите адреси, техните маски и имената на |
|# интерфейсите, така че да съответстват с вашите |
|# |
| |
| |
|#Премахване на предишни настройки |
|# |
|# Освен ако не е уточнено, опцията по подразбиране за "INPUT" и "OUTPUT" е "ACCEPT" |
|# А за "FORWARD" е "DROP" |
|# |
|# Премахване на съществуващи правила и прилагане на тези по подразбиране |
|$IPTABLES -P INPUT ACCEPT |
|$IPTABLES -F INPUT |
|$IPTABLES -P OUTPUT ACCEPT |
|$IPTABLES -F OUTPUT |
|$IPTABLES -P FORWARD DROP |
|$IPTABLES -F FORWARD |
|$IPTABLES -t nat -F |
| |
|# Позволява всички връзки да изизат "OUT" и само съществуващите и свързаните |
|# да влизат "IN" |
|$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT |
|$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT |
|$IPTABLES -A FORWARD -j LOG |
| |
|# Включване на "SNAT" (MASQUERADE) функционалност на "$EXTIF" |
|$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE |
| |
+----------------------------------------------------------------------------------------+
След като сте редактирали /etc/rc.d/rc.firewall трябва да го направите изпълним фаил със следната команда:
chmod 700 /etc/rc.d/rc.firewall
Настройка на не Линукс машини:
Няма да ви занимавам със точната настройка на другите компютри. Важното е да се сложи Gateway -> IP-то на Masq Линукс машината и да се добавят за DNS сървъри всички от /etc/resolv.conf на Masq Линукс машината.
Ами ако някои от компютрите зад NAT иска да си пусне server?
За тази цел има един инструмент наречен PORTFWD
Ето един пример за това как можете да препращате заявки към вътрешен Уеб Сървър като заместите думата"$EXTIP" със вашия Интернет Адрес:
Добавете следните редове във вашия /etc/rc.d/rc.firewall скрипт:
+---------------------------------------------------------------------------+
|#echo "Enabling PORTFW Redirection on the external LAN.." |
|# |
|# Следните команди ще препращат ЦЕЛИЯ трафик за 80 прот от външно IP |
|# към 80 прот на вътрешна машина с IP 192.168.0.10 |
|# |
|PORTFWIP="192.168.0.10" |
| |
|$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 80 -m state \ |
|--state NEW,ESTABLISHED,RELATED -j ACCEPT |
| |
|$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 80 \ |
|-j DNAT --to $PORTFWIP:80 |
| |
+---------------------------------------------------------------------------+
Готови сте. Ако искате да правите PORTFW FTP трябва да промените порт-а от 80 на 21 и разбира се да имате пуснати модулите "ip_conntrack_ftp" и "ip_nat_ftp"
Ако вашия FTP сървър е настроен за друг порт различен от 21 например 9021 трябва да уведомите "ip_conntrack_ftp" модула за новия порт със следния ред :
/sbin/insmod ip_conntrack_ftp ports=21,9021
Това е една много малка част от функциите на iptables и IP Masqerade. Сигурен съм че ако сте любознателни ще откриете много полезни за Вас функции.
Ето ви адрес на които пише Всичко за IP Masquerade. Това How-to до голяма степен е превод на oригиналнот How-to за IP Masquerade.
[линк]
Създател: TeraHz
Как работи IP Masquerade?
Ето една опростена диаграма взета от оригиналните IP Masquerade FAQ от Ken Eves:
+---------------------------------------------------------------------------+
|PPP/ETH/и др. +------------+ +-------------+ |
|Към ISPто ви | Линукс#1 | PPP/ETH/и др. | | |
| | | | USER#1 | |
| <---------- Модем1| |модем(NIC)2-- модем(NIC)3| | |
| | | | | |
| 111.222.121.212 | | 192.168.0.100 | | |
| +------------+ +-------------+ |
+---------------------------------------------------------------------------+
На диаграмата, Линукс машина с IP_MASQUERADING инсталиран като Линукс#1 е свързан с Интернет посредством PPP, Ethernet, и др. Той има публично IP : 111.222.121.212. Също така има и друг мрежов интерфейс (модем или мрежова карта) който го свързва с локална мрежа.
Втората система (която може да не е линукс) се свързва с Линукс#1 машината и започва да подава заявки за Интернет трафик. Но тя мяма публично IP и ползва резервиранн адрес 192.168.0.100 ([линк] - за повече информация относно резервираните адреси).
С IP Masquerade и правилно конфигурирано рутиране, втората машина USER#1 може да ползва интернет, така както ако беше директно свързана с него с малки изключения.
Ето още една диаграма която представя работата на IP Masquerade:
+---------------------------------------------------------------------------+
| Ethernet |
| 192.168.0.x |
| +----------+ |
| | | |
| | A-box |:::::: |
| | |.2 : |
| +----------+ : |
| : +----------+ PPP/ETH |
| +----------+ : .1 | Линукс | връзка |
| | | :::::::| Masq-Gate|:::::::::::::::::::>> Интернет |
| | B-box |:::::: | | 111.222.121.212 |
| | |.3 : +----------+ |
| +----------+ : |
| : |
| +----------+ : |
| | | : |
| | C-box |:::::: |
| | |.4 |
| +----------+ |
| |
| |
| | | | > |
| | <--Вътрешна мрежа--> | | <---- Външна мрежа ----> > |
| | свързана с | | Свързана от Линукс > |
| | Ethernet хъб или | | сървъра през вашата > |
| | суич | | Интернет връзка > |
+---------------------------------------------------------------------------+
В този пример имаме 4 компютъра, които имат локални IP адреси (192.168.0.х) и един Линукс сървър, който има публичен адрес 111.222.121.212 и локален адрес 192.168.0.1. Трите компютъра: A-Box (192.168.0.2); B-Box (192.168.0.3) и C-Box (192.168.0.4) могат да имат всякаква ОС каквато ви дойде на ум, която може да се върже към интернет. Когато имаме IP Masquerade, Masq-Gate системата променя така вътрешните връзки, че заявките от тяхно име да са все едно от самата Masq-gate система. След това когато има данни към някоя вътрешна система Masq-gate-а се грижи тя да достигне правилната машина.
И така да започваме със същинската част
Изисквания за IP Masquerade на Линукс 2.4.х
- Някакъв приличен хардуер
- Ядро 2.4.х (сорс кода е достъпен на hhtp://[линк])
*повечето модерни Линукси над 7.1 които са с 2.4.х ядра са по принцип модулни ядра и имат всички IP Masquarade функции включени в тях. В такъв случай няма нужда да компилирате ново ядро. Ако ъпгрейдвате вашето ядро, трябва да внимавате дали някои програми не искат ъпгрейд заедно с ядрото за да работят
- програмата iptables версия 1.2.4 или по-нова ([линк])
* Всички версии на iptables под 1.2.3 имат проблем с FTP модула който може да попречи нанякои съществуващи правила на firewall-a. Препоръчвам на всички iptables потребители да си набавят наи-новата версия.
* Всички версии на iptables под 1.2.2 имат FTP port security vulnerability в модула ip_conntrack_ftp.
- Предварително работеща TCP/IP мрежа
- Връзка с Интернет към вашата Линукс машина
- Знания по темата конфигуриране, компилиране и инсталиране на ново Линукс ядро.
Най-новите 2.4.х ядра вече ползват изцялно нов TCP/IP network stack както и нова NAT под-система наречена NetFilter. В този нов набор от инструменти NetFilter, има нещо много важно наречено IPTABLES за 2.4.х ядра, което много прилича на IPCHAINS при 2.2 ядрата и IPFWADM за 2.0.х ядрата. Новата IPTABLES система е много по мощна (комбинира няколко функции в едно като истинска NAT функция), предлага по-добра сигурност и по-добре се държи със новите 2.4.х TCP/IP stack. Но този нов набор от инструменти може да бъде доста сложен в сравнение с по-старите ядра.
За разлика от преминаването от IPFWADM към IPCHAINS, новите NetFilter инструменти имат модули, които потдържат по-старите IPCHAINS и IPFWADM правила с минимални промени. Вече не е необходимо да пренаписвате изцяло старите си МАSQ или firewall скриптове. Но имайте предвид, че може да има няколко ползи от написването на изцяло нов скрипт с ползването на новите IPTABLES функции.
Ето няколко нови функции включени в 2.4.х :
* ИСТИНСКА 1:1 NAT функция за тези, които трябва да ползват TCP/IP адреси и подмрежи (няма вечe iproute2 команди)
* Вграден PORT Forwarding ( няма вече ipmasqadm или ipportfw команди)
* Вградената PORTFW'ing потдръжка работи и свътрешен и външен трафик. Това означава, че потребителите които имат PORTFW за външен трафик и REDIR за препращане на вътрешен порт, няма да имат нужда от ползването на два инструсента!
* PORT Forwarding на FTP трафика към вътрешни хостова е напълно потдътжан и за него се грижи модула conn_trak_ftp
* Пълно рутиране на базата на правила
* Пълна потдръжка на TCP/IP v4, v6 и дори DECnet
* Потдръжка на wildcatd interface имена като "ppp" за сериина връзка като ppp0, ppp1 и т.н.
* Потдържа филтриране и на входящите и изходящите интерфейси (не само IP адресиране)
* Филтриране на Еthernet MAC
* Лимит на размера на DoS(Denial of Service) пакетите
* Различни нива на loging (различните пакети могат да бъдат записвани на различни SYSLOG нива)
Проверяване на вашието текущо ядро за работещ IP MASQ
Повечето Линукс дистрибуции са MASQ-ready, това не пречи да проверите вашата преди да се опитате да настроите нещата. Ще имате нужда от:
*IPTABLES
*Потдръжка от ядрото на:
- IP forwarding
- IP masquerading
- IP Firewalling
- и т.н.
За да проверите дали имате необходимите пакети напишете "ls /proc/sys/net/ipv4" и виште дали имате следното:
- ip_dynaddr
- ip_forward
Компилиране на Линукс 2.4.х ядро
- Първо ви трябва сорс кода на ядрото (за предпочитане последната версия)
* Тъй като 2.4.х и IPTABLES постоянно се доразработват, има възможност опциите да не са същите както вашите. Тук ще става дума за ядро 2.4.14 и IPTABLES 1.2.4. Препоръчително е да си набавите най-новите версии..
- Направете една директория /usr/src/kernel например и копирайте сорса на ядрото вътре. След това напишете следното:
* Ако файла завършва на .tar.gz
tar xvzf linux-2.4.x.tar.gz
* Ако файла завършва на .tar.bzip2
tar xyzf linux-2.4.x.tar.bzip2
** Като заменяте х-а в 2.4.х с версията на 2.4 ядрото която сте свалили
*** някои Линукс дистрибуции използват "I" вместа "у" като опция за да разархивират .bzip2 архив.
След като в разархивиран, ви препоръчвам да преименувате директорията linux в linux-2.4.x за да е по-ясно. За да го направите напишете : mv linux linux-2.4.x След това виште дали има директория или символична връзка която да сочи /usr/src/kernel/linux; например напишете ln -s /usr/src/kernel/linux-2.4.x /usr/src/kernel/linux като пак замените "х" с версията на вашето ядро.
- След това е препоръчително да добавите подходящите или по желание пачове(pathces) към вашето ядро ПРЕДИ да го компилирате. За 2.4.4, можете да добавите IPTABLES пачове за да имате потдръжка на специални протоколи за програми като IRC, FTP и т.н. И накрая IP Masq не изисква някакви спецялни пачове за да роботи със "NAT-friendly" приложения.
- Добавяне на IPTABLES kernel patches
Свалете пакета на iptables и го сложете в директория, примерно /usr/src/archive/netfilter. След това идете в тази директория и разархивирайте пакета :
tar xyvf iptables-1.2.x.tar.bz2
Сега влезте в новата iptables-1.2.x директория и напишете следното:
make pending-patches KERNEL_DIR=/usr/src/kernel/linux
* ако вашето ядро е на друго място сменете /usr/src/kernel/linux със правилния път.
Ето пример за това което ще ви излезне на екрана за 2.4.14 адро.
Имайте в предвид, че това ще се променя с течение на времето.
+----------------------------------------------------------------------------+
|Making dependencies: please wait... |
|----------------------------------------------------------------- |
|Welcome to Rusty's Patch-o-matic! |
| |
|Each patch is a new feature: many have minimal impact, some do not. |
|Almost every one has bugs, so I don't recommend applying them all! |
|------------------------------------------------------- |
|Testing... ipt_MIRROR-ttl.patch NOT APPLIED (3 rejects out of 3 hunks) |
|The ipt_MIRROR-ttl patch: |
| Author: Harald Welte |
| Status: Compiles, yet untested |
| |
| This adds TTL decrementing (and checking/dropping) in case the MIRROR |
| target is used in INPUT or PREROUTING chains/hooks. This is to avoid |
| endless packet loops. |
| |
|Do you want to apply this patch [N/y/t/f/q/?] y |
|------------------------------------------------------- |
|Already applied: ipt_MIRROR-ttl ipt_REJECT-checkentry |
| |
|Testing... ipt_LOG.patch NOT APPLIED (1 rejects out of 1 hunks) |
|The ipt_LOG patch: |
| Author: Jozsef Kadlecsik |
| Status: Submitted for kernel inclusion |
| |
| The LOG target has a bug when attempting to print the inner ip packet in |
| icmp error messages. This patch fixes the bug. |
| |
|Do you want to apply this patch [N/y/t/f/q/?] y |
|------------------------------------------------------- |
|Already applied: ipt_MIRROR-ttl ipt_REJECT-checkentry ipt_LOG 2.4.1 tos-fix |
|Already applied: tcp-MSS 2.4.4 ip6tables-export-symbols |
| |
|Testing... sackperm.patch ALREADY APPLIED (0 rejects out of 1 hunks). |
| |
|Excellent! Kernel is now ready for compilation. |
+----------------------------------------------------------------------------+
- Ако всичко е наред, трябва да видите нещо от рода на:
Excellent! Kernel is now ready for compilation.
- Сега ядрото е готово за компилиране, но първо трябва да видите дали имате програмата iptables на вашата машина. Напишете следното:
whereis iptables
и се уверете, че я имате на машината си ( мястото по подразбиране е /usr/local/sbin/iptables. Ако неможете да я намерите в тази или друга директория ви препоръчвам да си я компилирате. Тъй като вече "закърпихте" ядрото с пачовете на IPTABLES, самото компилиране на IPTABLES е лесно.
просто напишете следното:
make KERNEL_DIR=/usr/src/kernel/linux
make install KERNEL_DIR=/usr/src/kernel/linux
- Сега след като ядрото е пачнато има много малко настройки за да пуснете IP Masquerade функцията. Тук трябва да се отбележи че има много начини да се компилира ядро и тук се показва просто 1 от тях. Има хора които предпочитат да компилират нещата директно в ядрото или да ги оставят като модули, но това не е тема на нашето HOWTO
Сега трябва да се настрой ядрото.
cd /usr/src/kernel/linux
make menuconfig
На екрана ще излезне конфигурационна програма с менюта. ето какво трябва да имате (освен това което на вас ви трябва за да може вашата система да работи):
Следващите опции от менюто за настройка на ядрото трябва да са "Y" за да може IP MASQ да работи пълноценно:
Code maturity level options
* Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)
* Enable loadable module support (CONFIG_MODULES)
* Set version information on all module symbols (CONFIG_MODVERSIONS
* Kernel module loader (CONFIG_KMOD)
General setup
* Networking support (CONFIG_NET)
* Sysctl support (CONFIG_SYSCTL)
Networking options
* Packet socket (CONFIG_PACKET)
* Packet socket: mmapped IO (CONFIG_PACKET_MMAP)
* Kernel/User netlink socket (CONFIG_NETLINK)
* Routing messages (CONFIG_RTNETLINK)
* Network packet filtering (replaces ipchains) (CONFIG_NETFILTER)
* Unix domain sockets (CONFIG_UNIX)
* TCP/IP networking (CONFIG_INET)
* IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES)
Networking options --> IP: Netfilter Configuration
* Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK) ***
* FTP protocol support (CONFIG_IP_NF_FTP) ***
* IRC protocol support (CONFIG_IP_NF_IRC) ***
* IP tables support (required for filtering/masq/NAT) (CONFIG_IP_NF_IPTABLES) ***
* limit match support (CONFIG_IP_NF_MATCH_LIMIT)
* MAC address match support (CONFIG_IP_NF_MATCH_MAC) ***
* netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK)
* Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT)
* Connection state match support (CONFIG_IP_NF_MATCH_STATE) ***
* Packet filtering (CONFIG_IP_NF_FILTER)
* REJECT target support (CONFIG_IP_NF_TARGET_REJECT)
* Full NAT (CONFIG_IP_NF_NAT) [M/n/?] ***
* MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) ***
* Packet mangling (CONFIG_IP_NF_MANGLE)
* MARK target support (CONFIG_IP_NF_TARGET_MARK) ***
* LOG target support (CONFIG_IP_NF_TARGET_LOG) ***
* TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) ***
* ipchains (2.2-style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) ***
//БЕЛЕЖКА: опциите отбелязани с *** могат да бъдат и като отделни модули.
Network device support
* Network device support (CONFIG_NETDEVICES)
//Незабравяйте да добавите потдръжка на хардуер, който може да ви потрябва:
//Лан Карти: eth, tr, etc.
//Модеми: ppp (ppp async) and/or slip
//WANs: T1, T3, ISDN, etc.
//ISDN: for internal ISDN modems
File systems
* /proc filesystem support (CONFIG_PROC_FS)
И така изберете "exit" и запазете настроиките.
!! Внимание - Това бяха необходимите компоненти за IP Masquerade. Ще трябва да изберете каквито други опции са ви необходими за вашата машина.
- Сега комлилирайте ядрото (make dep; make clean; make bzImage; make modules; make modules_install). Отново, компилирането на ядро не е засегнато навътре в това HOWTO. Ако имате проблеми се обърнете към друго четиво.
- Обновете вашия "bootloader" и рестартирайте.
- Сега трябва да добавите няколко линии в края на вашия /etc/rc.d/rc.local файл за да се стартира вашия IP Masquerade всеки път когато пуснет или рестартирате системата:
#rc.firewall - Start IPMASQ and the firewall
# This specific file will be discussed in the next section
#
/etc/rc.d/rc.firewall
Конфигуриране на IP Masquerade
Тук трябва да се отбележи, че IPCHAINS вече не е главния инструмент за настройка на firewall. Новите ядра вече ползват IPTABLES но могат да пускат и стари IPCHAINS или IPFWADM правила. Но тогава нито един от модулите на IPTABLES може да бъде пуснат. Също така нито един от модулите за ядро 2.2.х е съвместим с ядро 2.4.х/
ОК. Както вече разбрахте скрипта /etc/rc.d/rc.local ще зареди скрипт наречен /etc/rc.d/rc.firewall всеки път когато системата бъде рестартирана. Този скрипт ще зареди всички нужни IPMASQ модули, както и ще пусне IPMASQ функцията. В по-напреднал стадии, този файл може да садържа и правила за много силна защитна стена.
Както и да е. Създайте файла /etc/rc.d/rc.firewall със следните начални правила:
+----------------------------------------------------------------------------------------+
|#!/bin/sh |
|# |
|# Мястото където 'iptables' се намира |
|# |
|# Ако вашата Linux дистрибуция има iptables инсталирани, то |
|# най-вероятно те се намират в /sbin. Ако ръчно сте си компилирали |
|# iptables, мястото по подразбиране е /usr/local/sbin |
|# |
|# ** Моля ползвайте "whereis iptables" за да разберете къде |
|# ** е вашето копие и да промените пъптя по-долу, така че |
|# ** да отговаря на истината |
|# |
|#IPTABLES=/sbin/iptables |
|IPTABLES=/usr/local/sbin/iptables |
| |
| |
|#Настройване на EXTERNAL и INTERNAL интерфейс на мрежата |
|# |
|# Всяка IP Masquerade мрежа трябва да има поне по една външна |
|# (EXTERNAL)и една вътрешна(INTERNAL) мрежа. Външната мрежа |
|# е мястото където ще NAT-ваме, а вътрешната мрежа трябва да |
|# е адресирана с RFC1918 локални адреси (пр. 192.168.0.х) |
|# |
|# За този пример, "eth0" е външен, а "eth1" е вътрешен" |
|# |
|# Бележка: Ако това не е ТОЧНО както при вашата конфигурация трябва да |
|# смените стойността на EXTIF и/или INTIF . Примерно: |
|# |
|# EXTIF="ppp0" |
|# |
|# Ако ползвате модем за връзка с Интернет. |
|# |
|EXTIF="eth0" |
|INTIF="eth1" |
|echo " External Interface: $EXTIF" |
|echo " Internal Interface: $INTIF" |
| |
| |
|echo -en " loading modules: " |
| |
|# Сега трябва да се провери дали всички модули имат нужните зависимости |
|# |
|echo " - Verifying that all kernel modules are ok" |
|/sbin/depmod -a |
| |
|# С новия IPTABLES код, главната MASQ функционалност не е нито модулна, |
|# нито компилирана в ядрото. В това HOWTO показваме ВСИЧКИ IPTABLES |
|# опции като модули. Ако вашетиюо ядро е компилирано правилно, няма нужда |
|# да зареждате модулите ръчно |
|# |
|# Бележка: Следващите редове са написани САМО С ИНФОРМАЦИОННА ЦЕЛ. |
|# Няма причина ръчно да зареждате тези модули ръчно освен ако |
|# вашето ядро не е конфигурирано по този начин или изрично сте |
|# изключили модула "autoloader". |
|# |
| |
|# БЕЛЕЖКА: Задедете само тези IP MASQ модули от които се нуждаете. Всички настоящи |
|# IP MASQ модули са показани по-долу но с коментар за да не се зареждат. |
|# =============================================================== |
| |
|#Зареждане на "гръбнака" на "IPTABLES" модула - "iptable" |
|# - Зарежда се автоматично при изпълнение на команда "iptables" |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
| |
|echo -en "ip_tables, " |
|/sbin/insmod ip_tables |
| |
| |
|#Зарежда филтриращия модул на "IPTABLES" - "iptable_filter" |
|# - Зарежда се автоматично когато филтриращите правила се активират |
| |
| |
|#Зарежда скелета за проследяване на състоянието на връзката - "ip_conntrack" |
|# |
|# "conntrack" модула сам по себе си не прави нищо без друг точно определен |
|# "conntrack" модул да бъде зареден след това, като напромер "ip_conntrack_ftp" |
|# модула |
|# |
|# - Този модул се зарежда автоматично, когато има MASQ функционалност |
|# |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
|# |
|echo -en "ip_conntrack, " |
|/sbin/insmod ip_conntrack |
| |
| |
|#Зареждане на "FTP" проследяващ механизъм за пълно "FTP" проследяване |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_conntrack_ftp, " |
|/sbin/insmod ip_conntrack_ftp |
| |
| |
|#Зарежда "IRC" проследяващ механизъм за пълно "IRC" проследяване |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_conntrack_irc, " |
|/sbin/insmod ip_conntrack_irc |
| |
| |
|#Зарежда главния "IPTABLES NAT" код - "iptable_nat" |
|# - Зарежда се автоматично, когато има MASQ функционалност |
|# |
|# - Зарежда се ръчно за да намали времето за автоматично зареждане на модули |
|# |
|echo -en "iptable_nat, " |
|/sbin/insmod iptable_nat |
| |
| |
|#Зарежда FTP NAT функционалността в главния IPTABLES код |
|# Изисква се да потдържа "on-PASV FTP". |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_nat_ftp, " |
|/sbin/insmod ip_nat_ftp |
| |
| |
|#Зарежда IRC NAT функционалността в главния IPTABLES код |
|# |
|# Зарежда се по подразбиране -- добавете "#" преди командата За да го деактивирате |
|# |
|echo -en "ip_nat_irc, " |
|/sbin/insmod ip_nat_irc |
| |
| |
|# За да бъде пълен, ето списък с останалите модули на ядрото и тяхната |
|# функция. Имайте предвид, че някои модули трябвада бъдат заредени само от |
|# правилен главен модул на ядрото за да функционират правилно. |
|# -------------------------------------------------------------------- |
|# |
|# ipt_mark - маркира даден пакет за бъещо ползване. |
|# Автоматично зарежда "ipt_MARK" модула |
|# |
|# ipt_tcpmss - позволява да бъде панимулирана TCP MSS |
|# опцията за "безмозъчни" отдалечени "firewalls" |
|# Автоматично зарежда ipt_TCPMSS модула |
|# |
|# ipt_limit - позволява пакетите да бъдат ограничени от |
|# "hits per sec/min/hr" |
|# |
|# ipt_multiport - позволява указването на обхват от номера на порт вместо |
|# изброяването на отделни портове |
|# |
|# ipt_state - позволява улавянето на пакети с различни |
|# IP и TCP флагове включени/изключени |
|# |
|# ipt_unclean - позволява улавянето на пакети които имат невлидни |
|# IP/TCP включени флагове |
|# |
|# iptable_filter - Този модул позволява пакетите да бъдат изхвърляни (DROP), |
|# отказани (REJECT) или записани (LOG). Този модул автоматично |
|# зарежда следните модули: |
|# |
|# ipt_LOG - позволява записване на пакетите |
|# |
|# |
|# ipt_REJECT - Изхвърляне на пакетите и връщане на ICMP |
|# пакет, който може да се конфирурира, обратно |
|# на изпращача. |
|# |
|# iptable_mangle - Позволява пакети да бъдат манипулирани за неща |
|# като TCPMSS опцията и т.н. |
| |
|echo ". Done loading modules." |
| |
| |
| |
|#МНОГО ВАЖНО: Трябжа да се пусне IP forwarding тъй като то е изключено по подразбиране |
|# |
|# Redhat Потребители: може да опитате да смените опцията в: |
|# /etc/sysconfig/network от: |
|# |
|# FORWARD_IPV4=false |
|# на |
|# FORWARD_IPV4=true |
|# |
|echo " enabling forwarding.." |
|echo "1" > /proc/sys/net/ipv4/ip_forward |
| |
| |
|# Динамични IP потребители: |
|# |
|# Ако получавате вашия IP адрес динамично от SLIP, PPP или DHCP |
|# включете следващата опция. Това позволява откриването на динамични адреси |
|# което прави работата с "Diald" и подобни програни много по-лесна. |
|# |
|echo " enabling DynamicAddr.." |
|echo "1" > /proc/sys/net/ipv4/ip_dynaddr |
| |
| |
|# Пускане на упрстен "IP forwarding" и "Masquerading" |
|# |
|# БЕЛЕЖКА: На IPTABLES език, "IP Masquerading" е форма на "SourceNAT" или "SNAT". |
|# |
|# БЕЛЕЖКА #2:Следнитя код е пример за вътрешно LAN адресиране в |
|# 192.168.0.x мрежа с 255.255.255.0 или "24" битова маска |
|# която се свързва с Интернет чрез интерфейс "eth0". Този пример |
|# ще MASQ-не вътрешния трафик навън към Интернет, но няма да |
|# да пропусне нежелан трафик в вашата вътрешнамрежа. |
|# |
|# |
|# БЕЛЕЖКА #3: Моля променете мрежовите адреси, техните маски и имената на |
|# интерфейсите, така че да съответстват с вашите |
|# |
| |
| |
|#Премахване на предишни настройки |
|# |
|# Освен ако не е уточнено, опцията по подразбиране за "INPUT" и "OUTPUT" е "ACCEPT" |
|# А за "FORWARD" е "DROP" |
|# |
|# Премахване на съществуващи правила и прилагане на тези по подразбиране |
|$IPTABLES -P INPUT ACCEPT |
|$IPTABLES -F INPUT |
|$IPTABLES -P OUTPUT ACCEPT |
|$IPTABLES -F OUTPUT |
|$IPTABLES -P FORWARD DROP |
|$IPTABLES -F FORWARD |
|$IPTABLES -t nat -F |
| |
|# Позволява всички връзки да изизат "OUT" и само съществуващите и свързаните |
|# да влизат "IN" |
|$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT |
|$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT |
|$IPTABLES -A FORWARD -j LOG |
| |
|# Включване на "SNAT" (MASQUERADE) функционалност на "$EXTIF" |
|$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE |
| |
+----------------------------------------------------------------------------------------+
След като сте редактирали /etc/rc.d/rc.firewall трябва да го направите изпълним фаил със следната команда:
chmod 700 /etc/rc.d/rc.firewall
Настройка на не Линукс машини:
Няма да ви занимавам със точната настройка на другите компютри. Важното е да се сложи Gateway -> IP-то на Masq Линукс машината и да се добавят за DNS сървъри всички от /etc/resolv.conf на Masq Линукс машината.
Ами ако някои от компютрите зад NAT иска да си пусне server?
За тази цел има един инструмент наречен PORTFWD
Ето един пример за това как можете да препращате заявки към вътрешен Уеб Сървър като заместите думата"$EXTIP" със вашия Интернет Адрес:
Добавете следните редове във вашия /etc/rc.d/rc.firewall скрипт:
+---------------------------------------------------------------------------+
|#echo "Enabling PORTFW Redirection on the external LAN.." |
|# |
|# Следните команди ще препращат ЦЕЛИЯ трафик за 80 прот от външно IP |
|# към 80 прот на вътрешна машина с IP 192.168.0.10 |
|# |
|PORTFWIP="192.168.0.10" |
| |
|$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport 80 -m state \ |
|--state NEW,ESTABLISHED,RELATED -j ACCEPT |
| |
|$IPTABLES -A PREROUTING -t nat -p tcp -d $EXTIP --dport 80 \ |
|-j DNAT --to $PORTFWIP:80 |
| |
+---------------------------------------------------------------------------+
Готови сте. Ако искате да правите PORTFW FTP трябва да промените порт-а от 80 на 21 и разбира се да имате пуснати модулите "ip_conntrack_ftp" и "ip_nat_ftp"
Ако вашия FTP сървър е настроен за друг порт различен от 21 например 9021 трябва да уведомите "ip_conntrack_ftp" модула за новия порт със следния ред :
/sbin/insmod ip_conntrack_ftp ports=21,9021
Това е една много малка част от функциите на iptables и IP Masqerade. Сигурен съм че ако сте любознателни ще откриете много полезни за Вас функции.
Ето ви адрес на които пише Всичко за IP Masquerade. Това How-to до голяма степен е превод на oригиналнот How-to за IP Masquerade.
[линк]
Създател: TeraHz