Linux-шлюз с разделением трафика на 2 ADSL модема

Linux, безопасность, сети и все что с этим связано
dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Linux-шлюз с разделением трафика на 2 ADSL модема

Сообщение dr.Wermut »

Linux-шлюз с разделением трафика на 2 ADSL модема

ЗАДАЧИ:
- Обеспечить пользователей ЛВС интернетом
- Отделить мух от котлет. Снизить нагрузку на основной модем и распределить трафик. Т.е. игровой трафик пустить на второй модем (192.168.110.200), а интернет оставить на первом модеме (192.168.110.100). В дальнейшем в схеме будет 3-6 модемов.
- Ограничить доступ халявщикам. Т.е. модемы доступны только MAC-адресу самого сервера и только с ним ведётся обмен трафиком, для остальных модемы закрыты и не видны.

УСЛОВИЯ:
- Сервер расширяемый, т.е. в планах установить ещё несколько сетевых карт, следовательно это должно быть учтено.
- Сервер выполняет ещё и функции FTP, SMB, IRC, MAIL, ICQ сервера (всё это уже функционирует).
- Сервер находится на относительном отдалении от модемов и они не могут быть непосредственно подключены к нему.
- 98% пользователей используют M$Windows и настраивать дополнительно клиентские программы не будут.
- Использование PROXY-сервера отпадает полностью, т.к. игры не знают про существование прокси и знать не будут (linage, WoW, CS, QUAKE).

ОПИСАНИЕ:
В наличии сервер на базе Linux Debian имеющий IP 192.168.110.250 и только одну сетевую карту (eth0). Также имеются 2 ADSL модема, доступ к ним разрешён только для сервера и они находятся, условно, на разных концах сети. Win-клиенты сети (т.е. пользовательские машины) используют сервер как шлюз. К интернет пользователи подключаются по средствам VPN, а к игровым ресурсам без него.

ПЕРЕМЕННЫЕ:

1. SERVER
- linux: Debian 4.0 стандартное ядро 2.6.18-4 AMD64
- FTP, SMB, IRC, MAIL, ICQ
- IP: 192.168.110.250 (eth0)
- Таблица маршрутов route (не полная но наглядная):

Код: Выделить всё

Kernel IP routing table
Destination    Gateway         Genmask               Flags Metric Ref    Use Iface
81.25.32.68    192.168.110.100 255.255.255.255 UGH   0      0        0 eth0
81.25.32.34    192.168.110.100 255.255.255.255 UGH   0      0        0 eth0
81.25.32.67    192.168.110.200 255.255.255.255 UGH   0      0        0 eth0
81.25.32.9     192.168.110.200 255.255.255.255 UGH   0      0        0 eth0
localnet       *               255.255.0.0     U     0      0        0 eth0
2. MODEM1
- Zyxel 650
- ADSL канал 5 Mbit
- Провайдер: ADSL.BY
- IP: 192.168.110.100
- Включен доступ только для SERVER

3. MODEM2
- Zyxel 660R
- ADSL канал 2 Mbit
- Провайдер: ADSL.BY
- IP: 192.168.110.200
- Включен доступ только для SERVER


4. CLIENT
- Windows XP
- IP: 192.168.10.2
- MASK: 255.255.0.0
- Шлюз: 192.168.110.250


ВОПРОСЫ:
- Как пропустить трафик через сервер?
- На сколько понимаю за это отвечает NAT, так или ещё есть альтернативы? Сохранять IP-клиента или нет – это не важно, главное MAC подменять на лету.
- Как реализовать эту схему, т.е. по какой технологии и где об этом почитать?
- Кто нибудь сталкивался с такой проблемой раньше, если да, то напишите пожалуйста схему действий.
- Что почитать на данную тему? Дайте, пожалуйста, ссылки на русскоязычные источники в интернет или на книги.
- Как сделать так, что бы к диапазону 81.25.0.0 имели доступ только определённые IP из сети (192.168.0.0), но при этом на сервере сохранялась возможность доступа на его ресурсы для тех кто не состоит в списках? При этом, для пользователей, этот процесс был не заметен и выполнялся сервером.

ЗЫ
Решить данную проблему необходимо как можно быстрее. Пожалуйста пишите по существу.

Заранее большое спасибо

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Re: Linux-шлюз с разделением трафика на 2 ADSL модема

Сообщение Llama »

