LINUX.ORG.RU

Сообщения KLfer

 

Nginx - разные root для разных location

Подскажите пожалуйста как сделать подобное:

http://my.server/file.n1      -> /aaa/bbb/ccc/file.n1
http://my.server/loc1/file.n2 -> /aaa/bbb/ccc/loc1/file.n2
http://my.server/loc2/file.n3 -> /ddd/eee/fff/file.n3 (не это: /ddd/eee/fff/loc2/file.n3)

То есть, если в uri указан каталог «loc2», то нужно из uri убрать этот каталог и использовать другой location.

Вот так не работает:

    server {
        root /aaa/bbb/ccc;
        location / {
            ...
        }
        location /loc2 {
            rewrite ^/loc2/(.*) $1 last;
            root /ddd/eee/fff;
            ...
        }

 

KLfer
()

FTP за NAT на нестандартном порту

Шлюз на Debian 7.11 (3.2.0-4-686-pae), iptables v1.4.14.

ip внешнего интерфейса: 1.1.1.1

ip внутреннго интерфейса: 192.168.1.1

Внутри локальной сети работает ftp-сервер, для которого нужно организовать доступ снаружи.

ip ftp-сервера во внутренней сети: 192.168.1.55

Порт ftp-сервера во внутренней сети: 51

Вывод lsmod | grep ftp

nf_nat_ftp             12420  0
nf_conntrack_ftp       12533  2 nf_nat_ftp
nf_nat                 17913  2 iptable_nat,nf_nat_ftp
nf_conntrack           43121  9 nf_conntrack_ipv4,nf_nat,iptable_nat,xt_conntrack,xt_state,nf_conntrack_ftp,nf_nat_ftp,xt_CT,nf_conntrack_netlink

Вот так не работает:

iptables -t raw -A PREROUTING --dst 1.1.1.1   -p tcp --dport 55555 -j CT --helper ftp
iptables -t nat -A PREROUTING -i ext --dst 1.1.1.1 -p tcp --dport 55555 -j DNAT --to-destination 192.168.1.55:51

Управляющее соединение открывается, но соденение для потока данных нет. conntrack -E expect ничего не показывает.

Если переделать, чтобы порт ftp-сервер был стандартным (настройки ftp-сервера и настройки iptables), то все работает:

iptables -t nat -A PREROUTING -i ext --dst 1.1.1.1 -p tcp --dport 55555 -j DNAT --to-destination 192.168.1.55:21

Подскажите пожалуйста какие нужны настройки, чтобы сделать доступным ftp-сервер, работающий на нестандартном порту?

 , ,

KLfer
()

Не стартует автоматически при загрузке операционки демон knockd

Не стартует автоматически при загрузке операционки демон knockd

Debian GNU/Linux 9.8 (stretch)

Linux gw 4.9.0-8-686-pae #1 SMP Debian 4.9.144-3.1 (2019-02-19) i686 GNU/Linux

Содержимое конфигов:

/etc/default/knockd

# control if we start knockd at init or not
# 1 = start
# anything else = don't start
# PLEASE EDIT /etc/knockd.conf BEFORE ENABLING
START_KNOCKD=1

# command line options
#KNOCKD_OPTS="-i eth1"
KNOCKD_OPTS="-v -i ext"

/etc/knockd.conf

[options]
        UseSyslog

[RDP01]
    Sequence    = 27000:udp,27001:udp,27002:udp
    Seq_Timeout = 7
    Command     = /sbin/ipset add knock_hosts_set %IP%

/lib/systemd/system/knockd.service

[Unit]
Description=Port-Knock Daemon
After=network.target
Documentation=man:knockd(1)

[Service]
EnvironmentFile=-/etc/default/knockd
ExecStart=/usr/sbin/knockd $KNOCKD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
SuccessExitStatus=0 2 15
ProtectSystem=full
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN

Restart=always
OOMScoreAdjust=-100

Состояние сервиса сразу после загрузки операционки:

systemctl status knockd

● knockd.service - Port-Knock Daemon
   Loaded: loaded (/lib/systemd/system/knockd.service; static; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:knockd(1)

systemctl is-enabled knockd

static

systemctl is-active knockd

inactive

Состояние сервиса после его запуска вручную:

systemctl status knockd

● knockd.service - Port-Knock Daemon
   Loaded: loaded (/lib/systemd/system/knockd.service; static; vendor preset: enabled)
   Active: active (running) since Sun 2019-03-31 09:25:20 MSK; 5s ago
     Docs: man:knockd(1)
 Main PID: 681 (knockd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/knockd.service
           └─681 /usr/sbin/knockd -v -i ext

Mar 31 09:25:20 gw systemd[1]: Started Port-Knock Daemon.
Mar 31 09:25:20 gw knockd[681]: listening on ext...
Mar 31 09:25:20 gw knockd[681]: starting up, listening on ext

Попробовал выполнить knocking - knocking работает:

systemctl status knockd

● knockd.service - Port-Knock Daemon
   Loaded: loaded (/lib/systemd/system/knockd.service; static; vendor preset: enabled)
   Active: active (running) since Sun 2019-03-31 09:25:20 MSK; 53s ago
     Docs: man:knockd(1)
 Main PID: 681 (knockd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/knockd.service
           └─681 /usr/sbin/knockd -v -i ext

Mar 31 09:26:00 gw knockd[681]: 192.168.111.12: RDP01: Stage 2
Mar 31 09:26:00 gw knockd[681]: 192.168.111.12: RDP01: Stage 2
Mar 31 09:26:01 gw knockd[681]: 192.168.111.12: RDP01: Stage 3
Mar 31 09:26:01 gw knockd[681]: 192.168.111.12: RDP01: OPEN SESAME
Mar 31 09:26:01 gw knockd[681]: RDP01: running command: /sbin/ipset add knock_hosts_set 192.168.111.12
Mar 31 09:26:01 gw knockd[681]: 192.168.111.12: RDP01: Stage 3
Mar 31 09:26:01 gw knockd[681]: 192.168.111.12: RDP01: OPEN SESAME

Подскажите пожалуйста почему knockd не стартует автоматически???

 , ,

KLfer
()

Разъясните работу knockd

Конфиг knockd:

[CFG01]
        sequence        = 27000:udp,27001:udp,27002:udp
        seq_timeout     = 7
        command         = /sbin/..........

Настройки iptables:

/sbin/iptables -A INPUT -p udp -m multiport --dports 27000,27001,27002,27003,27004 -j LOG  --log-prefix "KNOCK packets"
/sbin/iptables -A INPUT -p udp -m multiport --dports 27000,27001,27002,27003,27004 -j DROP

Через nping посылаю одиночные пакеты на порты 27000-27005.

В логе получаю сообщения:

... KNOCK packets ... PROTO=UDP ... DPT=27000 ...
... KNOCK packets ... PROTO=UDP ... DPT=27001 ...
... KNOCK packets ... PROTO=UDP ... DPT=27002 ...
... KNOCK packets ... PROTO=UDP ... DPT=27003 ...
... KNOCK packets ... PROTO=UDP ... DPT=27004 ...

Здесь при поступлении комбинации пакетов запуск команды из конфига knockd выполняется, также появляются записи в логе от iptables.

Т.е. насколько я вижу, knockd работает как-то прозрачно для iptables (да и вообще для сети)?

Я сначала полагал, что knockd тупо открывает на прослушку заданные в конфиге порты и поэтому эти порты нужно пропускать в iptables...

Но реально получается, что knockd как-то получает сетевые пакеты раньше чем iptables?

Проясните пожалуйста эту тему!

 ,

KLfer
()

Выбор файловой системы

Подскажите пожалуйста, какая файловая система наиболее устойчивая к сбоям питания?

 

KLfer
()

SIP - автоответчик

Доброго времени суток!

Подскажите пожалуйста какой-нибудь софт, который может работать как SIP-автоответчик. Нужно: - записать входящий звонок, - работать в режиме 24x7, - иметь доступ к записям (файлам) звонков с другого компа.

Спасибо!

 ,

KLfer
()

iptables+ipset - счетчики записей

Не обновляются счетчики записей списка.

Создаю список и правило под него:

ipset create ip_set_01 hash:ip counters
iptables -t mangle -A PREROUTING -m conntrack --ctstate NEW -j SET --add-set ip_set_01 src

С компа 192.168.1.10 делаю TCP-ping на этот узел. Получаю:

root@debian8:~# iptables -t mangle --list PREROUTING -n -v
Chain PREROUTING (policy ACCEPT 364 packets, 25005 bytes)
 pkts bytes target     prot opt in     out     source               destination
   12   608 SET        all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW add-set ip_set_01 src
root@debian8:~# ipset list
Name: ip_set_01
Type: hash:ip
Revision: 3
Header: family inet hashsize 1024 maxelem 65536 counters
Size in memory: 8384
References: 1
Members:
192.168.1.10 packets 1 bytes 52

Еще раз делаю TCP-ping на этот узел. Получаю:

root@debian8:~# iptables -t mangle --list PREROUTING -n -v
Chain PREROUTING (policy ACCEPT 392 packets, 26673 bytes)
 pkts bytes target     prot opt in     out     source               destination
   15   760 SET        all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW add-set ip_set_01 src
root@debian8:~# ipset list
Name: ip_set_01
Type: hash:ip
Revision: 3
Header: family inet hashsize 1024 maxelem 65536 counters
Size in memory: 8384
References: 1
Members:
192.168.1.10 packets 1 bytes 52

Видно, что счетчик правила увеличивается, а счетчик записи ipset не увеличивается.

Подскажите пожалуйста, при каких условиях увеличивается счетчик записи ipset?

 ,

KLfer
()

Iptables - настройка nat

Есть внутри локальной сети некий сервер на адресе $SOME_SERVER_LOC_IP и на порту $SOME_SERVER_LOC_PORT

Делаю проброс портов, чтобы выставить его в инет:

/sbin/iptables -t nat -A PREROUTING -i $INET_IFACE --dst $INET_IFACE_IP -p tcp --dport $SOME_SERVER_EXT_PORT
    -j DNAT --to-destination $SOME_SERVER_LOC_IP:$SOME_SERVER_LOC_PORT

До кучи делаю еще один nat-инг, чтобы сервер получал запросы с локальных адресов, а не с инетных (чтобы все внутри локалки ходило с локальными адресами):

/sbin/iptables -t nat -A POSTROUTING -o $LOCAL_IFACE --dst $SOME_SERVER_LOC_IP -p tcp --dport $SOME_SERVER_LOC_PORT
    -j SNAT --to-source $LOCAL_IFACE_IP

Но тут берут сомнения.. Допустим, к серверу обращаются два клиента. Они у себя открывают сокеты для обращения к серверу:

<ip-клиента1>:<порт-на-клиенте1> <-> <ip-сервера>:<порт-сервера>
<ip-клиента2>:<порт-на-клиенте2> <-> <ip-сервера>:<порт-сервера>

а что будет, если вдруг <порт-на-клиенте1> и <порт-на-клиенте2> будут одинаковыми???

например:

клиент1: 1.1.1.1:38454
клиент2: 2.2.2.2:38454
роутер: снаружи: 7.7.7.7, изнутри: 192.168.10.254, порт сервера снаружи: 80
сервер: 192.168.10.10, порт сервера внутри локалки: 8080

на роутер приходят пакеты:

1.1.1.1:38454 -> 7.7.7.7:80
2.2.2.2:38454 -> 7.7.7.7:80

после nat-a в prerouting будут такие пакеты:

1.1.1.1:38454 -> 192.168.10.10:8080
2.2.2.2:38454 -> 192.168.10.10:8080

после nat-a в postrouting будут такие пакеты:

192.168.10.254:38454 -> 192.168.10.10:8080
192.168.10.254:38454 -> 192.168.10.10:8080

т.е. на сервер придут два разных пакета, у которых адрес и порт отправителя одинаковые.

Iptables умеет как-то «красиво» обрабатывать эту ситуацию??

 ,

KLfer
()

Настройка загрузки правил iptables

Установлен Debian 7.3. В компе стоят три сетевухи – одна для внутренней сети и две для двух внешних сетей.

Сделал как написано здесь - https://wiki.debian.org/iptables

Сделал скрипт «set-iptables-rules» с таким содержимым:

#!/bin/bash
/sbin/iptables-restore < /etc/iptables-rules 

Поместил его в каталог «/etc/network/if-pre-up.d/»

Оказалось, что скрипт загрузки правил iptables выполняется несколько раз (для всех сетевух, для loopback-интерфейса и еще раз с неким именем интерфейса «--all»).

IFACE=--all
IFACE=lo
IFACE=eth0
IFACE=eth1
IFACE=eth2 

Получается правила будут грузиться всякий раз когда «дергается» какой-либо интерфейс. А если у одного из провайдеров проблемы с оборудованием и линк до него постоянно падает/поднимается? При этом получается из-за проблем у одного провайдера мы «дергаем» и все остальные сетевые подключения.

А вот здесь - http://debian-handbook.info/browse/stable/sect.firewall-packet-filtering.html написано, что правила iptables нужно грузить через параметры /etc/network/interfaces. Но это получается схема аналогичная предыдущему варианту.

Есть еще один официальный вариант - предлагаемый на офсайте пакет iptables-persistent. Он грузит правила из сценариев инициализации.

В итоге у меня возникли вопросы:

1) Подскажите пожалуйста как наиболее корректно грузить правила iptables??

2) Подскажите, если грузится правило iptables, в котором используется некий сетевой интерфейс (-i/-o eth0), а этот интерфейс в момент загрузки правила еще не инициализирован, то как это может повлиять на загрузку (и работу) правила?? (а тем более, если я переименовал интерфейс через «/etc/udev/rules.d/70-persistent-net.rules»)

 , ,

KLfer
()

Debian – настройка сети

Вот здесь - INTERFACES(5) написано буквально следующее:

The ifup and ifdown programs work with so-called «physical» interface names. These names are assigned to hardware by the kernel.

Unfortunately it can happen that the kernel assigns different physical inter-face names to the same hardware at different times; for example, what was called «eth0» last time you booted is now called «eth1» and vice versa.

This creates a problem if you want to configure the interfaces appropriately. A way to deal with this problem is to use mapping scripts that choose logical interface names according to the properties of the interface hardware.

See the get-mac-address.sh script in the examples directory for an example of such a mapping script. See also Debian bug #101728.

Т.е. получается я не смогу корректно настроить iptables?

Я так понимаю надо использовать некое маппирование названий физических интерфейсов в некие логические названия (т.е. описанные в этом man-е директивы «mapping eth0...»)??

Я правильно понял эту тему? Не могли бы вы дать какие-либо примеры настройки??

 ,

KLfer
()

Bash - чтение строк из файла

Надо прочитать строчки из файла без учета пустых строк и комментариев.

вот так:

while read line; do
  echo "[$line]";
done < ./host_list

читает все подряд (и пустые строки и комментарии)

Подскажите пожалуйста как сделать??

 ,

KLfer
()

Apache 2.4.2 - аутентификация через digest и dbm

Использую Apache 2.4.2 под виндой. Дистрибутив Apache Lounge (http://www.apachelounge.com/). Хочу сделать digest-авторизацию к каталогам сайта с использованием базы данных dbm. Все нужные модули подключены: mod_authn_core.so mod_auth_basic.so mod_auth_digest.so mod_authn_dbm.so

Файл .htaccess:

AuthType Digest AuthName «user1 realm» AuthDigestProvider dbm AuthDBMType default AuthDBMUserFile 1/p3 Require user user1

1/p3 – база данных паролей

Пытаюсь создать базу паролей. htdigest.exe – с базами данных не работает htdbm.exe – не работает с digest-авторизацией Пробую пока вручную через testdbm.exe (из набора утилит GnuWin32) и md5.exe. Пользователь и его realm – «user1:user1 realm» Пароль - 123 Получаю хеш - 299CAE02BEA2F270F0077B5A1772E734

В testdbm.exe создаю запись: Ключ - «user1:user1 realm» Данные – «299CAE02BEA2F270F0077B5A1772E734» Все вроде получается. При заходе в защищенный каталог на сайте выводится окно запроса пароля, realm выводится правильный. Ввожу логин - user1, пароль – 123, но не пускает!

В error.log появляется такая запись:

[Wed Jun 06 15:57:49.389625 2012] [auth_digest:error] [pid 3108:tid 1328] [client 127.0.0.1:2071] AH01790: user `user1' in realm `user1 realm' not found: /01, referer: http://127.0.0.1/

В базе данных логин/хеш есть – проверял утилитой testdbm.exe. /01 - запароленный каталог на веб-сайте

В основном конфиге на каталог веб-сайта стоит опция:

AllowOverride AuthConfig

KLfer
()

Какие средства для системного программирования есть под Linux?

Очень интересуют описания, сравнения, отзывы о качестве и удобстве.

KLfer
()

Работа со спец. железом

Подскажите в общем плане как под Linux может реализовываться работа со специализированными платами типа спецвычислителей, плат цифровой обработки сигналов под PCI шину??? Т.е. общее представление как это может быть организовано.

KLfer
()

Реализация потоков в Linux

Здравствуйте, уважаемое Linux-сообщество!!!

Начал изучать программирование под Linux. До настоящего времени программировал под Windows. Сейчас изучаю материал по разработке многопоточных приложений. Но как-то все туманно по этой теме. Как я понял, есть стандарт на API поддержки потоков &#8211; POSIX 1996. Затем наткнулся на инфу о библиотеках реализации неких пользовательских потоков. Затем слышал, что реализация поддержки многопоточности под Linux несколько кривовато, подглючивают проги, реализованные с использованием многопоточности.

Подскажите, на что ориентироваться в этом вопросе??? Помогите пожалуйста дополнительной инфой и рекомендациями! Хотелось бы иметь возможность работы с потоками как это реализовано в Windows, т.е. потоки работают в рамках одного процесса (используют одно адресное пространство), потоки диспетчируются ядром, какие-либо системные вызовы в одном потоке никак не влияют на другие потоки, потоки располагают достаточными средствами синхронизации (хотя бы какие-нибудь критические секции) и т.д.

Также для меня важно использовать наиболее надежный вариант, чтобы проги ни дай бог не повели себя неадекватно. Работать собираюсь под дистрами RedHat и CentOS.

KLfer
()

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