Тестируем дальше ... (речь о бранче p9, примечание --sb)
3proxy так и не починили, да и версия старая 0.6.1, по этому проверил самостоятельную компиляцию и установку последней версии 0.8.12:
Скачать 3proxy исходники:
# wget https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gzРаспаковать архив в текущий каталог:
# tar zvxf 0.8.12.tar.gz# ls -lитого 528
-rw-r--r-- 1 root root 528990 июл 4 07:52 0.8.12.tar.gz
drwxrwxr-x 7 root root 4096 апр 18 2018 3proxy-0.8.12
Перейти в корень каталога :
# cd 3proxy-0.8.12Прежде чем компилировать в ОС должны быть установлены следующие пакеты:
#
rpm -qa | grep ^gcc.*gcc-8-alt1.x86_64
gcc8-8.3.1-alt3.x86_64
gcc-common-1.4.23-alt1.x86_64
# rpm -qa | grep libssllibssl-devel-1.1.1b-alt2.x86_64
libssl1.1-1.1.1b-alt2.x86_64
libssl-devel-static-1.1.1b-alt2.x86_64
Если нет установить пакеты:
#
apt-get install gcc gcc8 libssl1.1 libssl-devel libssl-devel-staticСобираем:
#
make -f Makefile.Linux…
gcc -o ../../TransparentPlugin.ld.so -O2 -fno-strict-aliasing -pthread -shared transparent_plugin.o
make[2]: выход из каталога «/root/3proxy-0.8.12/src/plugins/TransparentPlugin»
make[1]: выход из каталога «/root/3proxy-0.8.12/src»
в каталоге с исходниками имеется
каталог ./src в котором лежит скомпилированный бинарник 3proxy.
#
ls -l ./src итого 6680
-rwxr-xr-x 1 root root 1016480 июл 4 09:45 3proxy
...
Для установки 3proxy, необходимо создать следующую структуру каталогов в каталоге /usr/local/3proxy:
# mkdir /usr/local/3proxy
# mkdir /usr/local/3proxy/list
# mkdir /usr/local/3proxy/logs
# mkdir /usr/local/3proxy/stat
# mkdir /usr/local/3proxy/traf
- или одной строкой:#
(mkdir -p /usr/local/3proxy /usr/local/3proxy/list /usr/local/3proxy/logs /usr/local/3proxy/stat /usr/local/3proxy/traf)Переместить бинарник в каталог:
#
cp ./src/3proxy /usr/local/3proxy/#
ls -l /usr/local/3proxy | sortdrwxr-xr-x 2 root root 4096 апр 26 2013 list
drwxr-xr-x 2 root root 4096 окт 25 2012 stat
drwxr-xr-x 2 root root 4096 фев 2 00:00 logs
drwxr-xr-x 2 root root 4096 фев 2 00:00 traf
-rw-r--r-- 1 root root 9462 янв 21 13:07 3proxy.cfg - конфигурационный файл
-rwxr-xr-x 1 root root 848451 янв 21 12:59 3proxy - бинарный файл прокси
list - располагаются файлы "бан" листов и другие (путь в этот каталог указывается в конфигурационном файле 3proxy.cfg)
logs - находятся лог файлы (путь в этот каталог для лог-файлов указывается в конфигурационном файле 3proxy.cfg)
Создаем init-script ’3proxy’ в каталоге '/etc/rc.d/init.d', т. е. в текстовый файл с именем 3proxy и добавляем текст скрипта:
#
nano /etc/rc.d/init.d/3proxy#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/3proxy/3proxy
DAEMON_OPTS=/usr/local/3proxy/3proxy.cfg
NAME=3proxy
DESC=3proxy
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /usr/local/3proxy/$NAME.pid \
--exec $DAEMON $DAEMON_OPTS
echo "done."
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile /usr/local/3proxy/$NAME.pid \
--exec $DAEMON
echo "done."
;;
*)
N=/etc/init.d/$NAME
# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac
exit 0
Сделаем скрипт исполняемым:
#
chmod +x /etc/rc.d/init.d/3proxyНастроить конфиг-файл с именем 3proxy.cfg и поместить в каталог /usr/local/3proxy.
#
nano /usr/local/3proxy/3proxy.cfg# Важно указать данное значение, так как только при нем процесс 3proxy уйдет в background
daemon
# Записывать pid текущего процесса в файл
pidfile /usr/local/3proxy/3proxy.pid
## Локальный сетевой адрес
internal 192.168.122.54
## Внешний сетевой адрес
#external 2.39.14.90
nserver 77.88.8.8
nserver 77.88.8.1
nscache 65536
## формат журналирования
logformat "L%C %I %O - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %N/%R:%r"
log /usr/local/3proxy/logs/3proxy_u.log D
## Следить за изменениями в файлах и применять их без перезапуска прокси сервера
monitor "/usr/local/3proxy/3proxy.cfg"
## чтобы в папке с логами сохранялись лишь последние 30 файлов
rotate 30
counter "/usr/local/3proxy/3proxy.3cf" D "/usr/local/3proxy/traf/traf"
countin 101/day D 1000000 *
# РАЗДАЕМ WEB
flush
auth iponly
allow *
proxy -p53128 -t -a -n
# Порт мапинг портов на почту mail.ru. В приложении сервер 192.168.122.54, а порт 51110 и другие
flush
auth iponly
allow * * * 25,110,51025,52025,51110 *
tcppm -i192.168.122.54 51025 smtp.mail.ru 25
tcppm -i192.168.122.54 51110 pop.mail.ru 110
tcppm -i192.168.122.54 51143 imap.mail.ru 143
pop3p
smtpp
# Поднимается на 53 порту и проксирует dns Выступает в роли не кешируемого dns сервера 'forwardonly'
#dnspr
Запуск 3proxy
/etc/rc.d/init.d/3proxy startДля автозапуска, разместить в файле rc.local (/etc/rc.d/rc.local) строчку
/etc/rc.d/init.d/3proxy start
Проверить запуск командой ss -4tunap | grep 3proxy
#
ss -4tunap | grep 3proxytcp LISTEN 0 7 192.168.122.54:110 0.0.0.0:* users:(("3proxy",pid=3633,fd=10))
tcp LISTEN 0 7 192.168.122.54:51025 0.0.0.0:* users:(("3proxy",pid=3633,fd=7))
tcp LISTEN 0 7 192.168.122.54:25 0.0.0.0:* users:(("3proxy",pid=3633,fd=11))
tcp LISTEN 0 7 192.168.122.54:51110 0.0.0.0:* users:(("3proxy",pid=3633,fd=8))
tcp LISTEN 0 7 192.168.122.54:51143 0.0.0.0:* users:(("3proxy",pid=3633,fd=9))
tcp LISTEN 0 7 192.168.122.54:53128 0.0.0.0:* users:(("3proxy",pid=3633,fd=6))
tcp ESTAB 0 0 192.168.122.54:53128 192.168.122.1:59254 users:(("3proxy",pid=3633,fd=19))
tcp ESTAB 0 0 192.168.122.54:33709 52.25.218.23:443 users:(("3proxy",pid=3633,fd=20))
### Анализ лога 3proxy ###
# формат журналирования 3rpoxy с некоторыми изменениями (вх. %I и исх. %O трафик перенесен во 2 и 3 колонку s=s+($2+$3))
logformat "L%C %I %O - %U [%d/%o/%Y:%H:%M:%S %z] ""%T"" %E %N/%R:%r"
log /usr/local/3proxy/logs/3proxy_u.log D
# Выбрать по IP из лога прокси входящий и исходящий трафик Без портмапинга
sed -n -e '/TCPPM/d' -e '/^192.168.122..*/p' /usr/local/3proxy/logs/3proxy_u.log.2019.07.* | awk ' {print $0} {(s=s+($2+$3))} END {print s/1000000," ","MB" } '
# Выбрать по IP из лога прокси входящий и исходящий трафик только с портмапингом
sed -n -e '/^192.168.122..*TCPPM.*/p' /usr/local/3proxy/logs/3proxy_u.log.2019.07.* | awk ' {print $0} {(s=s+($2+$3))} END {print s/1000000," ","MB" } '# Выбрать по IP из лога прокси входящий и исходящий трафик по всем IP с 20 по 103
cnt=20; while [ $cnt -lt 103 ]; do echo $cnt; cnt=`expr $cnt + 1`; (sed -n -e "/^192.168.122.$cnt.*/p" /usr/local/3proxy/logs/3proxy_u.log.2019.07.* | awk ' {(s=s+($2+$3))} END {if (s!=0) print $1, s/1000000,"MB" } '); done | sort