Автор Тема: проверил самостоятельную компиляцию и установку последней версии 0.8.12 3proxy  (Прочитано 10615 раз)

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Тестируем дальше ... (речь о бранче 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 libssl
libssl-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 | sort
drwxr-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 3proxy
tcp    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
« Последнее редактирование: 06.07.2019 19:06:07 от sb »

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Подобные сообщения лучше оформлять отдельной темой в Разработка/тестирование/программирование, поскольку 3proxy никак не соотносится со стартовыми наборами и не входит в них.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Подобные сообщения лучше оформлять отдельной темой в Разработка/тестирование/программирование, поскольку 3proxy никак не соотносится со стартовыми наборами и не входит в них.
логично, я планирую переводить шлюзы с p8 на p9 и проверяю работоспособность набора программ на новой платформе, куда и вошел в набор проксисервер. Не понятно, что тогда тестировать? Посмотреть, как сервер включиться и выключиться?

Оффлайн sb

  • Модератор глобальный
  • *****
  • Сообщений: 8 991
Не понятно, что тогда тестировать? Посмотреть, как сервер включиться и выключиться?
Это вам виднее в любом разе. Но подобную тему с переводом лучше оформлять отдельно и лучше всего именно в этом разделе. Тут тестируют, например, 3D печать в ALT Linux (ПО - использование и работоспособность) https://forum.altlinux.org/index.php?topic=40708.0. Всё же в стартовых наборах речь идёт о конкретных образах и их функциональной наполненности, высказываются предложения, задаются вопросы по результатам тестирования, в общем идёт обсуждение конкретики. Тут же несколько другое, поэтому лучше отдельно.

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
3proxy так и не починили, да и версия старая 0.6.1, по этому проверил самостоятельную компиляцию и установку последней версии 0.8.12:

Попробуйте [#234069] TESTED 3proxy.git=0.8.8-alt1:

apt-repo test 234069

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
Попробуйте [#234069] TESTED 3proxy.git=0.8.8-alt1:
apt-repo test 234069

Пробую:
# apt-repo test 234069
Обновление / установка...
1: 3proxy-0.8.8-alt1                    ################################# [100%]
# find /var/cache/ -name "3proxy*"
/var/cache/apt/archives/3proxy_0.8.8-alt1%3asisyphus+234069.100.1.1@1562517472_x86%5f64.rpm# rpm -qpl '/var/cache/apt/archives/3proxy_0.8.8-alt1%3asisyphus+234069.100.1.1@1562517472_x86%5f64.rpm'
/etc/3proxy.conf
/etc/rc.d/init.d/3proxy
/etc/sysconfig/3proxy
/lib/systemd/system/3proxy.service
/lib/tmpfiles.d/3proxy.conf
/run/3proxy
/usr/bin/3proxy
/usr/bin/dighosts
/usr/bin/ftppr
/usr/bin/mycrypt
/usr/bin/pop3p
/usr/bin/proxy
/usr/bin/socks
/usr/bin/tcppm
/usr/bin/udppm
/usr/share/doc/3proxy-0.8.8
/usr/share/doc/3proxy-0.8.8/README
/usr/share/doc/3proxy-0.8.8/README-ALT.CP1251
/usr/share/doc/3proxy-0.8.8/README-ALT.UTF8
/usr/share/doc/3proxy-0.8.8/authors
/usr/share/doc/3proxy-0.8.8/copying
/usr/share/man/man3/3proxy.cfg.3.xz
/usr/share/man/man8/3proxy.8.xz
/usr/share/man/man8/ftppr.8.xz
/usr/share/man/man8/icqpr.8.xz
/usr/share/man/man8/pop3p.8.xz
/usr/share/man/man8/proxy.8.xz
/usr/share/man/man8/smtpp.8.xz
/usr/share/man/man8/socks.8.xz
/usr/share/man/man8/tcppm.8.xz
/usr/share/man/man8/udppm.8.xz
/var/log/3proxy
Подставляю свой рабочий конфиг с небольшим изменением от выше представленного уже в локальной сети, а именно:

# sed -n -e '/^#/d' -e '/.*/p' /etc/3proxy.conf
[i]daemon

 # Записывать pid текущего процесса в файл
pidfile /run/3proxy/3proxy.pid

internal 192.168.8.105
nserver 77.88.8.8
nserver 77.88.8.1
nscache 65536

monitor "/etc/3proxy.conf"

users admin:CL:admin
users install:CL:install
users revizor:CL:2525

flush
auth strong
allow admin
allow admin,install,revizor
deny *
proxy -p53129 -t -a

flush
auth iponly
allow *
proxy -p53128 -t -a -n

flush
auth iponly
allow *
proxy -p51194 -t -a

flush
auth iponly

allow * * * 25,110,51025,52025,51110 *
tcppm -i192.168.8.105 51025 smtp.mail.ru 25
tcppm -i192.168.8.105 51110 pop.mail.ru 110
tcppm -i192.168.8.105 51143 imap.mail.ru 143

pop3p
smtpp[/i]

Запускаем  # /usr/bin/3proxy /etc/3proxy.conf
# ss -4tunap
Netid      State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port
udp        UNCONN      0           0                192.168.8.105:123                  0.0.0.0:*          users:(("ntpd",pid=2618,fd=20))
udp        UNCONN      0           0                    127.0.0.1:123                  0.0.0.0:*          users:(("ntpd",pid=2618,fd=18))
udp        UNCONN      0           0                      0.0.0.0:123                  0.0.0.0:*          users:(("ntpd",pid=2618,fd=17))
tcp        LISTEN      0           7                192.168.8.105:51110                0.0.0.0:*          users:(("3proxy",pid=4009,fd=8))
tcp        LISTEN      0           7                192.168.8.105:51143                0.0.0.0:*          users:(("3proxy",pid=4009,fd=9))
tcp        LISTEN      0           7                192.168.8.105:53128                0.0.0.0:*          users:(("3proxy",pid=4009,fd=5))
tcp        LISTEN      0           7                192.168.8.105:53129                0.0.0.0:*          users:(("3proxy",pid=4009,fd=4))
tcp        LISTEN      0           7                192.168.8.105:110                  0.0.0.0:*          users:(("3proxy",pid=4009,fd=10))
tcp        LISTEN      0           7                192.168.8.105:51025                0.0.0.0:*          users:(("3proxy",pid=4009,fd=7))
tcp        LISTEN      0           7                192.168.8.105:25                   0.0.0.0:*          users:(("3proxy",pid=4009,fd=11))
tcp        LISTEN      0           7                192.168.8.105:51194                0.0.0.0:*          users:(("3proxy",pid=4009,fd=6))
tcp        LISTEN      0           128                    0.0.0.0:52226                0.0.0.0:*          users:(("sshd",pid=2569,fd=3))
tcp        ESTAB       0           64               192.168.8.105:52226           192.168.8.55:64915      users:(("sshd",pid=3383,fd=3),("sshd",pid=3378,fd=3))

Все работает и даже проксирует в отличии от старой версии в альтах, в которой 3проки просто не пропускал трафик, замечательно. Все чего требуется достич - это установить apt-get подсунуть конфиг добавить в автостарт и запустить сервис штатными средствами. Первые два (установить apt-get, подсунуть конфиг) прошли проверку и наконец то заработало.
Смотрим далее:

Остановим запущенный сервис в ручную
# kill -9 `cat /run/3proxy/3proxy.pid`

Запускаем штатными средствами
# service 3proxy start
Starting 3proxy service: Usage: /usr/bin/3proxy [conffile]

 if conffile is missing, configuration is expected from stdin

3proxy tiny proxy server 3proxy-0.8.8 (161213011647)
(c)3APA3A, Vladimir Dubrovin & 3proxy.ru
Documentation and sources: http://3proxy.ru/
Please read license agreement in 'copying' file.
You may not use this program without accepting license agreement  [FAILED]
Неудачно, (у меня SysvInit)
# cat /lib/systemd/system/3proxy.service
[Unit]
Description=3proxy Proxy Server
After=syslog.target network.target

[Service]
Type=forking
ExecStart=/usr/bin/3proxy /etc/3proxy.conf

[Install]
WantedBy=multi-user.target

# /etc/rc.d/init.d/3proxy start
Starting 3proxy service: Usage: /usr/bin/3proxy [conffile]

 if conffile is missing, configuration is expected from stdin

3proxy tiny proxy server 3proxy-0.8.8 (161213011647)
(c)3APA3A, Vladimir Dubrovin & 3proxy.ru
Documentation and sources: http://3proxy.ru/
Please read license agreement in 'copying' file.
You may not use this program without accepting license agreement  [FAILED]
Опять не удачно,
]# cat /etc/rc.d/init.d/3proxy
#!/bin/sh
#
# Init file for Software Watchdog daemon.
#
# Written by Dag Wieers <dag@wieers.com>.
# Rewrote for ALT Linux by Pavlov Konstantin <thresh@altlinux.ru>
#
# chkconfig: - 02 98
# description: 3proxy Proxy Server
#
# processname: 3proxy
# config: /etc/3proxy.conf
# pidfile: /run/3proxy.pid
#
### BEGIN INIT INFO
# Provides: 3proxy
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start:
# Default-Stop:
# Description: Proxy server
# Short-Description: start and stop 3proxy
### END INIT INFO

WITHOUT_RC_COMPAT=1

. /etc/init.d/functions

### Default variables
NAME=3proxy
USER=_3proxy
CONFIG=/etc/$NAME.conf
PROXY=/usr/bin/$NAME
RETVAL=0
PIDFILE=/run/$NAME/pid
LOCKFILE=/run/lock/subsys/$NAME

SourceIfNotEmpty /etc/sysconfig/$NAME

start() {
        start_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user $USER -- $PROXY -p $PIDFILE -c $CONFIG -d -u $USER
        RETVAL=$?
        return $RETVAL
}

stop() {
        stop_daemon --pidfile "$PIDFILE" --lockfile "$LOCKFILE" --expect-user $USER -- $NAME
        RETVAL=$?
        return $RETVAL
}

restart() {
        stop
        start
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|reload)
        restart
        ;;
  condrestart)
        [ -e $LOCKFILE ] && restart
        RETVAL=$?
        ;;
  condstop)
        [ -e $LOCKFILE ] && stop
        RETVAL=$?
        ;;
  status)
        status --pidfile "$PIDFILE" --expect-user $USER $NAME
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        RETVAL=1
        ;;
