Четверг, 25.04.2024, 18:15
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

Настройка шлюза в локальной сети, лимитирование скорости (shaper), фаервол (iptables).">Настройка шлюза в локальной сети, лимитирование скор


Настройка шлюза в локальной сети, лимитирование скорости (shaper), фаервол (iptables).




1. Введение

Многие часто задаются вопросом как быстро настроить раздачу инетернета
на несколько копьютеров в локальной сети, пробросить порты внутрь сети,
а так же обеспечить безопасность шлюза. Так же иногда необходимо
сделать лимит скорости доступа для некоторых компьтеров, не у всех же
резиновый канал в интернет, а компьютеров может быть много, да и если
скорость не делить между ними могут возникать проблемы с качеством
поставляемых услуг, таких как если один абонент запустит торрент
клиент, откроет сотню соединений, остальные абоненты в этот момент
ощутят резкое падение скорости, и явно не будут рады. В этой статье
рассказано какие программы помогут вам решить эти проблемы, настроить
фиксированный доступ в интернет для компьютеров вашей локальной сети и
решить проблемы со скоростью доступа раз и навсегда.


Для настройки всех необходимых сервисов я использовал одну программу
стороннего разработчика (Master Shaper), все остальные необходимые
программы присутствуют в штатных репозитариях Ubuntu Linux.









2. Настройка iptables (firewall & nat)


Начнем пожалуй с настройки NAT и фаервола, так же включим форвардинг
и исправим некоторые параметры SYSCTL, для выделения нужного количества
ресурсов, если у вас к примеру более 5000 компьютеров в локальной сети.


Реализовать все это можно с помощью одного скрипта, который приведен ниже, все парамтры с комментариями.


Код:



#!/bin/bash


OUT="eth0" # Имя исходящего интерфейса, смотрящего в интернет.

OUTADDR="1.1.1.1" # Адрес исходящего интерфейса

IN="eth1" # Имя входящего интерфейса, смотрящего в локальную сеть

INADDR="2.2.2.2" # Адрес входящего интерфейса

NETWORK="10.0.0.0/8" # Адресация вашей локальной сети

ANYWHERE="0.0.0.0/0" # Назначение, любое.

PORTS="1024:65535" # Порты, которые считаются локальными

MULTICAST="224.0.0.0/4" # Мультикаст пакеты, если у вас не используется оставьте как есть,

# если используется IP TV тогда надо удалить этот пункт


ADMINS="2.2.2.3 2.2.2.4" # IP адреса администраторов, имеют полный доступ на сервер, без каких либо ограничений.


##############################################################################################

# Здесь прописаны параметры запуска\остановки\статуса скрипта. лучше не трогайте =)

# Остановка скрипта

case "$1" in

stop)

echo "Shutting down firewall..."


iptables --flush

iptables --delete-chain

iptables --table nat --flush

iptables --table filter --flush

iptables --table nat --delete-chain

iptables --table filter --delete-chain


iptables -t filter -P INPUT ACCEPT

iptables -t filter -P OUTPUT ACCEPT

iptables -t filter -P FORWARD ACCEPT


echo "...done"

;;

status)

echo $"Table: filter"

iptables --list

echo $"Table: nat"

iptables -t nat --list

;;

restart|reload)

$0 stop

$0 start

;;


##############################################################################################

# Запуск скрипта

start)

echo "Starting Firewall..."

echo ""


# Очистка таблиц и цепочек

iptables --flush

iptables --delete-chain

iptables --table nat --flush

iptables --table filter --flush

iptables --table nat --delete-chain

iptables --table filter --delete-chain


# Назначение глобальных политик фаервола

iptables -P INPUT DROP

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F INPUT

iptables -F OUTPUT

iptables -F FORWARD


# Загружаем модули, для корректной работы VPN, Active ftp, DCC in IRC которые будут идти через нат.

modprobe ip_nat_ftp

modprobe ip_nat_pptp

modprobe ip_conntrack_ftp

modprobe ip_conntrack_irc


# Изменение параметров SYSCTL

# Включение форвардинга

echo 1 > /proc/sys/net/ipv4/ip_forward

# Включение форвардинга для VPN

echo 1 > /proc/sys/net/ipv4/ip_dynaddr

# Увеличение размера очередей

echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max

# Время ожидания до закрытия соединения

echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established

# Время ожидания до посылки FIN пакета

echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait

# Время ожидания до посылки FIN пакета

echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent

# Для защиты от syn флуда

echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Увеличиваем размер backlog очереди

echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog

# Число начальных SYN и SYNACK пересылок для TCP соединения

echo 4 > /proc/sys/net/ipv4/tcp_synack_retries

echo 4 > /proc/sys/net/ipv4/tcp_syn_retries

#Какие порты использовать в качестве локальных TCP и UDP портов

echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range

