 |
Вітаю Вас, Гість · RSS |
 |
Linux в качестве маршрутизатора между лок сетью и интернетом
| |
Andrey123q |
Дата: Ср, 28.07.2010, 14:47 | Повідомлення № 1 |
Досвідчений учасник
Повідомлень: 1236
| Один из вариантов раздачи интернета в локальную сеть: настройка Linux в качестве сервера NAT. NAT (Network Address Translation) - это система трансляции сетевых адресов. NAT фактически перехватывает пакеты из локальной сети и заменяет в них адрес отправителя реальным внешним IP-адресом. При получении пакетов из интернета адреса преобразуются во внутреннюю адресацию и передаются в локальную сеть. Система хранит таблицу преобразований между внутренними и внешними адресами. NAT работает на транспортном (4) уровне модели OSI, в отличие от прокси, который работает на прикладном (7) уровне. Для настройки NAT используем сетевой экран iptables (см. http://informatic.org.ua/forum/73-746-1 ). Настройка. Пусть eth0 - это интерфейс интернета, eth1 - интерфейс локальной сети. Сначала нужно разрешить маршрутизацию в ядре Linux командой: echo 1 > /proc/sys/net/ipv4/ip_forward (в файл ip_forward записывается параметр 1 вместо 0) Затем нужно: 1) разрешить пересылку пакетов с интерфейса на интерфейс. Я добавил следующие строки: iptables -t filter -I FORWARD -o eth1 -i eth0 -j ACCEPT iptables -t filter -I FORWARD -o eth0 -i eth1 -j ACCEPT (-о ethN можно опустить) 2) разрешить пересылку пакетов с трансляцией адресов: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE Вместо действия MASQUERADE можно использовать SNAT. SNAT работает аналогично MASQUERADE, однако позволяет указать адрес «внешнего» интерфейса (опция --to-source), например, если на внешнем интерфейсе шлюза «висит» несколько статических адресов, например, 208.77.188.166, 208.77.188.167 и 208.77.188.168, можно использовать балансировку между этими адресами: iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 208.77.188.166-208.77.188.168 3) сохранить правила (иначе при перезагрузке ПК или файервола выполненные настройки удалятся): iptables-save На хостах локальной сети нужно указать IP шлюза (внутреннего интерфейса eth1 маршрутизатора) - можно прописать командой route или в свойствах интерфейса. Если в локальной сети есть win машины дополнительно нужно настроить samba. Все, Linux готов для работы в качестве маршрутизатора. Для маршрутизаторов можно использовать специальные дистрибутивы на основе Linux: SmoothWall (бесплатное), MikroTik (платное) и т.п. Их удобно устанавливать на устаревших ПК, с широкими возможностями дистанционного управления. Возможно что-то упустил или допустил неточность - пишите. Ссылки. http://ru.wikipedia.org/wiki/Iptables http://ru.wikipedia.org/wiki/NAT
Відредаговано: Andrey123q - Чт, 29.07.2010, 02:03 |
|
| |
novachok |
Дата: Ср, 28.09.2011, 19:58 | Повідомлення № 2 |
Прописаний назавжди
Повідомлень: 247
| Если у меня ppp0 - это интерфейс интернета, а eth0 - интерфейс локальной сети. Тогда мне надо: echo 1 > /proc/sys/net/ipv4/ip_forward
1) разрешить пересылку пакетов с интерфейса на интерфейс. iptables -t filter -I FORWARD -o eth0 -i ppp0 -j ACCEPT iptables -t filter -I FORWARD -o ppp0 -i eth0 -j ACCEPT
2) разрешить пересылку пакетов с трансляцией адресов: iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
3) сохранить правила iptables-save
Я правильно думаю?
|
|
| |
Andrey123q |
Дата: Чт, 29.09.2011, 09:15 | Повідомлення № 3 |
Досвідчений учасник
Повідомлень: 1236
| Да. Только вместо Code echo 1 > /proc/sys/net/ipv4/ip_forward лучше сделать Code sudo su -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
т.к. первый вариант действует только до перезагрузки, а второй и после. И правила iptables нужно так же восстанавливать при перезагрузке - в разных дистрибутивах это реализовано по разному, в SUSE можно прописать чтобы правила сохранялись, а в Ubuntu/Debian их нужно либо автозагрузочным скрипом поднимать, например, в rc.local прописать Code iptables-restore < /etc/iptables.rules либо прописать в /etc/network/interfaces для нужного интерфейса, см. пример: Code auto eth0 iface eth0 inet dhcp pre-up iptables-restore < /etc/iptables.rules post-down iptables-save -c > /etc/iptables.rules
|
|
| |
GarryPotter |
Дата: Чт, 29.09.2011, 20:34 | Повідомлення № 4 |
Прописаний назавжди
Повідомлень: 357
| Quote (novachok) Я правильно думаю?
Необходимо установить iptables и dnsmasq-base (если не установлено)
Получить подключение к интернету - например через USB-модем
ppp0 - интерфейс на котором "поднят" интернет eth0 - интерфейс локальной сети
Настройки eth0 на компьютере-шлюзе IP: 192.168.0.1 (обязательно) Netmask: 255.255.255.0
На прочих компьютерах: IP: 192.168.0.2 - 192.168.0. (сколько есть) Netmask/Маска: 255.255.255.0 Gateway/Шлюз: 192.168.0.1 (обязательно) DNS: 192.168.0.1 (обязательно)
Разрешить направление пакетов. У файле /etc/sysctl.conf раскомментируйте (или вставьте) строчку (c правами администратора!) net.ipv4.ip_forward=1
То же сделаем для текущего сеанса, выполните в консоли:
sudo sysctl -w net.ipv4.ip_forward="1"
(чтоб применить это правило без перезагрузки)
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Запустить dnsmasq (без него у меня ничего не работало)
|
|
| |
Andrey123q |
Дата: Сб, 01.10.2011, 04:34 | Повідомлення № 5 |
Досвідчений учасник
Повідомлень: 1236
| GarryPotter, практически, то что написал я. Единственное правила iptables нужно сохранять, иначе после рестарта сбросятся.
Quote (GarryPotter) Запустить dnsmasq (без него у меня ничего не работало) возможно вы не прописали днс сервера в /etc/resolv.conf скорее так и есть, т.к. dnsmasq это в т.ч. ДНС сервер, он вам инет-адреса и резолвит. Попроуйте его остановить и пропинговать какой-нибудь хост сначала по доменному имени, а потом по его IP-адресу (IP-шник определите до остановки dnsmasq).
Додано (01.10.2011, 04:34) --------------------------------------------- Хотя в принципе да, кэширующий днс для мини-локалки за nat'ом как раз то что нужно. А не работало, потому что вы днс на клиентах указывали шлюз, а шлюз фактически таковым не являлся. Потому на клиентах нужно было указать днс прова или любой публичный, но свой кэширующий днс конечно лучше.
Вообще, эти правила iptables слишком минимальны и абсолютно не безопасны, как минимум нужно пускать только по нужным портам, а все остальные по умолчанию резать.
Відредаговано: Andrey123q - Сб, 01.10.2011, 04:42 |
|
| |
novachok |
Дата: Нд, 02.10.2011, 16:53 | Повідомлення № 6 |
Прописаний назавжди
Повідомлень: 247
| Как буд-то все понятно. А нет ли простенькой програмки, которая запрашивала бы интерфейс откуда брать интернет (ppp0 или eth1 - к примеру) и интерфейс куда следует "раздавать" (eth0 - к примеру), а все прочие "телодвижения" делались бы незаметно для пользователя (как у Виндовс)
|
|
| |
Andrey123q |
Дата: Пн, 03.10.2011, 15:06 | Повідомлення № 7 |
Досвідчений учасник
Повідомлень: 1236
| как вариант можно через webmin.
Quote (novachok) все прочие "телодвижения" делались бы незаметно для пользователя (как у Виндовс) ну вы ж не пользователь, а админ шучу
|
|
| |
Anna_teacher |
Дата: Вт, 03.06.2014, 22:56 | Повідомлення № 8 |
Новий користувач
Повідомлень: 3
| Доброго дня! Я працюю в організації я ка переїхала в нову будівлю. і мені потрібно розрахувати локальну мережу на три поверхи. на приблизно 35 компютерів. 20 з я ких компютерний клас. а інші ПК - адміністрації. з обладнанням начеб-то розібралась. скоро підведуть інтернет. хочу адмініструвати це все з допомогою Linux. чи складно це зробити? і як це все організувати. мені підказали що можна використати Ubunty)направте будь-ласка мене в правильному напрямку. Додано (03.06.2014, 22:56) --------------------------------------------- ось так і поговорила) вже зробила мережу. інтернет працює. якщо кому потрібна допомога звертайтесь)
|
|
| |
© Форум інформатиків України, 2007-2023.  |