>я внес ошибку в скрипт. Меряю вот так http://www.speedtest.net/result/569938750.png
>(подключен только один хост, т.е. отдает ~80% свободного канала и половину). На
>счет тормозов сказать не могу, нагрузка сейчас к удивлению очень мала. Попробуйте начать с начала и менять по шагам, с проверкой. По себе знаю - сделаешь два изменения (сразу), потом трудно найти концы.
>Отвечу на свой вопрос (tnx bioname), внешний адрес выдается динамический:
>sudo iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
>sudo iptables -A FORWARD -i eth1 -o ppp0 -j ACCEPT
Ладно, вот Вам кусочек нашей следующей статьи:
FirewallStart(){
# Включаем перенаправление пакетов через ядро.
echo 1 > /proc/sys/net/ipv4/ip_forward
# Политики по умолчанию.
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
#Пробрасываем обращения к DNS провайдеру
# С вероятностью 50% на первый DNS
# Или на второй DNS, если первому не повезло
$IPT -A PREROUTING -t nat -i $DEV_IN -p udp -m udp --dport 53 -m statistic --mode random --probability 0.50 -j DNAT --to-destin
$IPT -A PREROUTING -t nat -i $DEV_IN -p udp -m udp --dport 53 -j DNAT --to-destination $DNS2:53
# Разрешаем вход и выход всем пакетам, связанным с локальным интерфейсом lo
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
############################################################################
# НАСТРОЙКА СОЕДИНЕНИЙ С СЕРВЕРОМ
############################################################################
# Защита от атак с неправильными пакетами
$IPT -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
$IPT -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
# Разрешаем пакеты, относящиеся ко всем установленным соединениям
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем вход и выход всем пакетам, относящимся к протоколу ICMP
#$IPT -A INPUT -p icmp -j ACCEPT
#$IPT -A OUTPUT -p icmp -j ACCEPT
# !!!!!!!!!! ТОЛЬКО ЕСЛИ ВНУТРЕНЯЯ СЕТЬ ДОВЕРЕННАЯ !!!!!!!!!!!!!
# Разрешаем пакеты, идущие из локальной сети на этот компьютер и
# с этого компа в локальную сеть
$IPT -A INPUT -i $DEV_IN -s $LOCAL_NET -j ACCEPT
# Разрешаем соединения в соответствии с IN_ACCESS_LST и OUT_ACCESS_LST
# ................. тут логика разрешения
############################################################################
# НАСТРОЙКА ТРАНЗИТНЫХ СОЕДИНЕНИЙ
############################################################################
# Автоматически уменьшать размер передаваемого пакета. Важно для ADSL.
$IPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Разрешаем пакеты, относящиеся ко всем установленным соединениям
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Т.е. все что запрошено из интернета пользователем, разрешено к возвращению
# Разрешаем транзитный icmp
$IPT -A FORWARD -p icmp -j ACCEPT
# Т.е. пинги
# Создаем цепочки для сортировки транзитного трафика и направляем его в них
$IPT -N allowip
$IPT -N allowport
$IPT -A FORWARD -s $LOCAL_NET -j allowip
# Разрешаем доступ для клиентов указанных в LOCAL_IPS
# если данная переменная пустая то разрешены все адреса из локальной сети
# .............. тут логика допуска
# Но Вам, для простоты:
$IPT -A allowip -s $LOCAL_NET -j allowport
# Накладываем ограничения на транзитные соединения – не более CONN_LIM от одного IP
$IPT -A allowport -p tcp -m connlimit --syn --connlimit-above $CONN_LIM -j DROP
# Разрешаем транзитные соединения по разрешенным портам
# ............... тут логика разрешения доступа с локальных машин к внешним портам
# Но для Вас можно просто, доступ ко всему:
$IPT -A allowport -j ACCEPT
# Тут логика для проброса запросов из инета на внутренние машины:
# Например, для проброса торрента, вставить свои цифры и повторить сколько надо:
$IPT -A FORWARD -i $DEV_OUT -d $ip -p tcp -m tcp --dport $port1 -j ACCEPT
$IPT -A FORWARD -i $DEV_OUT -d $ip -p udp -m udp --dport $port1 -j ACCEPT
# где $ip - ip клиентской машины , $port1 - пробрасываемый порт (вставьте свои строчки
# Маркируем syn пакеты
$IPT -A PREROUTING -t mangle -p tcp --syn -j MARK --set-mark 1
# Назначаем одинаковое время жизни для пакетов
$IPT -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
# NAT через динамический IP адрес.
$IPT -t nat -A POSTROUTING -o $DEV_OUT -j MASQUERADE
В принципе - этого достаточно.