Сколько секунд ожидать приема FIN до полного закрытия сокета

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

# Как часто посылать сообщение о поддержании keep alive соединения

echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time

# Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто.

echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes

# Зaпрещаем TCP window scaling

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

# Запрещаем selective acknowledgements, RFC2018

echo 0 > /proc/sys/net/ipv4/tcp_sack

# Запрещаем TCP timestamps, RFC1323

echo 0 > /proc/sys/net/ipv4/tcp_timestamps

# Уличиваем размер буфера для приема и отправки данных через сокеты.

echo 1048576 > /proc/sys/net/core/rmem_max

echo 1048576 > /proc/sys/net/core/rmem_default

echo 1048576 > /proc/sys/net/core/wmem_max

echo 1048576 > /proc/sys/net/core/wmem_default

# Через какое время убивать соединеие закрытое на нашей стороне

echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries


# Temporary eth0 completely disabled

#iptables -A INPUT -i $OUT -j DROP


# Admins - full control (even dagerous)

for admin_ips in $ADMINS; do


iptables -A INPUT -s $admin_ips -m state --state NEW -j ACCEPT

done


##############################################################################################


# Silently Drop Stealth Scans

# All of the bits are cleared

iptables -A INPUT -p icmp --icmp-type timestamp-request -j DROP

iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

# SYN and FIN are both set

iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

# SYN and RST are both set

iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j DROP

# FIN and RST are both set

iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j DROP

# FIN is the only bit set, without the expected accompanying ACK

iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j DROP

# PSH is the only bit set, without the expected accompanying ACK

iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j DROP

# URG is the only bit set, without the expected accompanying ACK

iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j DROP


##############################################################################################


# Multicast - ignore

iptables -A INPUT -s $MULTICAST -j DROP

iptables -A INPUT -d $MULTICAST -j DROP


# any established or related conns are welcome

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


# Loopback

iptables -A INPUT -i lo -j ACCEPT


# Statistics and auths for customers, ping tests

for net_ips in $NETWORK; do


iptables -A INPUT -p icmp -i $IN --icmp-type echo-request -j ACCEPT

iptables -A INPUT -p icmp -i $OUT --icmp-type echo-request -j ACCEPT


done


############ Открываем нужные нам порты.

# FTP

iptables -A INPUT -p tcp --dport 21 -m state --state NEW -j ACCEPT

# PASSIVE FTP

iptables -t filter -A INPUT -p tcp -m tcp --dport 50000:50500 -m state --state NEW -j ACCEPT

iptables -t filter -A INPUT -p udp -m udp --dport 50000:50500 -m state --state NEW -j ACCEPT

# APACHE

iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT


########### OUTPUT


iptables -A OUTPUT -p icmp --icmp-type timestamp-reply -j DROP


########### NAT Вписываем сюда IP своих компьютеров в локальной сети.


iptables -t nat -A POSTROUTING -s 2.2.2.10 -o $OUT -j MASQUERADE

iptables -t nat -A POSTROUTING -s 2.2.2.11 -o $OUT -j MASQUERADE

iptables -t nat -A POSTROUTING -s 2.2.2.12 -o $OUT -j MASQUERADE

iptables -t nat -A POSTROUTING -s 2.2.2.13 -o $OUT -j MASQUERADE

iptables -t nat -A POSTROUTING -s 2.2.2.14 -o $OUT -j MASQUERADE


############ PORT FORWARD Сюда вписываем проброс портов локальную сеть.


iptables -t nat -A PREROUTING -p tcp -d $OUTADDR --dport 8230 -j DNAT --to-destination 2.2.2.10:8230

iptables -t filter -A FORWARD -i $OUT -d 2.2.2.10 -p tcp --dport 8230 -j ACCEPT


echo "...done"


echo "--> IPTABLES firewall loaded/activated <--"


##--------------------------------End Firewall---------------------------------##


;;

*)

echo "Usage: firewall (start|stop|restart|status) EXTIF INTIF"

exit 1

esac


exit 0


После настройки этого скрипта под себя у вас выйдет фаервол с политикой DROP, и NAT.


3. Установка и настройка Shaper.


Скачайте с сайта разработчика дистрибутив программы Master Shaper .

В архиве вы найдете подробное описание продукта, а так инструкции по использованию и установки.

Программа имеет WEB интерфейс для работы и настройки, а так же серверную часть.

Master Shaper позволяет создавать тарифы, возможна настройка приоритезации трафика, очень гибкая и функциональная система.

Настройка и установка займет у вас совсем не много времени.


Popularity: 3%



Источник: http://sudouser.com/nastrojka-shlyuza-v-lokalnoj-seti-limitirovanie-skorosti-shaper-faervol-iptables
Категория: Об ОС *Nix | Добавил: admin (24.06.2010)
Просмотров: 2151 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024