dr.Wermut писал(а): - Как пропустить трафик через сервер?
Прописать адрес сервера в качестве маршрутизатора - не шлюза по умолчанию, а именно в виде шлюза для ряда маршрутов, ибо при использовании VPN шлюз по умолчанию естестенно изменяется.
dr.Wermut писал(а): - На сколько понимаю за это отвечает NAT, так или ещё есть альтернативы? Сохранять IP-клиента или нет – это не важно, главное MAC подменять на лету.
Лучше это делать все-таки на сетевом уровне. Т.е. IP NAT.
dr.Wermut писал(а): - Как реализовать эту схему, т.е. по какой технологии и где об этом почитать?
Маршрутизировать все через сервер с NAT.
Читать iptables tutorial и LARTC. И то и другое переведено и элементарно находится в поисковиках.
dr.Wermut писал(а): - Кто нибудь сталкивался с такой проблемой раньше, если да, то напишите пожалуйста схему действий.
Читать документацию, при условии что есть общее понятие о том как работает статическая маршрутизация. Если такого понятия нет - читать что-нибудь не тему маршрутизации.
dr.Wermut писал(а): - Как сделать так, что бы к диапазону 81.25.0.0 имели доступ только определённые IP из сети (192.168.0.0), но при этом на сервере сохранялась возможность доступа на его ресурсы для тех кто не состоит в списках? При этом, для пользователей, этот процесс был не заметен и выполнялся сервером.
Отфильтровать траффик средствами iptables.

http://www.linux.by/wiki/index.php/Debi ... 0.B2.D1.8B
Опыт растет прямо пропорционально выведенному из строя оборудованию

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Написал следующий скрипт и поместил в автозагрузку ( /etc/network/if-up.d ). Работает вроде нормально...

Код: Выделить всё

#!/bin/sh
# Прописываем маршруты на модем 192.168.110.100
ip route add 81.25.32.68/32 via 192.168.110.100
ip route add 81.25.32.34/32 via 192.168.110.100
ip route add 81.25.32.6/32 via 192.168.110.100
ip route add 81.25.32.87/32 via 192.168.110.100
ip route add 81.25.32.25/32 via 192.168.110.100
ip route add 68.178.211.79/32 via 192.168.110.100
			    
# На модем 192.168.110.200
ip route add 81.25.32.67/32 via 192.168.110.200
ip route add 81.25.32.9/32 via 192.168.110.200
ip route add 81.25.32.97/32 via 192.168.110.200
ip route add 81.25.32.96/32 via 192.168.110.200
ip route add 81.25.32.82/32 via 192.168.110.200
ip route add 81.25.32.7/32 via 192.168.110.200
ip route add 81.25.32.87/32 via 192.168.110.200
ip route add 81.25.32.21/32 via 192.168.110.200
ip route add 81.25.32.5/32 via 192.168.110.200
ip route add 81.25.32.14/32 via 192.168.110.200
ip route add 81.25.32.15/32 via 192.168.110.200
ip route add 81.25.32.79/32 via 192.168.110.200
ip route add 81.25.32.44/32 via 192.168.110.200
ip route add 81.25.32.13/32 via 192.168.110.200

# ВКЛЮЧАЕМ МАРШРУТИЗАТОР 192.168.110.250

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t filter -F
iptables -t filter -P FORWARD ACCEPT

# iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE	

# СПИСОК IP ПОЛЬЗОВАТЕЛЕЙ ADSL.BY
iptables -t nat -A POSTROUTING -s 192.168.11.25 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.11.14 -j MASQUERADE	
iptables -t nat -A POSTROUTING -s 192.168.113.154 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.11.38 -j MASQUERADE	
iptables -t nat -A POSTROUTING -s 192.168.11.55 -j MASQUERADE	
iptables -t nat -A POSTROUTING -s 192.168.15.3 -j MASQUERADE
Это временное решение. Сделаю другой вариант отпишусь.

Octopus
Заглянувший
Сообщения: 17
Зарегистрирован: 04 июн 2007, 10:57
Контактная информация:

Сообщение Octopus »

А что мешает халявщику сменить IP и стать "полноценным" пользователем?

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Octopus писал(а):А что мешает халявщику сменить IP и стать "полноценным" пользователем?
Это уже предусмотрено. Есть другой сервак, который банит win-машины с неправильным mac =)

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

dr.Wermut, напоминаю что MAC меняется в худшем венде либо в bios, т.е. не может являтся надежным идентификатором.
Опыт растет прямо пропорционально выведенному из строя оборудованию

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

В условиях домашней ЛВС этого достаточно, те кто знает как заменить MAC и т.п. являются либо админами либо их помощниками. Паранойя здесь лишнее, но лог не помешал бы...

Для пущей безопасности хотелось бы вести LOG тех, кто пользуется Инетом. А именно нужны такие сведения:
- Дата и время входа в сеть
- Дата и время выхода из сети
- IP + MAC
- Принятые/отправленные мегабайты

Можно ли это сделать и как, средствами какой утилиты или скрипта?

Код: Выделить всё

2007.10.24 10:00 2007.10.24 11:03 192.168.11.53 1303A93F39CB 30,4 5,1
О! Ещё один вопрос возник! ОЧЕНЬ ВАЖНЫЙ!
Если я подниму на этом серваке VPN, то весь трафик сожрут пользователи подключённые к нему... Это так или я зря паникую?

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

