3proxy: различия между версиями
imported>Vix Нет описания правки |
imported>Vix Нет описания правки |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Прокси сервер который умеет HTTP\HTTPS, ознакомится можно [https://ru.wikipedia.org/wiki/3proxy тут]. | Прокси сервер который умеет '''HTTP\HTTPS''', ознакомится можно [https://ru.wikipedia.org/wiki/3proxy тут]. | ||
<hr> | <hr> | ||
Для установки в Debian 7,8,9 - необходимо сделать сдледующее: | Для установки в '''Debian 7,8,9''' - необходимо сделать сдледующее: | ||
1. скачать архив последней версии [https://github.com/z3APA3A/3proxy тут]: | 1. скачать архив последней версии [https://github.com/z3APA3A/3proxy тут]: | ||
* - через git: | * - через '''git''': | ||
git clone https://github.com/z3APA3A/3proxy.git | git clone https://github.com/z3APA3A/3proxy.git | ||
* - скачиваем архивом | * - или скачиваем '''архивом''' | ||
wget -c https://github.com/z3APA3A/3proxy/releases | wget -c https://github.com/z3APA3A/3proxy/releases | ||
2. если копия сделана через git то просто создаем в папке 3proxy файл debinstall.sh | 2. если копия сделана через '''git''' то просто создаем в папке '''3proxy''' файл будущего скрипта инсталлятора '''debinstall.sh''' | ||
cd 3proxy | cd 3proxy | ||
touch debinstall.sh | touch debinstall.sh | ||
Строка 15: | Строка 15: | ||
иначе распаковываем архив и также создаем этот файл.<br> | иначе распаковываем архив и также создаем этот файл.<br> | ||
Далее.. | Далее.. | ||
вносим содержимое: | |||
#!/bin/bash | #!/bin/bash | ||
Строка 160: | Строка 159: | ||
nserver 127.0.0.1 | nserver 127.0.0.1 | ||
# | # | ||
maxconn 2047 | |||
# Оставьте размер кэша для запросов DNS по умолчанию | # Оставьте размер кэша для запросов DNS по умолчанию | ||
nscache 65536 | nscache 65536 | ||
Строка 181: | Строка 181: | ||
# | # | ||
# путь к логам и формат лога, к имени лога будет добавляться дата создания | # путь к логам и формат лога, к имени лога будет добавляться дата создания | ||
log /var/log/3proxy/3proxy.log D | #log /var/log/3proxy/3proxy.log D | ||
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" | log /var/log/3proxy/access.log | ||
#logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" | |||
# It's squid log format, but it almost hides error messages (формат как у squid) | |||
logformat "- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown" | |||
archiver gz /usr/bin/gzip %F | |||
rotate 7 | |||
# | # | ||
# Включаем авторизацию по логинам и паролям | # Включаем авторизацию по логинам и паролям | ||
Строка 352: | Строка 357: | ||
4. запускаем скрипт, он может потребовать доустановить пакеты - соглашаемся. | 4. запускаем скрипт, он может потребовать доустановить пакеты - соглашаемся. | ||
скрипт дает подсказку при простом запуске или с ключем --help | |||
5. после установки правим конфигурационный файл /etc/3proxy/3proxy.cfg | 5. после установки правим конфигурационный файл /etc/3proxy/3proxy.cfg | ||
Строка 357: | Строка 363: | ||
Примеры можно посмотреть в папке с исходным кодом: ../3Proxy/cfg | Примеры можно посмотреть в папке с исходным кодом: ../3Proxy/cfg | ||
ИСТОЧНИКИ: | '''* PS/ почему я написал свой скрипт установки?'''<br> | ||
Все просто, в установщике для '''Linux''' есть только установка под '''init.d''', а в новых версиях уже везде '''systemd'''.<br> | |||
Так как я уже делал подобное, то просто адаптировал свой инталлятор для данной установки.<br> | |||
Использовать его или нет, вопрос важего желания. Мой скрипт как ставит так и чистит все корректно.<br> | |||
Проверено в работе на '''Debian 8,9'''. | |||
'''ИСТОЧНИКИ:''' | |||
<hr> | <hr> | ||
* [https://community.vscale.io/hc/ru/community/posts/115001609005-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0-3proxy-%D0%BD%D0%B0-Debian-Ubuntu?page=1#community_comment_115001539545 Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu ] | * [https://community.vscale.io/hc/ru/community/posts/115001609005-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-%D0%BF%D1%80%D0%BE%D0%BA%D1%81%D0%B8-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0-3proxy-%D0%BD%D0%B0-Debian-Ubuntu?page=1#community_comment_115001539545 Установка и настройка прокси-сервера 3proxy на Debian/Ubuntu ] | ||
* [https://www.3proxy.ru/howtor.asp 3APA3A 3proxy tiny proxy server HowTo ] | |||
* [http://timp87.blogspot.com/2014/04/3proxy.html Попробуем 3proxy?] | |||
* [http://www.wertup.ru/ubuntu/3proxy Установка и настройка 3proxy tiny free proxy] |
Текущая версия от 15:01, 25 декабря 2018
Прокси сервер который умеет HTTP\HTTPS, ознакомится можно тут.
Для установки в Debian 7,8,9 - необходимо сделать сдледующее:
1. скачать архив последней версии тут:
* - через git: git clone https://github.com/z3APA3A/3proxy.git * - или скачиваем архивом wget -c https://github.com/z3APA3A/3proxy/releases
2. если копия сделана через git то просто создаем в папке 3proxy файл будущего скрипта инсталлятора debinstall.sh
cd 3proxy touch debinstall.sh
иначе распаковываем архив и также создаем этот файл.
Далее..
вносим содержимое:
#!/bin/bash # author Koshuba V.O. # config examples & init.d script author Altavista375 # (c) 2018 # the install for Debian # option=$1; getpkg=( "build-essential" "wget" "tar" "gzip" ); log="/var/log/syslog"; deb_release=""; ## functions & operations operation_install=( "checkDep" "install" "printInfo" ); operation_uninstall=( "checkDep" "uninstall" "printInfo" ); operation_help=( "printInfo" ); execute_func=(); ## ## -@F logic executor function eXlogic() { lEnd=1; if [[ ${#iFs[@]} -eq 0 ]]||[[ ${#iFs[@]} != ${#logic[@]} ]] then echo "exit - eXlogic"; exit 0; fi local exfunc=(); for ((lg_index=0; lg_index != ${#iFs[@]}; lg_index++)) do ## !! debug operation... #echo "eXlogic = execution: function ${iFs[$lg_index]} : index=$lg_index"; local lg=$(echo $((${iFs[$lg_index]})) ); local exfunc=( ${logic[$lg_index]} ); local runfunc=$(echo ${exfunc[$lg]}| sed 's/\"//g'); $runfunc; if $lEnd == 0 then lg_index=$((${#iFs[@]}-1)); fi done iFs=(); logic=(); value_in=""; } ##--@F write log events function writeToLog() { for ((rpt_index=0; rpt_index != ${#reports[@]}; rpt_index++)) do echo "$rdate 3proxy install message: ${reports[$rpt_index]}">>$log; done } ##--@F make all errors function makeErr() { reports[${#reports[@]}]="Operation not succeded"; printInfo; writeToLog; exit 0; } ##--@F Check the program dependency function checkDep() { if [[ ! $(apt-cache policy ${getpkg[@]} | grep status|wc -l) = $(echo -e ${#getpkg[@]}) ]]; then apt-get install $(echo ${getpkg[@]}); fi for ((ipkg=0; ipkg != ${#getpkg[@]}; ipkg++)) do if [ ! "$(apt-cache policy ${getpkg[$ipkg]} | grep status)" ] then ## lang messages if yes then lang else us... reports[${#reports[@]}]="Do not set ${getpkg[$ipkg]} package"; makeErr; fi done local lsbtools=$(whereis -b lsb_release|awk '/^lsb_release:/{print $2}'); deb_release=$( $lsbtools -r|awk '/^Release:/{print $2}'|sed 's/\./ /g'|awk '{print$1}' ); } function printInfo() { value_in="$option"; iFs=( "$(echo -n $value_in|wc -m) == 0" "$(echo -n $value_in|sed 's/--help//g'|wc -m) == 0" "$(echo -n ${#reports[@]}) == 0" ); logic=( '"" "pIhelp"' '"" "pIhelp"' '"pIdf" "pIhelp"' ); function pIhelp() { lEnd=0; clear echo echo -e "install: debinstall.sh --install"; echo -e "uninstall: debinstall.sh --uninstall"; echo -e "help: debinstall.sh --help"; exit 0; } ## default function last eXlogic.. function pIdf() { for ((rpt_index=0; rpt_index != ${#reports[@]}; rpt_index++)) do echo "${reports[$rpt_index]}"; done exit 0; } eXlogic; } ## -@F install 3proxy function install() { make -f Makefile.Linux if [ ! -d "/etc/3proxy" ] then mkdir -p /etc/3proxy; fi cp $PWD/bin/3proxy /usr/bin/ adduser --system --no-create-home --disabled-login --group proxy3 chown proxy3:proxy3 /usr/bin/3proxy iduser=$(id -u proxy3); idgroup=$(id -g proxy3); # config examples author Altavista375 touch /etc/3proxy/3proxy.cfg echo -e '# Запускаем сервер от пользователя proxy3 # (возможно в вашей ОС uid и gid пользователя proxy3 # будут другими. Для их определения воспользуйтесь командой id proxy3) setgid '"$idgroup"' setuid '"$iduser"' # # Пропишите правильные серверы имен посмотрев их # на своем сервере в /etc/resolv.conf nserver 127.0.0.1 # maxconn 2047 # Оставьте размер кэша для запросов DNS по умолчанию nscache 65536 # # Равно как и таймауты timeouts 1 5 30 60 180 1800 15 60 # # Если несколько IP на одном сервере, указываем тот, # через который ходить во внешний мир. # Иначе эту строку игнорируем #external <YOURSERVERIP> # Тоже самое, только указываем IP, который надо слушать # Если проигнорировать, то прокси слушает все адреса на сервере #internal <YOURSERVERIP> # # Указываем на расположение файла с пользователями и паролями #users $/etc/3proxy/.proxyauth # # укажите режим запуска как deamon daemon # # путь к логам и формат лога, к имени лога будет добавляться дата создания #log /var/log/3proxy/3proxy.log D log /var/log/3proxy/access.log #logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" # It's squid log format, but it almost hides error messages (формат как у squid) logformat "- +_G%t.%. %D %C TCP_MISS/200 %I %1-1T %2-2T %U DIRECT/%R application/unknown" archiver gz /usr/bin/gzip %F rotate 7 # # Включаем авторизацию по логинам и паролям #auth cache strong # # Конфигурация http(s) proxy # Запускаем анонимный (-a) HTTP-proxy на порту (-p) 3128 и # c отключенной NTLM-авторизацией (-n) proxy -n -p3128 -a'>/etc/3proxy/3proxy.cfg chown proxy3:proxy3 /etc/3proxy/3proxy.cfg chmod 444 /etc/3proxy/3proxy.cfg if [ ! -d "/var/log/3proxy" ] then mkdir -p /var/log/3proxy; chown proxy3:proxy3 /var/log/3proxy fi # script starts 3proxy author Altavista375 touch /etc/init.d/3proxyinit echo '#!/bin/sh # ### BEGIN INIT INFO # Provides: 3Proxy # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Initialize 3proxy server # Description: starts 3proxy ### END INIT INFO case "$1" in start) echo Starting 3Proxy /usr/bin/3proxy /etc/3proxy/3proxy.cfg ;; stop) echo Stopping 3Proxy /usr/bin/killall 3proxy ;; restart|reload) echo Reloading 3Proxy /usr/bin/killall -s USR1 3proxy ;; *) echo Usage: \$0 "{start|stop|restart}" exit 1 esac exit 0'>/etc/init.d/3proxyinit; chmod 0644 /etc/init.d/3proxyinit; chmod +x /etc/init.d/3proxyinit; if [[ $deb_release < 8 ]]; then update-rc.d -n 3proxyinit defaults; else echo -e ' [Unit] SourcePath=/etc/3proxy Description=proxy After=network-online.target Wants=network-online.target Conflicts=shutdown.target [Service] User=proxy3 Group=proxy3 GuessMainPID=no Type=notify NotifyAccess=all RemainAfterExit=yes WorkingDirectory=/etc/3proxy/ ExecStart=/etc/init.d/3proxyinit start ExecStop=/etc/init.d/3proxyinit stop ExecReload=/etc/init.d/3proxyinit restart TimeoutSec=5min [Install] WantedBy=multi-user.target '>/lib/systemd/system/3proxy.service; systemctl daemon-reload /bin/systemctl enable 3proxy.service; fi # reports[${#reports[@]}]="3proxy install susseful"; writeToLog; printInfo; } ## -@F Uninstall 3proxy function uninstall() { if [[ $deb_release < 8 ]]; then /etc/init.d/3proxyinit stop; update-rc.d -n 3proxyinit remove; else /bin/systemctl stop 3proxy.service; /bin/systemctl disable 3proxy.service; rm /lib/systemd/system/3proxy.service; systemctl daemon-reload; fi rm -f /etc/3proxy/3proxy.cfg; rm -f /usr/bin/3proxy; rm -rf /etc/3proxy; deluser proxy3; reports[${#reports[@]}]="3proxy uninstall susseful"; writeToLog; printInfo; } ##--@F executor function executor() { if [[ ${#execute_func[@]} -eq 0 ]] then echo "exit"; exit 0; fi for ((ex_index=0; ex_index != ${#execute_func[@]}; ex_index++)) do ## !! debug operation... ##echo "execution: function ${execute_func[ex_index]}" ${execute_func[ex_index]}; done } ##- Begin 3proxy case "$option" in ## install 3proxy "--install" | "--install" ) execute_func=( ${operation_install[@]} ); executor; exit 0 ;; ## uninstall 3proxy "--uninstall" | "--uninstall" ) execute_func=( ${operation_uninstall[@]} ); executor; exit 0 ;; ## help "--help" | "--help" ) execute_func=( ${operation_help[@]} ); executor; exit 0 ;; * ) # selecting defaults. execute_func=( ${operation_help[@]} ); executor; exit 1 ;; esac
3. даем права на запуск
chmod +x debinstall.sh
4. запускаем скрипт, он может потребовать доустановить пакеты - соглашаемся. скрипт дает подсказку при простом запуске или с ключем --help
5. после установки правим конфигурационный файл /etc/3proxy/3proxy.cfg
Примеры можно посмотреть в папке с исходным кодом: ../3Proxy/cfg
* PS/ почему я написал свой скрипт установки?
Все просто, в установщике для Linux есть только установка под init.d, а в новых версиях уже везде systemd.
Так как я уже делал подобное, то просто адаптировал свой инталлятор для данной установки.
Использовать его или нет, вопрос важего желания. Мой скрипт как ставит так и чистит все корректно.
Проверено в работе на Debian 8,9.
ИСТОЧНИКИ: