Неизвестно почему, но все руководства опускают весьма важные вопросы, связанные с правилами брандмауэра и списками доступа прокси-сервера. А ведь, правильно и, значит, агрессивно, настроенный брандмауэр корпоративного доступа просто не пустит dial-in клиента в Internet, ни к электронной почте, ни к DNS сервису, вне зависимости от того, работает pppd на выделенном сервере или же непосредственно на корпоративном сервере доступа. Жирный минус в кондуит товарищам - либо не подумали, либо не умеют толком настраивать.
Смею предположить, что прокси-сервер - squid, на сегодняшний день это неписанный стандарт de facto.
Настоятельно советую пользоваться прокси, при плохой АЧХ телефонных линий и частых ретрейнах
это поможет сберечь нервные клетки. Адреса dial-in можно прописать в списки доступа непосредственно в
/usr/local/etc/squid/squid.conf:
acl dial_in_users src 192.168.1.2-192.168.1.4/255.255.255.0
http_access allow dial_in_users Safe_ports
Можно завести, как, впрочем, и для всех остальных классов пользователей прокси-сервиса
отдельный файл, например,
/usr/local/etc/squid/dialin.users.tab:
acl dial_in_users src "/usr/local/etc/squid/dialin.users.tab"
Сам
dialin.users.tab будет содержать перечисление IP-адресов:
192.168.1.2/255.255.255.255
192.168.1.3/255.255.255.255
192.168.1.4/255.255.255.255
Конфигурационный файл у squid огромный, поэтому преимущества и удобства вынесения адресов в
отдельный файл очевидны, кроме того, правило http_access менять не нужно:
http_access allow dial_in_users Safe_ports
Разочарование постигает, когда проделана огромная работа и наконец-то затихли приятные
уху звуки модуляции модемов, а в браузере не открывается ни один сайт. Что ж, значит,
брандмауэр (или брандмауэры) настроен правильно, осталось только положить несколько
штрихов. Для моих коллег по диагнозу «паранойа» могу предложить
опробованный мной простой путь - вручную добавить поближе к верху списка ipfw правило,
протоколирующее весь трафик IP. В данном примере сервер имеет адрес 192.168.1.1,
а dial-in клиенты получают адреса из сегмента 192.168.1.0/24:
dial-in-server# ipfw add 10 allow log logamount 10000 ip \
from 192.168.1.0/24 to 192.168.1.0/24 via ppp0
Затем соединиться с сервером, запустить короткие сессии ping каких-либо серверов,
походить по Internet (лучше делать это сразу через прокси), запустить удаленную
консоль, «снять» почту и так далее. Добавленное правило все же
образует «дыру», поэтому увлекаться не советую. По завершению соединения правило удаляется:
dial-in-server# ipfw delete 10
А в файле /var/log/security можно будет отыскать
прототипы всех необходимых правил ipfw:
Есть несколько тонкостей:
Итак, если клиенты располагаются в сети 192.168.1.0/24, а серверному интерфейсу PPP
присваивается адрес 192.168.1.1 и в локальную сеть смотрит 192.168.0.1, то для FTP,
HTTP через прокси, удаленной консоли и traceroute
правила могут быть примерно такими:
dial-in-server# ipfw add 60 allow tcp \
from 192.168.1.1 20,21,22,200,3128-45000 to 192.168.1.0/24 via ppp0
dial-in-server# ipfw add 61 allow tcp \
from 192.168.1.1 20,21,22,200,3128-45000 to 192.168.1.0/24 via ppp1
dial-in-server# ipfw add 70 allow tcp \
from 192.168.1.0/24 to 192.168.1.1 20,21,22,200,3128-45000 via ppp0
dial-in-server# ipfw add 71 allow tcp \
from 192.168.1.0/24 to 192.168.1.1 20,21,22,200,3128-45000 via ppp1
dial-in-server# ipfw add 72 deny tcp \
from 192.168.1.0/24 to any 80,8000-8888 via ppp0
dial-in-server# ipfw add 73 deny tcp \
from 192.168.1.0/24 to any 80,8000-8888 via ppp1
Для ping в локальной сети, если нет правила icmp from any to any:
dial-in-server# ipfw add 80 allow icmp \
from 192.168.1.0/24 to 192.168.1.0/24 icmptype 0,3,4,8,11 via ppp0
dial-in-server# ipfw add 81 allow icmp \
from 192.168.1.0/24 to 192.168.1.0/24 icmptype 0,3,4,8,11 via ppp1
Для запросов и ответов DNS:
dial-in-server# ipfw add 90 allow udp \
from 192.168.1.0/24 to 192.168.1.1 53 via ppp0
dial-in-server# ipfw add 91 allow udp \
from 192.168.1.0/24 to 192.168.0.1 53 via ppp0
dial-in-server# ipfw add 92 allow udp \
from 192.168.1.0/24 to 192.168.1.1 53 via ppp1
dial-in-server# ipfw add 93 allow udp \
from 192.168.1.0/24 to 192.168.0.1 53 via ppp1
dial-in-server# ipfw add 94 allow udp \
from 192.168.1.1 53 to 192.168.1.0/24 via ppp0
dial-in-server# ipfw add 95 allow udp \
from 192.168.0.1 53 to192.168.1.0/24 via ppp0
dial-in-server# ipfw add 96 allow udp \
from 192.168.1.1 53 to 192.168.1.0/24 via ppp1
dial-in-server# ipfw add 97 allow udp \
from 192.168.0.1 53 to192.168.1.0/24 via ppp1
В заключение, нелишним будет еще раз испытать правило 10, рассмотренное выше, оно же станет одним из основных инструментов при траблшутинге dial-in. Мне весьма трудно предлагать готовые решения, не видя правил конкретного брандмауэра - оптимальная настройка ipfw - целое искусство.