Создание сервера для раздачи инета в локалку на базе Opensuse 10.3
Материальная база:
- Имеем две машины на базе OpenSuSe Linux 10.3.
- В каждой машине имеем по сетевому интерфейсу (в моём случае он ещё и беспроводной, но это картины не меняет) eth0.
Сетевая конфигурация машин:
- Первый компьютер, далее именуемый как "сервер" подключен к провайдеру ДомРу (замените на имя Вашего провайдера) через PPPoE (IP адрес вида 10.x.x.x выдаётся динамически, но каждый раз один и тот же, адреса DNS серверов также получаются при подключении) и в моём случае имеет внутренний IP 192.168.155.2 (в Вашем случае пропишите ему адрес 192.168.0.1, так будет привычнее) .
- Второй компьютер, далее именуемый как "клиент" соединён сетью с первым через свитч (с серверной стороны и ДомРу и локалка подключены через один интерфейс) и имеет внутренний IP 192.168.155.1 (Вы же выберите лучше 192.168.0.2)
Требуется:
- Обеспечить прозрачный доступ в интернет через NAT для клиентской машины
- Обеспечить поддержку внутреннего ДНС сервера в качестве ретранслятора (далее поймёте зачем это)
Некоторые данные, которые нам пригодятся:
- IP адрес яндекса 213.180.204.8
- IP адрес гугла 64.233.187.99
- Утилита "ping", предназначенная для проверки сетевого соединения между узлами
- DNS сервер bind для удобной работы с DNS
- Прозрачный прокси на squid (факультативно), позволяющий кешировать весь хттп трафик для его экономии и увеличения скорости доступа к ресурсам.
- Suse Firewall 2, обертка для Iptables, предназначенная для удобного конфигурирования фаервола.
- Немного бутербродов и чая \ кофе, т.к. процесс не очень-то и быстрый
Для начала предположим, что у нас уже есть настроенное и исправно функционирующее PPPoE соединение. Убедиться в этом можно командой: ping ya.ru и есть в ответ будет выдано нечто вида:
nrg@dell:~> ping google.com PING google.com (72.14.207.99) 56(84) bytes of data. 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=1 ttl=244 time=171 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=2 ttl=244 time=173 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=3 ttl=244 time=184 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=4 ttl=244 time=172 ms 64 bytes from eh-in-f99.google.com (72.14.207.99): icmp_seq=5 ttl=244 time=170 ms
То все отлично, можно идти дальше. Далее проверим соединение между машинами наберём на сервере команду ping 192.168.155.1, а на клиенте соответственно ping 192.168.155.2 и в ответ должны посыпаться ответы, указанные выше. Насчёт IP, как я уже сказал выше, используейте 192.168.0.1 вместо 192.168.155.2 и 192.168.0.1 вместо 192.168.155.1.
Сеть работоспособна. Шаг первый, настроим трансляцию пакетов с Локальной сети в Интернет.
- Открываем Yast2 -> "Пользователи и безопасность" -> "Брандмауэр".
- Переходим на вкладку "Интерфейсы", выбираем там наше ДСЛ соединение (так зовётся PPPoE), щёлкаем кнопку изменить и выбираем "Внешняя зона", а для сетевой карты, подключённой к Локальной Сети (далее "ЛВС"), выбираем соответственно "Внутренняя зона"
- Переходим на вкладку "Трансляция сетевых адресов", в верху ставим галочку "Трансляция сетевых адресов".
- Далее щёлкаем кнопку "Добавить" и вводим следующее: сеть источника 192.168.155.0/24, протокол TCP, в полях "Требуемый порт" и "Перенаправление в порт" прописываем нули, требуемый IP вводим "0.0.0.0/0", т.е. любой. А в поле "Перенаправить в транслированный IP" наш IP, который выдаётся для dsl соединения (ifconfig dsl0 и смотрите поле inet addr:). В моём случае это адрес вида 10.65.0.x.
- Применяем настройки Брандмауэра.
- Переходим к клиентской машине.
На клиентской машине в Yast2->"Сетевые устройства" -> Сетевая плата вбиваем IP сервера (192.168.155.2) как шлюз по умолчанию на вкладке Маршрутизация. Далее опять же на клиентской машине вбиваем ping 64.233.187.99 и смотрим %) Если полетели пакетики, то ура, ибо роутинг уже работает!
Далее нам нужно сделать, чтобы вместо ping ip можно было сделать ping ya.ru. Установка локального DNS сервера
- Ставим через Yast2 пакет bind и пакета для конфигурирования Бинда через yast2 (вбейте в поиске bind он будет показан)
- Открываем Yast2 -> "Сетевые службы" -> "Сервер DNS"
- Ставим галочку "PPP Демон устанавливает направление запроса", это означает, что если наш локальный ДНС сервер не обнаружит в своей базе IP адреса требуемого домена, то он попросит его у ДНС провайдера, а в случае указанной конфигурации он автоматически определит ДНС провайдера и будет использовать его. Щелкаем далее.
- ничего не трогаем на странице "Установка DNS сервера: DNS зоны" и щелкаем далее.
- В поле "Запуск службы" ставим галочку "При загрузке системы" и жмем завершить, тем самым применяя настройки.
Возвращаемся к клиентской машине.И снова Yast2 -> "Сетевые настройки" -> "Сетевая карта" -> Имя узла DNS и там ставим галочку "Изменить /etc/resolv.conf вручную", после этого в поле Сервер имён №1 вбиваем IP нашего сервера - 192.168.155.2 и применяем.
Теперь делаем ping ya.ru и радуемся увиденному %) Всё, мои поздравления, сервер настроен, можете открывать браузер на клиентской машине и юзать Инет %)
Добавление прозрачного прокси на базе squid (опционально).
Теперь можно улучшить скорость доступа к ресурсам и уменьшить потребляемый трафик посредством кэширующего прокси на базе squid. Установите прокси сервер squid и запустите его командой service squid start (или поместите в автозагрузку на 3й либо 5й уровень запуска). После этого нам требуется немного модифицировать его конфигурацию, открываем любым текстовым редактором файл /etc/squid/squid.conf Потом отыскиваем там строку "http_port 3128" и меняем её на "http_port 3128 transparent", тем самым мы указали, что прокси теперь может использоваться как прозрачный.
Далее нам нужно указать, что подсеть 192.168.155.0/24 (а в Вашем случае 192.168.0.0/24) является доверенной, чтобы клиенты из данной подсети смогли использовать прокси. Находим текст:
http_access allow localhost # And finally deny all other access to this proxy http_access deny all
И изменяем на следующее следующее:
acl our_networks src 192.168.155.0/24 http_access allow our_networks http_access allow localhost # And finally deny all other access to this proxy http_access deny all
Тем самым мы как раз и добавили нашу подсеть в список допустимых и перезапускаем squid командой service squid restart дабы применить произведённые настройки.
И, наконец, укажем SuSe Firewall`у, что для портов 80 и 8080 нужно использовать прокси. Для этого открываем /etc/sysconfig/SuSEfirewall2 Там ищем строку вида FW_REDIRECT="" и заменяем её на
FW_REDIRECT="192.168.155.0/24,0/0,tcp,80,3128"
Далее перезапускаем Suse Firewall2 через Yast2 и наблюдаем через команду tail -f /var/log/squid/access.log ,что теперь все запросы на указанные порты перекидываются на прокси :)
|