esac

exit $RETVAL

Осталось починить init-скрипт.
И вопрос где применяется группа или это чтобы было?
# cat /etc/sysconfig/3proxy
USER=_3proxy# cat /etc/group | grep 3proxy
_3proxy:x:464:

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
Подсуньте ему свой конфиг в init скрипте. /etc/3proxy.conf его не устраивает.

Оффлайн rits

  • Завсегдатай
  • *
  • Сообщений: 1 031
  • ITS
см. выше
Подставляю свой рабочий конфиг с небольшим изменением от выше представленного уже в локальной сети, а именно: ...
Запускаем  # /usr/bin/3proxy /etc/3proxy.conf
Все работает и даже...
в 3proxy.conf мой конфиг, а не работает запуск init скрипта с пакета

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
тоже возился с сабжем
пакет

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 183
  • antohami@
тоже возился с сабжем
пакет

А как обновляли исходники? Там в git было много коммитов сделано для запуска в chroot. И так просто перенести их на новую версию у меня не получилось. Если же всё, что там напатчено выкинуть, то собрать новую версию не проблема.

Оффлайн YYY

  • Мастер
  • ***
  • Сообщений: 5 950
мне главное было чтоб оно для безопасности запускалось от юзера 3proxy а не от рута и работал инит-скрипт