LINUX.ORG.RU

Сообщения perrfect

 

Нужна помощь с bash-скриптом.

Есть такой скрипт:

#!/bin/bash
  
file="test1.txt"

cat<<EOF>$file
rabbit1-test1
rabbit1-test2
rabbit1-test3
EOF


cat $file | while read line; do jq -Rs \
   --arg v1 "/"              \
   --arg v2 "$line"          \
   --arg v3 "rabbit@node1" \
   '{"{#VHOSTNAME}" : $v1, "{#QUEUENAME}": $v2, "{#NODENAME}": $v3}' \
   <<<'{}' ;
done

Нужно получить такой результат:

{
  "data": [
    {
      "{#VHOSTNAME}": "/",
      "{#QUEUENAME}": "rabbit1-test1",
      "{#NODENAME}": "rabbit@node1"
    },
    {
      "{#VHOSTNAME}": "/",
      "{#QUEUENAME}": "rabbit1-test2",
      "{#NODENAME}": "rabbit@node1"
    },
    {
      "{#VHOSTNAME}": "/",
      "{#QUEUENAME}": "rabbit1-test3",
      "{#NODENAME}": "rabbit@node1"
    }
  ]
}

Как правильно добавить

"data": [
в эту строчку?
'{"{#VHOSTNAME}" : $v1, "{#QUEUENAME}": $v2, "{#NODENAME}": $v3}'

 , ,

perrfect
()

Почему zabbix не отображает данные при низкоуровневом обнаружении?

Добрый день.

Помогите разобраться с проблемой в zabbix.

Есть шаблон с помощью которого мониторятся очереди на rabbitMQ-сервере.

https://github.com/jasonmcintosh/rabbitmq-zabbix

Если очередей порядка 300, автодискавери работает отлично и все данные отображаются корректно.

Но, если очередей больше 1900 (есть такой сервер), то данные в автодискавери не отображаются.

Интересно то, что на zabbix-get получает верный JSON-файл с клиента, без ошибок. DEBUG=4 тоже показывает, что данные о очередях приходят и никаких ошибок при этом.

Может есть какие-то буферы, которые не пропускают такое количество данных на zabbix-сервери или какие-то лимиты?

 ,

perrfect
()

Не работает nginx keepalive_timeout

Добрый день. Вопрос по nginx keepalive_timeout. Нужен большой timeout для api. В конфиге nginx задаю keepalive_timeout 300;

Тестирую с помощью netstat. ESTABLISHED соединение держится в районе 180-200 секунд. Почему keepalive_timeout не работает?

 ,

perrfect
()

Проблема с подключением windows 10 к vpn strongswan

Добрый день.

Есть сервер Centos 7 с strongswan. Конфиг:

#global configuration IPsec
config setup
    charondebug="cfg 2, dmn 2, ike 3, net 0"
    uniqueids=no

#define new ipsec connection
conn test.net
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024!
    esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128gcm16,aes256gcm16,aes128-sha256,aes128-sha1,aes256-sha384,aes256-sha256,aes256-sha1!
    fragmentation=yes
    forceencaps=yes
    dpdaction=clear
    dpddelay=300s
    rekey=no
    left=%any
    leftid=@test.net
    leftcert=fullchain.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.15.1.0/24
    rightdns=1.1.1.1,8.8.8.8
    rightsendcert=never
    eap_identity=%identity

Все правила в iptables открыто. Windows 7 подключается без проблем. Windows 10 подключается, но пакеты только отправляются, не принимаются. Firewall отключен. В чем может быть проблема?

 , ,

perrfect
()

Zabbix snmp «Timeout while connecting to»

Нужна помощь с zabbix snmp

Zabbix Server 3.4.8

Хочу мониторить Linux-сервера через snmp, но на Zabbix-сервере получаю ошибку:

 "Timeout while connecting to "10.2.2.46:161" 

Не сервере установил парметр - Timeout=30

Когда запускаю snmpwalk с Zabbix-сервера, все ок

 snmpwalk -v 2c -c zabbix 10.2.2.46 

В логах Zabbix-сервера вижу:

 "In get_values_snmp() host:'k8s-hn-2' addr:'10.2.2.46' num:1" 

В логах Zabbix-клиента:

snmpd[1151333]: Connection from UDP: [10.2.0.108]:45064->[10.2.2.46]:161
snmpd[1151333]: Connection from UDP: [10.2.0.108]:51084->[10.2.2.46]:161

Можете подсказать в чем может быть проблема?

 ,

perrfect
()

Проблема с maxscale для multi-master кластера?

Добрый день. Нужна помощь. Есть кластер mysql percona master-master (3 реплики). Нужно перед ним поставить maxscale.

Конфиг maxscale:

[maxscale]
threads=auto

[db1]
type=server
address=172.31.6.70
port=3306
protocol=MariaDBBackend

[db2]
type=server
address=172.31.6.252
port=3306
protocol=MariaDBBackend

[db3]
type=server
address=172.31.18.57
port=3306
protocol=MariaDBBackend

[PerconaDB-Monitor]
type=monitor
module=mariadbmon
servers=db1,db2,db3
user=maxscale
password=5D68B4AA55F84B754DDEB891CE7A2180
monitor_interval=1000
detect_stale_master=true

[Read-Write-Router]
type=service
router=readwritesplit
servers=db1,db2,db3
user=maxscale
password=5D68B4AA55F84B754DDEB891CE7A2180
enable_root_user=1

[MaxAdmin-Service]
type=service
router=cli

[MaxAdmin Listener]
type=listener
service=MaxAdmin Service
protocol=maxscaled
port=6603

[Read-Write-Listener]
type=listener
service=Read-Write-Router
protocol=mariadbclient
port=3306

Запускаю команду:

maxadmin -pmariadb list servers

Servers.
-------------------+-----------------+-------+-------------+--------------------
Server | Address | Port | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
db1 | 172.31.6.70 | 3306 | 0 | Running
db2 | 172.31.6.252 | 3306 | 0 | Running
db3 | 172.31.18.57 | 3306 | 0 | Running
-------------------+-----------------+-------+-------------+--------------------

Не видно чтобы сервера были мастерами.

И когда питаюсь подключится клиентом mysql, в логах вижу:

error : [readwritesplit] Couldn't find suitable Master from 3 candidates.

Когда останавливаю 2 сервера в кластере, maxscale сражу же видит мастера и клиентом mysql можно зайти. Может кто-то сталкивался с похожей проблемой?

 , ,

perrfect
()

Не работает expires max nginx

Помогите понять почему не работает expires max в nginx. Есть связка nginx+php-fpm+memcache, но почему то не работает кэширование. developers.google.com говорит, что статика не кешируется.

Сам конфиг nginx:

server {
        listen 80;
        listen [::]:80;
        server_name .example.com;
#       return 301 https://example.com$request_uri;
}

server {

    fastcgi_pass_header Last-Modified;

    gzip on;
    gzip_comp_level 3;
    gzip_types application/x-javascript application/javascript text/css;

    pagespeed on;
    pagespeed RewriteLevel OptimizeForBandwidth;
    pagespeed FileCachePath /var/ngx_pagespeed_cache;
    pagespeed LoadFromFile "https://example.com" "/home/www/example.com/www/";
    pagespeed FetchHttps enable;

    pagespeed EnableFilters collapse_whitespace,rewrite_css,rewrite_js,combine_css,combine_javascript,prioritize_critical_css,insert_dns_prefetch;
    pagespeed DisableFilters convert_to_webp_animated,convert_jpeg_to_webp,convert_to_webp_lossless,recompress_webp;
    pagespeed EnableFilters in_place_optimize_for_browser;
    pagespeed InPlaceResourceOptimization on;
    pagespeed EnableFilters extend_cache;
    pagespeed EnableCachePurge on;
    pagespeed ImplicitCacheTtlMs 1209600000;
    pagespeed ImagePreserveURLs on;

    keepalive_timeout   70;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 5m;
    ssl_stapling on;
    ssl_prefer_server_ciphers on;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         "HIGH:!RC4:!aNULL:!MD5:!kEDH";

    listen              443 ssl http2;
    server_name .example.com;
    charset off;
    access_log /var/log/nginx/example.com-access.log;
    error_log /var/log/nginx/example.com-error.log;
    set $root_path /home/www/example.com/www;
    root $root_path;

    set $php_sock unix:/var/run/php-fpm/php-fpm.sock;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    client_max_body_size 1024M;
    client_body_buffer_size 10M;
    client_body_timeout 60;
    send_timeout 60;
    index index.php;
    autoindex off;
    error_page 404 /404.php;

        if (!-e $request_filename) {
                rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
        }

        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
                expires 7d;
        }

        if ($host = 'www0.example.com') {
                return 301 https://example.com$request_uri;
        }

        location @bitrix {
                add_header Cache-Control "private, max-age=1209600";
                fastcgi_pass    $php_sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root/bitrix/urlrewrite.php;
        }

        location ~* /bitrix/admin.+\.php$ {
                pagespeed off;
                try_files       $uri @bitrixadm;
                fastcgi_pass    $php_sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PHP_ADMIN_VALUE "max_execution_time = 1200";
                fastcgi_read_timeout 1200;
                fastcgi_send_timeout 1200;
                include fastcgi_params;
        }

        location @bitrixadm {
                fastcgi_pass    $php_sock;
                include fastcgi_params;
                fastcgi_param SCRIPT_FILENAME $document_root/bitrix/admin/404.php;
        }

        location = /favicon.ico {
                log_not_found off;
                access_log off;
                expires 7d;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        # ht(passwd|access)
        location ~* /\.ht  { deny all; }

        # repositories
        location ~* /\.(svn|hg|git) { deny all; }

        # Player options, disable no-sniff
        location ~* ^/bitrix/components/bitrix/player/mediaplayer/player$ {
          add_header Access-Control-Allow-Origin *;
        }

        location ~* ^.+\.(jpg|jpeg|gif|png|svg|ttf|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
                access_log /var/log/nginx/example.com-access.log;
                expires max;
                error_page 404 /404.html;
                try_files $uri /404.html;
        }

        location ~ \.php$ {
                pagespeed off;
                try_files       $uri @bitrix;
                fastcgi_pass    $php_sock;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

 ,

perrfect
()

Не работает DNS kubernetes внутри контейнеров?

Нет резолва внутри docker-контейнеров на кластере Kubernetes. На физической машине все ок.

Сам конфиг coredns виглядит так:

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health
        kubernetes cluster.local in-addr.arpa ip6.arpa {
          pods insecure
          upstream
          fallthrough in-addr.arpa ip6.arpa
        }
        prometheus :9153
        proxy . /etc/resolv.conf
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap

В логах пода coredns слудующее:

2019/01/11 11:11:09 [INFO] plugin/reload: Running configuration MD5 = 2e2180a5eeb3ebf92a5100ab081a6381
2019/01/11 11:11:09 [INFO] Reloading complete
2019/01/11 11:11:09 [ERROR] 2 466801387614899657.3058825008286684608. HINFO: unreachable backend: no upstream host

Внутри контейнера файл /etc/resolv.conf выглядит:

nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

Не могу понять почему внутри контейнеров не работает dns. Может кто-то сталкивался с такой проблемой?

 , ,

perrfect
()

Nginx не верно проксирует запрос

Есть конфиг nginx:

      location /api/public/login/ {
            proxy_pass      https://req.test.local/api/public/login/;
            proxy_max_temp_file_size 0;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_intercept_errors on;
            error_page 301 302 307 = @handle_redirect;
            }
    
    location /api/protected/new_mnp_request/ {
            proxy_pass      https://req.test.local/api/protected/new_mnp_request/;
            proxy_max_temp_file_size 0;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_ssl_session_reuse off;
            proxy_set_header Host $http_host;
            proxy_redirect off;
            proxy_intercept_errors on;
            error_page 301 302 307 = @handle_redirect;
            }
    location @handle_redirect {
            set $orig_loc $upstream_http_location;
            proxy_pass $orig_loc;
            set $saved_redirect_location '$upstream_http_location';
    
            set $original_uri $uri;
            set $orig_loc $upstream_http_location;
            proxy_cache_key $original_uri;
    
            proxy_hide_header Strict-Transport-Security;
            proxy_cache_valid 200 202 30h;
            expires 30h;
            access_log off;
            add_header Cache-Control "public";
            etag off;
    
            add_header X-Proxy-Cache $upstream_cache_status;
            }

https://req.test.local - выступает в качестве backend, крутиться на apache и находится на стороне клиента.

На сайте, когда передается запрос на backend, в логах nginx такая ошибка:

2018/11/05 23:06:18 [error] 130606#0: *3 invalid URL prefix in "", client: 10.10.8.28, server: 10.200.210.53, request: "GET /api/public/login?login=mnp_api&password=qs2b_kW%21afs HTTP/1.1", host: "test.local:3443", referrer: "https://test.local:3443/mnp/main"
2018/11/05 23:06:18 [error] 130607#0: *4 invalid URL prefix in "", client: 10.10.8.28, server: 10.200.210.53, request: "GET /api/protected/new_mnp_request?id_location=176&name=1111111111&surname=11111111111&ported_number=7081111111&email=111111111111%40nrer.34&id_lang=1&operator_type=07&patronymic=111111111111&contact_phone=%2B7%28111%29111-11-11 HTTP/1.1", host: "test.local:3443", referrer: "https://test.local:3443/mnp/main"

Соответственно проксирование не работает и в браузере такая ошибка:

:3443/api/public/login?login=mnp_api&password=qq2b_kW%21afs:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)
:3443/api/protected/new_mnp_request?id_location=176&name=1111111111&surname=11111111&ported_number=7081111111&email=admin%40test.com&id_lang=1&operator_type=07&patronymic=111111111111&contact_phone=%2B7%28111%29111-11-11:1 Failed to load resource: the server responded with a status of 500 (Internal Server Error)

Подозреваю что ошибка из-за https. Когда оправлять запрос на URL backend через curl сначала срабатывает 301 redirect, а потом уже 200.

Тогда как правильно настроить nginx чтобы проксировалось верно?

 ,

perrfect
()

Почему CLOSE_WAIT зависают и nginx не работает?

Добрый день. Есть контейнер docker в котором крутится nginx Делаю нагрузочное тестирование и через некоторое время сервер перестает отвечать. Помогает только перезагрузка службы docker.

Если смотреть netstat, то видно, что тип состояния - CLOSE_WAIT зависло и значения постоянное.

1 Foreign
1 established)
2 LISTEN
602 ESTABLISHED
1306 CLOSE_WAIT

В чем может быть проблема?

 , ,

perrfect
()

Как заблокировать пользователя через Ansible?

Нужно заблокировать пользователя на всех серверах через Ansible. В файле ansible/hosts перечислены все хосты, даже те на которых пользователя нет.

Пишу playbook:

---
- hosts: users
  tasks:
  - include_vars: users.yml

  - name: Block user
    user:
    name: "{{item.username}}"
    shell: /bin/false
    with_items: "{{ users }}"

Но он добавляет пользователя даже на те сервера, где аккаунта не было. Как задать сначала проверку на существования пользователя и не добавлять его логин на сервера?

 , ,

perrfect
()

Site-to-Site VPN Cisco2921-Openswan

Помогите понять почему не подымается туннель между Cisco2921 и Openswan Centos.

Настройки на Cisco:

crypto isakmp policy 1
 encr 3des
 authentication pre-share
 group 2

crypto isakmp key 12345 address 10.10.10.10

ip access-list extended SitesVPN
 permit ip any host 87.240.129.72
 permit ip any host 18.196.37.30

crypto ipsec transform-set centos esp-3des esp-sha-hmac

crypto map centosipsec 10 ipsec-isakmp 
 set peer 10.10.10.10
 set transform-set centos 
 match address SitesVPN

interface GigabitEthernet0/1
 ip address 192.168.10.10 255.255.255.0
 ip nat outside
 ip virtual-reassembly in
 duplex auto
 speed auto
 crypto map centosipsec

Конфиги Openswan

ipsec.conf

version 2

config setup
        protostack=auto
        logfile=/var/log/pluto.log
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        fragicmp=yes
        oe=off
include /etc/ipsec.d/*.conf

office.conf:

conn nullgr
        left=10.10.10.10
        leftsubnet=192.168.1.10/32
        rightsubnet=172.16.100.0/24
        right=192.168.10.10
        authby=secret
        keyexchange=ike
        type=tunnel
        auto=start
        priority=1
        pfs=no
        ikev2=permit
        ike=3des-sha1-modp1024

ipsec.secret:

10.10.10.10 192.168.10.10: PSK "12345"

Ipsec на Centos запускается без ошибок.

На Cisco:

sh crypto isakmp sa
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
192.168.10.10   10.10.10.10    QM_IDLE           1212 ACTIVE

Но доступа к адресам vk и yandex нету.

 , , ,

perrfect
()

Перенаправить порты samba с помощью iptables

Сменил на сервере самба порты: 445 на 3333, 139 на 3000. Как смаунтить каталог на клиенте, чтобы не менять на нем порт и не указывать принудительно, а указать через iptables, forwarding этих портов?

Добавил правила для OUTPUT:

iptables -t nat -A OUTPUT -p tcp --dport 139 -j REDIRECT --to-ports 3000

iptables -t nat -A OUTPUT -p tcp --dport 445 -j REDIRECT --to-ports 3333

Для PREROUTING:

iptables -t nat -A PREROUTING -p tcp --dport 3000 -j REDIRECT --to 139

iptables -t nat -A PREROUTING -p tcp --dport 3333 -j REDIRECT --to 445

Но команда mount с клиента не проходит, в логах сервера ничего.

Если делать mount с указанием порта, тогда все проходит коректно:

mount -t cifs //192.168.200.20/test test -o username=test -o port=3333

 , ,

perrfect
()

Как сделать доступ к общей папке samba?

Добрый день.

Есть следующий конфиг samba. Каждий пользователь имеет свой домашний каталог.

[homes]

path = /data/USERS/%U

browseable = yes

writable = yes

valid users = %U

public = no

Есть общая директория - /data/SHARE, в которую нужно дать доступ нескольким пользователям, чтобы эта директория появилась в домашнем каталоге пользователя. Как можно это сделать?

Добавляю в конфиг samb-ы следующее, но общая директория не появляется.

[share]

path = /data/SHARE

browseable = yes

writable = yes

valid users = user1, user2

directory mask=0777

 , , ,

perrfect
()

Удалил логи LDAP

Ребята, срочно нужна помощь!!! На почтовом сервере закончилось место, удалил все лог файлы LDAP с директории /var/lib/ldap После этого не стартует slapd. Пишет: slapd does not work, but the pid file exists

Как восстановить работу почты?

 , ,

perrfect
()

Bacula. Ошибка Network error

Доброго времени суток. Помогите разобраться с резервным копированием Bacula. Настроил сервер. Прикрутил к нему Webmin. Нужно сделать бекап с другого ПК в локальной сети. На этом ПК настроил клиент. Запускаю задание, получаю следующую ошибку:

Fatal error: fd_cmds.c:319 Unimplemented backup level 67 C Fatal error: Network error with FD during Backup: ERR=Interrupted system call Fatal error: No Job status returned from FD.

Если нужно конфиги - предоставлю. Спасибо.

 ,

perrfect
()

Права доступа

Здравствуйте. Вопрос следующего характера. Есть корневой каталог, допустим TEST. В нем несколько каталогов и файлов, допустим TEST1, TEST2, test.txt. Нужно задать права доступа так, чтобы никто не смог удалить корневой каталог TEST, но смог в него додавать и удалять любые папки и файлы. Помогите с настройкой таких прав доступа. Спасибо.

 

perrfect
()

RSS подписка на новые темы