dr.Wermut, давайте кокретизировать терминологию...
- Дата и время входа в сеть
- Дата и время выхода из сети
Что такое "вход в сеть" ?
IP + MAC
arpwatch вам в руки. 100% точность не гарантируется конечно же, но будет близко к тому.
- Принятые/отправленные мегабайты
Принятые/отправленые мегабайты можно посчитать только на хосте который их прнимает/отправляет. На маршрутизаторе можно почитать только транзитный траффик.
Если я подниму на этом серваке VPN, то весь трафик сожрут пользователи подключённые к нему... Это так или я зря паникую?
Как вы настроите маршрутизацию, так и будет.
Опыт растет прямо пропорционально выведенному из строя оборудованию

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Возникла проблема!
Почему-то поднять ppp может одновременно только одна машина на модем. Вероятно нужно транслировать IP клиентских машин модемам как есть, а MAC менять на MAC сетевой карты сервера. Как это сделать?
Или я допустил ошибку и сделал всё не так?

Код: Выделить всё

# ВКЛЮЧАЕМ МАРШРУТИЗАТОР 192.168.110.250 

echo 1 > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -F 
iptables -t filter -F 
iptables -t filter -P FORWARD ACCEPT 

# iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE    

# СПИСОК IP ПОЛЬЗОВАТЕЛЕЙ ADSL.BY 
iptables -t nat -A POSTROUTING -s 192.168.11.25 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.11.14 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.113.154 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.11.38 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.11.55 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.15.3 -j MASQUERADE

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

Загрузите модули ядра ip_conntrack_pptp и ip_nat_pptp если речь о pptp кончно же...
Опыт растет прямо пропорционально выведенному из строя оборудованию

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Огоромное СПАСИБО! Работает как надо.

Для тех, кому нужно сделать подобное, просто создайте скрипт с любым именем в /etc/network/if-up.d/
Содержание следующее:

Код: Выделить всё

#!/bin/sh 
# Прописываем маршруты на модем 192.168.110.100 
ip route add 81.25.32.68/32 via 192.168.110.100 
ip route add 81.25.32.34/32 via 192.168.110.100 
ip route add 81.25.32.6/32 via 192.168.110.100 
ip route add 81.25.32.87/32 via 192.168.110.100 
ip route add 81.25.32.25/32 via 192.168.110.100 
ip route add 68.178.211.79/32 via 192.168.110.100 
             
# На модем 192.168.110.200 
ip route add 81.25.32.67/32 via 192.168.110.200 
ip route add 81.25.32.9/32 via 192.168.110.200 
ip route add 81.25.32.97/32 via 192.168.110.200 
ip route add 81.25.32.96/32 via 192.168.110.200 
ip route add 81.25.32.82/32 via 192.168.110.200 
ip route add 81.25.32.7/32 via 192.168.110.200 
ip route add 81.25.32.87/32 via 192.168.110.200 
ip route add 81.25.32.21/32 via 192.168.110.200 
ip route add 81.25.32.5/32 via 192.168.110.200 
ip route add 81.25.32.14/32 via 192.168.110.200 
ip route add 81.25.32.15/32 via 192.168.110.200 
ip route add 81.25.32.79/32 via 192.168.110.200 
ip route add 81.25.32.44/32 via 192.168.110.200 
ip route add 81.25.32.13/32 via 192.168.110.200 

# ВКЛЮЧАЕМ МАРШРУТИЗАТОР 192.168.110.250 

echo 1 > /proc/sys/net/ipv4/ip_forward 
iptables -t nat -F 
iptables -t filter -F 
iptables -t filter -P FORWARD ACCEPT 

# Для полноценной работы VPN
modprobe ip_conntrack
modprobe ip_nat_pptp

# Если будут баги с FTP, IRC и т.п.
# modprobe ip_conntrack_ftp
# modprobe ip_nat_ftp
# modprobe ip_nat_irc 

# Если есть надобность открыть доступ к NAT по маске 255.255.0.0
# iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -j MASQUERADE    

# СПИСОК IP ПОЛЬЗОВАТЕЛЕЙ ADSL.BY остальные в Инет не попадут =)
iptables -t nat -A POSTROUTING -s 192.168.11.25 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.11.14 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.113.154 -j MASQUERADE 
iptables -t nat -A POSTROUTING -s 192.168.11.38 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.11.55 -j MASQUERADE    
iptables -t nat -A POSTROUTING -s 192.168.15.3 -j MASQUERADE
Не забудьте его подправить под свою сеть =)

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Статистика NAT:
iptables -t nat -L -v

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

dr.Wermut, счетчики iptables - не самое лечшее средство сбора статистики. Они переполняются на 32bis системах довольно быстро...
Опыт растет прямо пропорционально выведенному из строя оборудованию

dr.Wermut
Заглянувший
Сообщения: 29
Зарегистрирован: 05 май 2005, 23:18

Сообщение dr.Wermut »

Вполне достаточно для домашней ЛС. Вопрос только в том, что есть ли лучший способ и как его реализовать...

Аватара пользователя
Llama
Неотъемлемая часть форума
Сообщения: 9749
Зарегистрирован: 06 фев 2002, 11:40
Откуда: Менск

Сообщение Llama »

netflow например...
Опыт растет прямо пропорционально выведенному из строя оборудованию

Ответить