Страница 1 из 1

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

Добавлено: 21 окт 2007, 13:26
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), но при этом на сервере сохранялась возможность доступа на его ресурсы для тех кто не состоит в списках? При этом, для пользователей, этот процесс был не заметен и выполнялся сервером.

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

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

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

Добавлено: 22 окт 2007, 21:52
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

Добавлено: 23 окт 2007, 00:12
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
Это временное решение. Сделаю другой вариант отпишусь.

Добавлено: 23 окт 2007, 20:37
Octopus
А что мешает халявщику сменить IP и стать "полноценным" пользователем?

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

Добавлено: 23 окт 2007, 21:37
Llama
dr.Wermut, напоминаю что MAC меняется в худшем венде либо в bios, т.е. не может являтся надежным идентификатором.

Добавлено: 24 окт 2007, 09:54
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, то весь трафик сожрут пользователи подключённые к нему... Это так или я зря паникую?

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

Добавлено: 01 ноя 2007, 19:15
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

Добавлено: 02 ноя 2007, 18:10
Llama
Загрузите модули ядра ip_conntrack_pptp и ip_nat_pptp если речь о pptp кончно же...

Добавлено: 04 ноя 2007, 14:34
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
Не забудьте его подправить под свою сеть =)

Добавлено: 13 ноя 2007, 19:35
dr.Wermut
Статистика NAT:
iptables -t nat -L -v

Добавлено: 13 ноя 2007, 21:24
Llama
dr.Wermut, счетчики iptables - не самое лечшее средство сбора статистики. Они переполняются на 32bis системах довольно быстро...

Добавлено: 16 ноя 2007, 20:58
dr.Wermut
Вполне достаточно для домашней ЛС. Вопрос только в том, что есть ли лучший способ и как его реализовать...

Добавлено: 17 ноя 2007, 17:50
Llama
netflow например...