Една от честите употреби на GNU/Linux е да замести маршрутизатор Cisco или друг специализиран хардуер с евтино старо PC от класа на 486 или (по-добре) Pentium. Това в никакъв случай не значи по-малко възможности, а напротив -- GNU/Linux като маршрутизатор е способен на почти всичко, което може да се появи в практиката.
Системата в ядрото, която се грижи за всички тези неща, се нарича Netfilter. Тя се управлява чрез командата iptables(8) от пакета iptables. Повече информация може да намерите в сайта на Netfilter.
След като конфигурирате Netfilter с нужните ви правила, остава въпросът как те да се възстановяват при рестартиране на компютъра. За целта използвайте следната команда:
# /etc/init.d/iptables save active
FIXME: Това няма да работи под Sarge. В /usr/share/doc/iptables/README.Debian.gz има повече информация.
Следните прости правила са взети от SecurityFocus. Те са само "`скелет"' с възможност да допълвате с още правила. Дадени са и две примерни правила.
INTIF=eth0 # Вътрешна мрежа EXTIF=eth1 # Интернет TCP_SERVICES="22,80" # Разрешени услуги # Изтриване на всички таблици iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -t nat -F PREROUTING iptables -t nat -F POSTROUTING ### Таблица INPUT ########################################## # Подразбираща се политика. iptables -P INPUT DROP # Пакети от активни TCP връзки се разрешават. Пакети-отговори също се # разрешават, например отговор на DNS заявка (по UDP) или отговор на # ping request (по ICMP). iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Всеки от вътрешната мрежа, както и от локалния интерфейс, може да # започне нова връзка. iptables -A INPUT -i $INTIF -m state --state NEW -j ACCEPT iptables -A INPUT -i lo -m state --state NEW -j ACCEPT # Тук е мястото за още правила. # Пример: Разрешава нови TCP връзки от Интернет към някой от # $TCP_SERVICES на който и да е компютър от вътрешната мрежа. iptables -A INPUT -i $EXTIF -m state --state NEW \ -p tcp -m multiport --dport $TCP_SERVICES -j ACCEPT # Хроникиране на отказаните пакети. iptables -A INPUT -j LOG --log-prefix "FW_INPUT " ### Таблица FORWARD ######################################## # Подразбираща се политика. iptables -P FORWARD DROP # Пакет от вътрешната мрежа, отиващ към Интернет. iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT # За да се върне пакетът, обаче, трябва да е част от някоя активна # TCP връзка. iptables -A FORWARD -i $EXTIF \ -m state --state ESTABLISHED,RELATED -j ACCEPT # Тук е мястото за още правила. # Хроникиране на отказаните пакети. iptables -A FORWARD -j LOG --log-prefix "FW_FORWARD " ### Таблица OUTPUT ######################################### # Подразбираща се политика iptables -P OUTPUT ACCEPT ### Таблица POSTROUTING #################################### # Пример: Маскарадинг за отиващите към Интернет пакети. iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE