- Имеем две машины на базе 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, предназначенная для удобного конфигурирования фаервола.
- Немного бутербродов и чая \ кофе, т.к. процесс не очень-то и быстрый
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 пакет bind и пакета для конфигурирования Бинда через yast2 (вбейте в поиске bind он будет показан)
- Открываем Yast2 -> "Сетевые службы" -> "Сервер DNS"
- Ставим галочку "PPP Демон устанавливает направление запроса", это означает, что если наш локальный ДНС сервер не обнаружит в своей базе IP адреса требуемого домена, то он попросит его у ДНС провайдера, а в случае указанной конфигурации он автоматически определит ДНС провайдера и будет использовать его. Щелкаем далее.
- ничего не трогаем на странице "Установка DNS сервера: DNS зоны" и щелкаем далее.
- В поле "Запуск службы" ставим галочку "При загрузке системы" и жмем завершить, тем самым применяя настройки.
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 ,что теперь все запросы на указанные порты перекидываются на прокси :)
Чуть позже дополню все скриншотами и выправлю текст.
Благодарность, критика, вопросы по теме принимаются и приветствуются за исключением случаев, когда собеседник хочет, чтобы все сделали за него ("быстро и шоп работало") и ведёт себя бестактно, тогда в помощи я буду вынужден отказать, т.к. ценю своё время.
Автор: Одинцов Павел ака энерджи. Ноября 2007г. Общее время написания статьи: 1 час.
зачет, очень полезно
ReplyDeleteБольшое спасибо за полезный текст. Ждем обещанных картинок.
ReplyDeleteЕсли есть такая возможность, то расширить бы описалово из следующих условий:
Оператор выдает доступ к домашней сети через кабель, IP динамический. Выход в инет осуществляется через ВПН, IP так же динамический. Все нстройки получаются автоматом от провайдера, включая IP адреса и роутинги (от сервера DHCP).
Еще раз спасибо за полезный мануал )))
Огромное спасибо за статью, очень подробно и качественно всё объяснено, до этого конфигурировал руками и с трансляцией адресов были глюки, чувствовал что в чём то есть подвох...
ReplyDelete