Когда то, когда скорости были маленькими и не было такого повального увлечения торрентами стоял себе АДСЛ модем  в режиме роутера для небольшой сети, раздавал себе интернет и все было хорошо.  Прошло время и тарифы на инет снижались скорости росли народ потянулся постоянно чегото качать и модем стал периодически виснуть видимо офигевая количества соединений создаваемых торрент качалками.
Под рукой оказался престарелый компьютер и дистрибутив Open Suse Linux.  Модем был переключен в режим Мост и началась борьба с линуксом за маршрутизацию.

Suse Firewall 2 и с чем его едят, или настройка SuseFirewall 2.

Suse Firewall является надстройкой над IPtable и служит для более простой настройки этой самой IPtable.

Скрипт конфигурации лежит тут: /etc/sysconfig/SuSEfirewall2

Основные интересующие нас строки конфига:

#Обозначаем интерфейсы для внешней зоны т.е. смотрящие в инет
FW_DEV_EXT= "dsl0 eth1"
#Тоже самое для внутренней зоны
FW_DEV_INT= "eth0"
#Для демилитаризованной зоны
FW_DEV_DMZ= ""
# Route и Masquerade включаем обязательно, без этого ничего работать небудет
FW_ROUTE="yes"
FW_MASQUERADE="yes"
# Examples: "ippp0", "zone:ext"
FW_MASQ_DEV="zone:ext"
# Следующая строка позволяет настроить маскарадинг внутренних сетей

Masquerade (Маскарад) — замена адреса на адрес машины, выполняющей маскарад.

NAT (Трансляция адресов) — замена адреса на любой указанный.

Что означает что маскарад есть более простая форма NAT

# Формат записи следующий
# <Сеть источник>;[,<сеть назначения>,<протокол>[,порт[:порт]]]
#Примеры:
# - "0/0" Не ограниченный доступ в интернет для всех.
# - "10.0.0.0/8" Не ограниченный доступ в инет сети 10.0.0.0.
# - "10.0.1.0/24,0/0,tcp,80 10.0.1.0/24,0/0,tcp,21" Для сети 10.0.1.0 разрешены два порта TCP 80 и 21 для FTP и HTTP.
# - "10.0.1.0/24,0/0,tcp,1024:65535 10.0.2.0/24" Сети 10.0.1.0 разрешен доступ к не привелигированным, а сети 10.0.2.0 разрешен не ограниченный доступ.

Я открыл доступ в инет из локалки по следующим портам 80(http), 21(ftp), 443(https) и 1024:65535. Порт 25(SMTP) не открывал специально, в сети есть почтовый сервер пусть им и пользуются или кому приспичило веб интерфейсом. К тому же запрет 25 порта дает гарантию, что даже если компьютеры сети будут заражены каким нибудь почтовым спам ботом, спам не попрет из вашей сети наружу и ваш IP не внесут во всевозможные блек листы.

Собственно правила:
FW_MASQ_NETS="192.168.0/24,0/0,tcp,80
192.168.66.0/24,0/0,tcp,443
192.168.66.0/24,0/0,tcp,21
192.168.66.0/24,0/0,tcp,1024:65535
192.168.66.0/24,0/0,udp,1024:65535"

Все компьютеры сети имеют доступ в инет, пользователи весело ходят по страничкам, качают и даже играют.

Далее идут опции отвечающие за доступ к серверу и сети из вне.

#закрыть все порты кроме разрешенных от внутренней зоны. Для внешней зоны порты закрыты всегда, кроме разрешенных в правилах
FW_PROTECT_FROM_INT="no"
#Порты на сервере доступ к которым будет открыт для внешней зоны TCP и UDP.
FW_SERVICES_EXT_TCP="110 25"
FW_SERVICES_EXT_UDP=""
#Тоже самое для внутренней зоны. Работает если FW_PROTECT_FROM_INT="yes"
FW_SERVICES_INT_TCP=""
FW_SERVICES_INT_UDP=""
#Дубль пердидущих правил только порты описываются в отдельных файлах в папке /etc/sysconfig/SuSEfirewall2.d/services
FW_CONFIGURATIONS_EXT="apache2 bind dovecot sshd"
FW_CONFIGURATIONS_INT=""

Следующая запись отвечает за форвардинг портов т.е. разрешает доступ из вне к портам компьютеров локальной сети

#формат
# ,,,[,redirect port,[destination ip]]
#примеры:
# - "0/0,192.168.1.100,tcp,5800" перенаправляет любой входящий с порта 5800(tcp) сервера на порт 5800(tcp) компьютера с IP 192.168.1.100
#Чтоб торренты у пользователей работали нормально, необходимо выделить им по порту и настроить у них торрент клиент соответственно.
# - "0/0,192.168.1.90,tcp,8080,80" перенаправляет входящее соединение с порта 8080(tcp) сервера на порт 80(tcp) компьютера с IP 192.168.1.90
FW_FORWARD_MASQ="0/0,192.168.66.101,tcp,5900
0/0,192.168.1.134,tcp,43641
0/0,192.168.1.128,tcp,40678
0/0,192.168.1.90,tcp,8080,80"

На этом базовую настройку можно считать законченной. Пользователи сети имеют выход в инет.

Порты сервера закрыты кроме разрешенных в записях «FW_SERVICES_EXT_TCP» и «FW_CONFIGURATIONS_EXT».  Извне доступны порты необходимы для работы торрентов у пользователей сети.

И немного выходящих за рамки базовой настройки но тем не менее полезных опций:
#перенаправляет все исходящие из локалки соединения с порта 80 на порт 3128 сервера. Это необходимо если вы захотите поднять прозрачный кеширующий и проверяющий трафик на вирусы прокси сервер
FW_REDIRECT="192.168.1.0/24,0/0,tcp,80,3128"
#Следующая запись разрешает максимум три попытки SSH соединения в минуту с одного IP. Помогает бороться с любителями подбирать пароли к SSH.
# Format: space separated list of net,protocol[,dport[,sport[,flags]]]
# Example: "0/0,tcp,22"
#
# Supported flags are
# hitcount=NUMBER : ipt_recent --hitcount parameter
# blockseconds=NUMBER : ipt_recent --seconds parameter
# recentname=NAME : ipt_recent --name parameter
# Example:
# Allow max three ssh connects per minute from the same IP address:
# "0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"
FW_SERVICES_ACCEPT_EXT="0/0,tcp,22,,hitcount=3,blockseconds=60,recentname=ssh"

И напоследок табличка с номерами основных портов

Service TCP Ports UDP Ports Comments
CUPS (aka IPP) 631 631 Internet Printing Protocol
http 80 Apache web server
https 443 443 Apache-ssl secure web server
Samba server 139 445 139=netbios-ssn 445=microsft-ds
netbios server 137 138 137=netbios-ns 138=netbios-dgm
Samba client 137 related nf_conntrack_netbios_ns
ssh 22 Secure shell (remote login)
rdp (xrdp) 3389 Windows terminal services
vnc server 5900-5999 Xinetd xvnc & TightVNC
vnc mini http server 5800-5899 Xinetd xvnc & TightVNC
vnc (xorg-x11-vnc) 5901 Yast Remote Administration (VNC)
mysql 3306