Pull to refresh

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

*nix *

Вступление


Решил я начать изучение не безызвестной ОС — 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"}

После этих дополнений все стало работать как надо.
Tags:
Hubs:
Total votes 12: ↑7 and ↓5 +2
Views 37K
Comments 15
Comments Comments 15

Posts