Настройка FreeBSD для работы интернета через Proxy server

    Вступление


    Решил я начать изучение не безызвестной ОС — FreeBSD. Т.к. свободного времени в не рабочее время катастрофически мало, был поднят тестовый сервер на работе! Но основная проблема заключалась в том что во всех нормальных офисах интернет раздается через proxy или NAT, в моем случае через проксю. Основной прокси сервер поднят так же на Freebsd с NTLM аутентификацией. Так же я рассмотрю настройку freebsd с basic аутентификацией на прокси сервере.

    Тестовая FreeBSD, не имеет ни какого дополнительного ПО, так что в моем распоряжении терминал и командная оболочка csh.

    Итак, basic аутентификация.

    Тут все просто, редактируем 2 файла.
    1) /.cshrc или /home/%username%/.cshrc (папка вашего пользователя)
    setenv HTTP_PROXY login:pass@server:port
    setenv FTP_PROXY login:pass@server:port
    setenv http_proxy login:pass@server:port
    setenv ftp_proxy login:pass@server:port


    2) /etc/make.conf
    FETCH_ENV=HTTP_PROXY=http://login:pass@server:port
    FETCH_ENV=FTP_PROXY=http://login:pass@server:port
    FETCH_ENV=http_proxy=http://login:pass@server:port
    FETCH_ENV=ftp_proxy=http://login:pass@server:port


    Перелогиниваемся и теперь все программы будут знать о наличии прокси сервера, если на прокси сервере нет аутентификации вообще, то логин и пароль писать не надо:
    setenv HTTP_PROXY server:port

    C файлом .cshrc есть некоторые тонкости, вообще лучше всего править файл из директории пользователя под которым вы работаете, например для root это будет /root/.cshrc

    NTLM аутентификация.

    Лично в моем примере выше приведенные настройки кое как позволяли работать через офисный proxy сервер, который использует NTLM аутентификацию, я просто прописал доменный логин пароль пользователя, но работало все не полноценно! Качать можно было только с ftp серверов, не знаю, это косяк конкретно настроенного сервера или это нормально, но суть в том что нужные пакеты я смог выкачать без особых проблем, если и ftp будет прикрыт, тогда будет немного проблематичнее скачивать и устанавливать нужные дополнительные пакеты…

    Стандартными средствами FreeBSD пройти ntlm аутентификацию не удастся, потребуется дополнительно ПО. Я лично использовал программу cntlm ее настройку и рассмотрю.

    Устанавливаем программу любым возможным способом, мой способ прост…
    # whereis cntlm
    # cd /usr/ports/www/cntlm
    # make install

    1) Редактируем файл /usr/local/etc/cntlm.conf
    Username<------>MyUserName(Ваше имя пользователя в домене Windows)
    Domain<><------>MyDomain(Ваше адрес домена Windows)
    Password<------>MyPassword(Пароль вашего пользователя в домене Windows)
    Proxy<-><------>ServerProxy:port(Адрес прокси в домене)
    Listen<><------>3128(порт для локальной прокси)
    Auth<--><------>NTLM(Тип аутентификации на proxy)
    Flags<-><------>0x07820000(Соотвествующие флаги для аутентификации в домене)

    2) Добавляем строчки в /etc/rc.conf
    cntlm_enable="YES"
    cntlm_config="/usr/local/etc/cntlm.conf"

    3) Запускаем даемон:
    /usr/local/etc/rc.d/cntlm start

    cntlm запускает локальный прокси сервер (ретранслятор) с портом который вы указываете в конфиге, в дальнейшем все настройки системы надо будет настроить на этот локальный сервер (дэмон) так, как мы это делали в первом варианте:
    /.cshrc
    setenv HTTP_PROXY 127.0.0.1:3128

    setenv ftp_proxy 127.0.0.1:3128

    /etc/make.conf
    FETCH_ENV=HTTP_PROXY=http://127.0.0.1:3128

    FETCH_ENV=ftp_proxy=http://127.0.0.1:3128


    И все по идее будет работать!

    Работа над ошибками

    Но у меня не заработало… по этому я опишу некоторые дополнительные настройки, которые мне пришлось сделать для cntlm
    Для начала уточним параметры аутентификации на прокси сервере, для этого выполним команду:
    # cntlm -M google.ru
    Программа выдаст что то типа этого:
    Config profile 1/11... OK (HTTP code: 301)
    ----------------------------[ Profile 0 ]------
    Auth NTLMv2
    PassNTLMv2 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


    Выяснилось что у меня аунтетификация NTLMv2, редактируем cntlm.conf:
    Auth<-><------>NTLMv2
    PassNTLMv2<-><------>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


    У вас аутентификация может быть NT или LM если так, то изменяем строки Auth и Flags, соответственно:
    Auth--------Flags
    NT<-><------>0x05820000
    LM<-><------>0x06820000
    NTLM<-><------>0x07820000


    Так же у меня была проблема при запуске дэмона:
    # /usr/local/etc/rc.d/cntlm start
    А в ответ получаем:
    Starting cntlm.
    Exitting with error. Check daemon logs or run with -v.
    /usr/local/etc/rc.d/cntlm: WARNING: failed to start cntlm


    В логе написано вот это:
    cntlm: Cannot access specified config file: %%{PREFIX
    root: /usr/local/etc/rc.d/cntlm: WARNING: failed to start cntlm

    googl'ом я толком на эту тему ни чего не нашел, по этому решил описать свое решение этой проблемы.
    Нужно отредактировать исполняемый файл cntlm в папке /usr/local/etc/rc.d/
    Изменяем:
    : ${cntlm_config="%%{PREFIX}/cntlm.conf"}
    на
    : ${cntlm_config="/usr/local/etc/cntlm.conf"}

    После этих дополнений все стало работать как надо.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 15
    • –5
      Я был лучшего мнения о FreeBSD users, не думал, что им нужна вот такая хавка как убунтахозяйкам…
      • +2
        Вот человек решил освоить BSD. Что тут плохого? Мне в свое время тоже не хватало толкового howto по cntlm. Пришлось внимательно курить мануал.
        • 0
          Но это же не повод писать топик про банальные вещи?
          • +1
            Ну где-то же эти банальные вещи должны быть описаны? :)
            • 0
              В мануале, нет?
              • 0
                Честно? Я бы не сказал, что ман к cntlm очень прост для понимания с первого раза. Я настроил по аналогии с ntlmapps, про который чуть больше инфы в интернете. Я не хочу спорить, но зачатстую качество документации оставляет желать лучшего. Разработчик бесплатной программы не обязан делать шедевр хелпа. Он вообще ничего не обязан делать. Может, например, предложить посмотреть исходники для понимания сути работы программы.
                Мне регулярно приходится писать маны к результатам собственного творчества. И написать понятно и доступно для каждого на самом деле непросто. )))
                У вас никогда не было проблем с поиском и пониманием документации? Я только позавидую вам )
                • +1
                  На самом деле, всех новичков на форумах шлют в хэндбук ну или в мануалы, в хэндбуке многого нет, а в мануалах зачастую нет мелочей, которые становятся решающими в некоторых случаях, в моем случае параграф «работа над ошибками» вообще не развернут в мануале, пришлось телнетом подрубаться к прокси серверу, читать логи и т.д. Для меня например все эти танцы с бубном были полезны, а другому просто надо будет подключить инет, скачать порт самбы и разбираться с ней без лишнего геморроя… Так что я не вижу большой разницы между хэндбуком или вот таким мануалом, для новичка будет полезна любая инфа, ну а гуру и сам сможет все проблемы решить при помощи мануалов и опыта, так что имхо не стоит путать теплое с горячим…
            • +1
              Хотя, я бы не в этот блог поместил бы.
              • 0
                Да я поиском набрал freеbsd, мне выдало 3 блога, этот был самый тематический как мне показалось… если не туда то извиняюсь…
          • 0
            А handbook как будто бы сложнее написан… Главное, имхо, наличие информации, а кому ее схавать это уже дело десятое.
            • 0
              В handbook основа и ее достаточно, для всего остального достаточно мана. Вот если бы тут была инструкция как связать squid с AD вот это было бы весело oh wait я уже написал эту хавту.
            • 0
              Это за нормальный и адекватный статье коммент andoriyu отправили в read-only? Приплыли.
              • 0
                За большое кол-во нормальных и адекватных комментов :)
            • 0
              С этим же cntlm работаю и под виндой. Поскольку в домене действует политика регулярной смены пароля, то проще его менять только в одном месте — конфиге cntlm. Ведь далеко не все программы умеют нормально работать с проксей с NTLM аутентификацией. А так их можно завернуть в правильном направлении.
              • 0
                Мне эта статья помогла больше чем ман по cntlm. Спасибо!

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое