LINUX.ORG.RU

Сообщения selivan

 

Альтернатива mtr с логированием времени

У провайдера периодически возрастает джиттер. Нужно собрать статистику за несколько дней, вроде такого: с 5 до 6 часов такого-то дня 5% пакетов проходили с задержкой более 300 мсек.

Есть ли какие-нибудь варианты, кроме ручного запуска mtr через соответствующие интервалы времени? Тем более что точной статистики по распределению он не даёт, Best/Wrost/Avg/Loss% и всё.

Ставить ради одиночной задачи тяжёлую артиллерию вроде Zabbix и накручивать специальные айтемы/триггеры не хочется.

 ,

selivan
()

Фриланс для админа - поделитесь опытом

Стал последнее время задумываться об этом варианте.

Как оно происходит у программеров я примерно представляю, даже краем глаза видел вживую со стороны заказчика: дали какую-то чётко очерченную задачу/подзадачу - работай. Задача сделана - все счастливы: исполнитель с деньгами, заказчик с решением.

Как это организуется в случае с админскими задачами? У нас ведь поддержка по сути ценнее, чем само решение.

Можно ли на этом заработать деньги, сравнимые с тем, что платят на постоянном рабочем месте? В Воронеже это ~40 т.р. в месяц плюс/минус десятка в зависимости от места работы. Ну и вообще - куда за задачами стоит ходить, куда не стоит, поделитесь опытом.

Знаю *nix и сети, с виндой обращаться умею, но глубоко никогда не копал. По английски нормально пишу и читаю, если надо - за пару месяцев заговорю.

З.Ы. Почему стал задумываться - нужно больше свободного времени(или хотя бы более гибкий график) на починить здоровье и некоторые другие задачи.

 ,

selivan
()

AUFS: first branch should be rw

Сейчас я пилю собственную сборку тонкого клиента. Идея велосипеда в том, что корневая ФС в squashfs + несколько оверлеев загружаются по сети, распаковывается в tmpfs, всё это объединяется в одну точку монтирования с помощью AUFS. Таким образом, можно присобачивать к сборке дополнительные конфиги/мелкие программы, не делаяя 100500 тыщ версий.

С убунты перешёл на Debian, потому что для некоторых тонких клиентов мне нужен Xorg через fbdev и uvesafb в качестве framebuffer. А в убунте его завести не удалось - plymouth мешается, и он принципиально неотрубаем :(

Вот такой кусок кастомного initrd прекрасно работал для убунты:

        echo "Mounting rootfs image to temp directory"
        mkdir -p /tmp/AUFS/rootfs
        mount -t squashfs -o loop '/tmp/rootfs.squashfs' /tmp/AUFS/rootfs || return $?
        echo "Mounting real root with aufs"
        #! problem
        mount -t aufs -o br=/tmp/AUFS/rootfs=ro none "${rootmnt}"
        echo "Creating tmpfs for moved mountpoints"
        mount -t tmpfs none "${rootmnt}"/AUFS
        echo "Moving rootfs mountpoint to directory in real root"
        mkdir "${rootmnt}"/AUFS/rootfs
        mount --move /tmp/AUFS/rootfs "${rootmnt}"/AUFS/rootfs
        ...
        # дальше работа с оверлеями

В Debian оно дохнет на следующей после комментария строчке с матюком «aufs au_opts_verify:1482:busybox[251]: first brunch should be rw».

Версия ядра в Ubuntu - 3.2, в Debian - 3.10

Кто-нибудь имел дело с AUFS? Куда копать?

 , , strange-magic

selivan
()

Трекбол Logitech M570: авто-настройка Wheel Emulation

ОС - (x)ubuntu 13.04 raring

Купил сабж. Достаточно удобно, правая рука болеть перестала. Покурив гугл, арч- и убунтувики, смог настроить его следующим образом:

num=$(xinput | grep  'Logitech Unifying Device' | sed 's/.*id=\([0-9]\+\).*/\1/g')
we="Evdev Wheel Emulation"
xinput set-prop $num "$we Button" 9
xinput set-prop $num "$we Axes" 6 7 4 5
xinput set-prop $num "$we" 1
xinput set-prop $num "$we Timeout" 0

Если зажать кнопку 9(верхняя маленькая), можно использовать его для прокрутки вверх-вниз и, чего мне так не хватало в обычных мышах - вправо-влево. Но скрипт надо запускать каждый раз при подключении мыши :( Создал в /use/share/X11/xorg.conf файл 60-m570-trackpoint.conf:

Section "InputClass"
        Identifier  "M570 Mouse"
        Driver "evdev"
        MatchProduct "Logitech Unifying Device"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Option "ButtonMapping" "1 2 3 4 5 6 7 8 9"
        Option "EmulateWheel" "true"
	Option "EmulateWheelTimeout" "0"
        Option "EmulateWheelButton" "9"
        Option "ZAxisMapping" "4 5"
        Option "XAxisMapping" "6 7"
EndSection

Не прокатывает, при переподключении параметры не подхватываются. Вывод xinput list-props 9(до работы скрипта): http://pastebin.com/2YawNBnP. Что я неправильно написал в конфиге? Или я его не туда положил? Но в убунте больше нигде нет xorg.conf.d

З.Ы. Вопросы на засыпку, в man evdev я этого не нашёл:

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

- можно ли настроить две кнопки: одна для включения только горизонтально скроллинга, другая - только вертикального?

selivan
()

Squid + win2008r2 kerberos authentification: suqid_kerb_auth не хочет видеть keytab

Пытаюсь настроить в squid авторизацию через Kerberos. Контроллер домена win2008r2, уровень домена win2008r2.

Ubuntu 12.04 Squid 3.1 AppArmor выключен

Получаю keytab на контроллере домена:

ktpass -princ HTTP/webproxy.domain.ru@DOMAIN.RU  -mapuser webproxy_auth@DOMAIN.RU -crypto ALL -pass "******" -ptype KRB5_NT_PRINCIPAL -out HTTP_webproxy.domain.ru.keytab

Копирую на сервер, меняю владельца на proxy:proxy и права на 640, проверяю:

kinit -V -k -t /etc/squid3/HTTP_webproxy.keytab HTTP/webproxy.domain.ru
...
Authenticated to Kerberos v5

/etc/krb5.conf:

[libdefaults]
        default_realm = DOMAIN.RU
        dns_lookup_kdc = yes
        dns_lookup_realm = yes
        default_keytab_name = HTTP_webproxy.domain.ru.keytab
        kdc_timesync = 1
        ticket_lifetime = 24h
        forwardable = true
        proxiable = true

        # for win2008
        default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

[realms]
DOMAIN.RU = {
        kdc = dc2.domain.ru
        default_domain = domain.ru
        admin_server = dc2.domain.ru
}

[domain_realm]
        .domain.ru=DOMAIN.RU
        domain.ru=DOMAIN.RU

/etc/samba/smb.conf:

[global]

security = ads
workgroup = DOMAIN
realm = DOMAIN.RU

encrypt passwords = yes
netbios name = %h
server string = %h server (Samba, Ubuntu)
...
dns proxy = no
socket options = TCP_NODELAY


squid.conf:
# GSS_C_NO_NAME = any entry from keytab is allowed
auth_param negotiate program /usr/local/bin/negotiate_wrapper -d --ntlm /usr/bin/ntlm_auth --diagnostics --helper-protocol=squid-2.5-ntlmssp --domain=DOMAIN.RU --kerberos /usr/lib/squid3/squid_kerb_auth -d -i -s GSS_C_NO_NAME
# maximum number of authenticator processes to spawn
auth_param negotiate children 10
auth_param negotiate keep_alive off

http_access allow AUTH
http_access deny all

/etc/default/squid3(не было - создал):

KRB5_KTNAME=/etc/squid3/HTTP_webproxy.keytab

/etc/init/squid3.conf:

env KRB5_KTNAME="/etc/squid3/HTTP_webproxy.keytab"

/etc/init.d/squid3:

KRB5_KTNAME=/etc/squid3/HTTP_webproxy.keytab
export KRB5_KTNAME

В консоли, где я это проверяю:

export KRB5_KTNAME=/etc/squid3/HTTP_webproxy.keytab

Запускаю squid3 -d -N, в браузере(IE10 на Windows 2008r2) получаю постоянные окошки аутентификации, в cache.log:

squid_kerb_auth: ERROR: gss_accept_sec_context() failed: Unspecified GSS failure.  Minor code may provide more information.
authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned 'BH gss_accept_sec_context() failed: Unspecified GSS failure.  Minor code may provide more information.

Делаю su proxy -c 'kinit -V -k -t /etc/squid3/HTTP_webproxy.keytab HTTP/webproxy.domain.ru' - всё начинает работать.

Где я ещё, мать его итить, не указал ему откуда брать keytab? 15-ый час на работе сижу, и только что обнаружил, что оно keytab жрать не хочет, @#$%^&$#!.

selivan
()

Шейпинг: не удаётся завести tc-drr

Собственно для tc есть queue discipline DDD(Dificite Round Robin) .

Вкратце - умеет то же, что HTB, но вместо того, чтобы заполнять корзины токенами с определённой скоростью, потом их оттуда вынимать и т. д., просто присваивает каждой каждой очереди некоторый Dificit Counter, при отправке пакета - уменьшает его на размер пакета. Если DC меньше размера пакета, увеличивает размер DC на заданный для очереди quantum и переходит к следующей. Таким образом, можно делить исходящий траффик в некотором отношении, не зная заранее ширину канала(что требуется для HTB). Подробнее: http://www.unix.com/man-page/linux/8/tc-drr/

Setup: две машины, 172.16.1.1 и 172.16.1.2.

На первой - слушаем траффик:

nc -l 8111
nc -l 8112

На второй - проверяем скорость:

pv /dev/zero | nc 172.16.1.1 8111
pv /dev/zero | nc 172.16.1.1 8112

Пока скорость равная(pv - позволяет мерить скорость через pipeline). Добавляем на второй машине шейпер(сверху присобачен HTB для имитации ограничения скорости канала):

tc qdisc add dev eth0 root handle 1: htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc qdisc add dev eth0 parent 1:1 handle 2: drr
tc class add dev eth0 parent 2: classid 2:1 drr quantum 600
tc class add dev eth0 parent 2: classid 2:2 drr quantum 1400
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8111 0xffff classid 2:1
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 match ip dport 8112 0xffff classid 2:2

Скорость остаётся равной :( Куда копать?

 ,

selivan
()

Шейпинг трафика трафика без явного указания скорости канала

Можно ли, при помощи tc и чёрной магии, организовать разделение исходящего канала между разными классами траффика, например, в отношении 30/70, не зная заранее ширину канала? HTB требует точных цифр. CBQ не осилил, но судя по описанию - та же фигня.

 , ,

selivan
()

Что использовать для совместного хранения паролей?

Есть несколько человек и куча серверов/сервисов. Какой менеджер паролей использовать, чтобы открывший базу паролей юзер не лочил её на изменение? Каждый раз рассылать «ну кто там базу на запись открыл, отдайте» неудобно

 

selivan
()

Быстро выучить CCNA

Решил я сдать CISCO CCNA, взял их официальный курс «CCENT-CCNA ICND1 100-101 Official Cert Guide - 2013» и начал читать... книжка конечно полезная, но очень уж муторная, много воды и излишне подробного разжёвывания. Никто не знает, нет ли у них чего-нибудь типа методичек, чтобы было коротко и по делу?

 ,

selivan
()

Интеграция Bacula с Zabbix

Не удовлетворившись тем, что нарыл в интернетах, запилил свой собственный велосипед: https://github.com/selivan/bacula_zabbix_integration

Умеет:

  • Отдельные метрики для каждой Job. Нужно, если на один хост приходится более одной Job.
  • Автообнаружение новых Jobs, ручная настройка не требуется. Нужно, потому что если требуется ручная настройка, рано или поздно кто-нибудь добавит Job и забудет прописать в Zabbix.

Написано на питоне. Программировать я не умею, смотрится ужасно. Критика/комментарии/предложения приветствуются

selivan
()

Сисадмин: разочарование в профессии

Навеяло мне тут грустных мыслей... Решил немного их причесать и положить сюда для обсуждения и всяческого холивара. Если кому-то это поможет избежать моих ошибок - буду рад.

Работа админом толкает человека к универсальности, развитию сразу по многим направлениям. Служба каталогов, файл-сервер, веб-сервер, сервер системы контроля версий, база данных + бекап/восстановление и репликация, сетевое оборудование, мониторинг, немного телефонии, железо, некромантия(старое железо) ... Если у программистов в рабочей книжке обычно пишут «инженер-программист», то админ может требовать себе запись «программист-разнорабочий». И это очень плохо. Пусть есть два человека. Первый имеет объём знаний по пяти разным областям, допустим, равный условной единице. Второй - три условных единицы в одной области, и по одной в двух других.Суммарный объём их знаний одинаков. Первый стоит x денег, а второй - 3x. Потом первый повысил свою квалификацию во всех пяти областях до 2. Второй - повысил квалификацию в своей основной области до 8, не прогрессируя в остальных. Объём полученных ими новых знаний одинаков. Первый теперь стоит 2x, второй - 8x. Второй будет делать сложные и интересные задачи по специализации, развиваясь и получая удовольствие от работы. Первый будет служить «во-всех-бочках-затычкой».

Интересные задачи делают узкие специалисты. Нормальные деньги получают узкие специалисты. Это, на самом деле, тесно связанные между собой вещи: не всякая высокооплачиваемая работа интересна, но всякая интересная работа - высокооплачиваема. Правило имеет исключения, вроде развиливающихся предприятий оборонки, но речь сейчас не о них. Да, разумеется, много где требуются люди с широкой специализацией. Но если где-то нужен сетевик и, по совместительству, DBA - значит там нужен не очень сильный сетевик и не слишком хороший DBA. На уровне «лишь бы работало». Потому что эта контора не может себе позволить большее, ну или не хочет - если это не основное направление её деятельности. Если бы там были серьёзные задачи - этих двоих набирали бы по отдельности.

Абсолютная специализация, конечно, тоже плохо. Во-первых, специалист по закручиванию семиугольной нижней гайки потеряет работу, когда такие гайки выпускать перестанут. Во-вторых, многие области IT сильно связаны между собой, поэтому результат работы сферического спеца в вакууме, не знакомого ни с одной из смежных областей, просто невозможно никуда приткнуть. Но именно знакомства, более или менее поверхностного, вполне достаточно. Дальнейшее углубление в смежные темы - потеря времени, которое можно было потратить на то, чем занимаешься. Просто надо осваивать свою область чуть шире, чем контекст конкретных узких задач, и всё будет хорошо. Не думаю, что нормальный DBA, всю жизнь работавший с MS SQL, после внезапного наступления вендокапца :) испытает особые трудности с переползанием на Oracle.

Когда на 4 курсе, не имея профильного образования, я пошёл работать за смешные копейки в тех. поддержку, занимаясь понемногу всем подряд - это была очень серьёзная ошибка. Если бы вместо этого я потратил пару месяцев на базовое обучение программированию, и пошёл junior-программистом, за те же смешные копейки, но с более узкой специализацией - сейчас я занимался бы гораздо более интересными и захватывающими вещами, причём за большие деньги.

selivan
()

Выбор GTD-планировщика/календаря

Чего хочется:

- Оффлайн, потому что не хочется отдавать все свои планы/задачи кому-то ещё
- Подзадачи
- Синхронизация через файлы, ибо Dropbox+encfs
- Нормальный календарь, вроде того, что в Lightning: http://www.mozilla.org/projects/calendar/lightning/screenshot.html
- Уведомления(мигать/орать из трея)
- Синхронизация с Android-приложением

Пока нашёл только ThinkingRock, но он тяжёлый, не очень удобный, календарь ужасен и уведомлений нет

 ,

selivan
()

Увеличить громкость звука в видео(ogv)

Нужно увеличить громкость звука в ogv-видео(записано с помощью GtkRecordMyDesktop). Если конвертировать с помощью ffmpeg - громкость увеличивается, но качество видео очень сильно падает:

ffmpeg -i lecture3_2013.16.09.ogv -vol 1280 lecture3_2013.16.09-loud.ogv

Попытка выдрать звук, сконвертировать и присобачить обратно на выходе так же даёт плохое качество видео:

ffmpeg -i lecture3_2013.16.09.ogv -vn audio.ogg
ffmpeg -i audio.ogg -vol 1280 audio-loud.ogg
ffmpeg -i lecture3_2013.16.09.ogv -i audio-loud.ogg lecture3_2013.16.09-loud.ogv

Как увеличить громкость звука, не убивая качество видео?

РЕШЕНИЕ:

ffmpeg -i lecture3_2013.16.09.ogv -vn audio.ogg
ffmpeg -i audio.ogg -vol 2048 audio-loud.ogg
ffmpeg -i lecture3_2013.16.09.ogv -vcodec copy -an lecture3_2013.16.09-nosound.ogv
ffmpeg -i lecture3_2013.16.09-nosound.ogv -i audio-loud.ogg -vcodec copy lecture3_2013.16.09-loud.ogv

Если звук предварительно не выдрать, останется звуковая дорожка из видео. Размер по сравнению с оригиналом увеличился на 14%, мне в данном случае это не критично.

Решение подсказал devl547.

 

selivan
()

tc не видит пакеты, маркированные -j MARK --set-mark

Есть сервер, на eth1 адрес 13.0.0.254/24, на eth0 адрес 172.20.203.4/24. Он роутит траффик между этими сетями. Задача: органичить скорость между сетями до 1 Мбайт/сек, не ограничивая траффик между самим сервером и хостами этих сетей(то есть резать всё, что проходит через FORWARD)

iptables -t mangle -A POSTROUTING -s 13.0.0.0/24 -d 172.20.203.0/24 -j MARK --set-mark 0x0001
iptables -t mangle -A POSTROUTING -s 172.20.203.0/24 -d 13.0.0.0/24 -j MARK --set-mark 0x0002

# eth1
tc qdisc add dev eth1 root handle 1:0 htb default 2

tc class add dev eth1 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps
tc class add dev eth1 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps
tc class add dev eth1 parent 1:1 classid 1:3 htb rate 1mbps

tc qdisc add dev eth1 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth1 parent 1:3 handle 3:0 sfq perturb 10

tc filter add dev eth1 parent 1:0 handle 1 fw flowid 1:3
tc filter add dev eth1 parent 1:0 handle 2 fw flowid 1:3

# eth0
tc qdisc add dev eth0 root handle 1:0 htb default 2

tc class add dev eth0 parent 1:0 classid 1:1 htb rate 1000mbps ceil 1000mbps
tc class add dev eth0 parent 1:1 classid 1:2 htb rate 999mbps ceil 1000mbps
tc class add dev eth0 parent 1:1 classid 1:3 htb rate 1mbps

tc qdisc add dev eth0 parent 1:2 handle 2:0 sfq perturb 10
tc qdisc add dev eth0 parent 1:3 handle 3:0 sfq perturb 10

tc filter add dev eth0 parent 1:0 handle 2 fw flowid 1:3
tc filter add dev eth0 parent 1:0 handle 1 fw flowid 1:3

Не режет. Если в начале поставить

tc qdisc add dev eth1 root handle 1:0 htb default 3
tc qdisc add dev eth0 root handle 1:0 htb default 3
, то режет, то есть проблема именно в настройках фильтров.
iptables -L -v -n -t mangle
показывает, что пакеты через правила MARK проходят. Попытки маркировать пакеты не в POSTROUTING, а в PREROUTING и в FORWARD не помогли.

Фильтры:

tc -s -d -r filter show dev eth0
filter parent 1: protocol [768] pref 49151 fw
filter parent 1: protocol [768] pref 49151 fw handle 0x1 classid 1:3
filter parent 1: protocol [768] pref 49152 fw
filter parent 1: protocol [768] pref 49152 fw handle 0x2 classid 1:3

tc -s -d -r filter show dev eth1
filter parent 1: protocol [768] pref 49151 fw
filter parent 1: protocol [768] pref 49151 fw handle 0x2 classid 1:3
filter parent 1: protocol [768] pref 49152 fw
filter parent 1: protocol [768] pref 49152 fw handle 0x1 classid 1:3

Куда копать?

 

selivan
()

OpenVPN bridge: удалённые клиенты не видят локальных

Конфигурация:

Debian 6.0 Squeeze

OpenVPN 2.2.1(from backports)

Задача - соединить удалённых клиентов с локальной сетью так, чтобы у них были одинаковые сеть/маска. Я использую OpenVPN TAP интерфейс, соединённый с помощью bridge с ethernet-интерфейсом в локальную сеть. Ethernet-интерфейс - bond0.200. Это 200 VLAN над bond-объединением 2-х обычных интерфейсов(bond-mode balance-alb)

И локальные, и удалённые клиенты могут пинговать и обмениваться данными с сервером, но не пингуют друг друга.

С помощью tshark видно, что пакеты, отправленные удалённым клиентом локальному, появляются в tap200 и br200, но не появляются в bond0.200. При этом MAC-адрес локального клиента есть у удалённого клиента в кеше arp, и наоборот О_о

Фаервол/антивирус вырублены.

MTU на eth2, tap200, bond200 совпадают: 1500.

Куда копать дальше?

/proc/sys/net/ipv4/ip_forward = 1

/etc/network/interfaces:

auto bond0.200
iface bond0.200 inet manual
      vlan_raw_device bond0
      up ifconfig bond0.200 0.0.0.0 promisc up

auto br200
iface br200 inet static
      bridge_ports bond0.200
      bridge_stp off
      bridge_fd 1
      address 172.20.200.2
      netmask 255.255.255.0
      post-up ifconfig br200 promisc

/etc/openvpn/server.conf:

mode server
tls-server
port *****
proto tcp-server
dev tap200

script-security 2

up /etc/openvpn/bridge-start
down /etc/openvpn/bridge-stop

ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
#crl-verify crl.pem

auth sha1
cipher AES-256-CBC

; !!!
; comp-lzo

tun-mtu 1500
mssfix 1450

client-config-dir /etc/openvpn/ccd
ccd-exclusive

client-to-client
keepalive 10 120

persist-key
persist-tun

status /var/log/openvpn/server-arm.status
log-append  /var/log/openvpn/server-arm.log

/etc/openvpn/ccd/client-arm23:

ifconfig-push 172.20.200.132 255.255.255.0

/etc/openvpn/bridge-start:

#!/bin/bash
#set -x
#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

br="br200"
tap="tap200"

openvpn --mktun --dev $tap
ifconfig $tap 0.0.0.0 promisc up

brctl addif $br $tap

exit 0

/etc/openvpn/bridge-stop:

#!/bin/bash
#set -x
####################################
# Tear Down Ethernet bridge on Linux
####################################

br="br200"
tap="tap200"

brctl delif $br $tap

openvpn --rmtun --dev $tap

exit 0

 ,

selivan
()

(Воронеж) [debian] [postgresql] [tomcat] [mikrotik] Системный администратор-проектировщик

Обязанности: Участие в разработке‚ документировании‚ настройке и сопровождении распределенной системы радиомониторингаю

График: полный рабочий день

Требования:

  • Уверенное знание Linux-систем (Debian) - настройка‚ администрирование‚ сборка‚ бекпортирование пакетов
  • Знание Windows - настройка‚ администрирование
  • Знание стека протоколов TCP/IP
  • Принципы работы Multicast-соединений
  • Знание DNS‚ DHCP‚ VLAN‚ VPN (OpenVPN).
  • SQL - базовое знание
  • Английский язык - достаточный для чтения технической документации
  • Знакомство с СУБД PostgreSQL- плюс
  • Виртуализация – KVM (Proxmox) - плюс
  • Знакомство с системами централизованного мониторинга (Zabbix) - плюс
  • Знакомство с системами централизованного бекапа (Bacula) - плюс
  • Знание ОС Mikrotik RouterOS – плюс
  • Знание Mercurial – плюс

    З/п: от 35 000 руб

    selivan5@yandex.ru

    Просьба писать на почту, форум смотрю нерегулярно

 , , ,

selivan
()

Apache LDAP авторизация 2-х AD trusted domains

Имеем: 2 домена AD, установлено взаимное доверие, пользователи одного могут авторизовываться в другом и наоборот. Apache с LDAP авторизацией. Вопрос: как сделать авторизацию на определённый Location так, чтобы там могли авторизовываться пользователи обоих доменов? Для одного домена всё выглядит просто:

Authtype Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthName "ENTER YOUR WINDOWS LOGIN"

AuthLDAPURL "ldap://dc:389/DC=domain,DC=name?sAMAccountName?sub?(objectClass=*)" NONE
AuthLDAPBindDN "cn=ldap_user,cn=Users,dc=domain.name"
AuthLDAPBindPassword "ldap_password"
require valid-user

А как сделать для двух не знаю. Пробовал

AuthBasicProvider ldap ldap
и потом указывать по два варианта AuthLDAPURL, AuthLDAPBindDN и AuthLDAPBindPassword - не подходит, последний вариант тупо перекрывает первый.

selivan
()

Веб-морда для kvm/libvirt

Задача - перевести реальные сервера на виртуалки. Т. к. нужны и винда, и линукс, Xen не вариант(да, есть какие-то паравиртуальные драйвера под винду, но в продакшен они пока не годятся и не скоро будут). Значит KVM. Хочется иметь возможность нормальной работы со снапшотами, производительность LVM при наличии снапшотов падает, и весьма печально - остаются qcow-диски. Virt-manager к сожалению есть только под Linux, а управлять всем этим счастьем надо удалённо, зачастую из-под винды - нужна веб-морда. Вопрос: что выбрать? Теперь о грустном: Proxmox VE работать со снапшотами не хочет - через интерфейс нельзя, если делать через qemu-консоль - виртуалка больше не заводится. Conviture вместо снапшота схораняет образ памяти и выключает виртуалку, снапшот диска не делает. Посоветуйте какой-нибудь вариант

selivan
()

Проблема: iproute2 и подключение через двух провайдеров

Реальные конфиги очень большие и тяжёлые, поэтому смоделировал проблему на виртуалках и пробую решить её там.

На шлюзе PROXY есть два подключения к интернету: eth1 и eth2. В качестве PROXY использовались Debian Lenny и CentOS 5.5, результат одинаковый.

Задача: выпускать компьютер HOST(10.10.0.68) в интернет через второе подключение, остальные компьютеры - через первое.

Настройки PROXY:

Интерфейсы:

lo 127.0.0.1/8
eth0 10.10.0.2/24     # локальная сеть
eth1 192.168.1.252/24 # провайдер, default gw 192.168.1.1
eth2 10.0.0.61/24     # провайдер, default gw 10.0.0.2

Правила роутинга:

# ip rule list
0:    from all lookup 255
100:    from all fwmark 0x2 lookup 100
32766:    from all lookup main
32767:    from all lookup default

Список маршрутов:

# ip route list
10.0.0.0/24 dev eth2 proto kernel scope link src 10.0.0.61 # интерфейс в интернет
92.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.252
10.10.0.0/24 dev eth0 proto kernel scope link src 10.10.0.2
default via 10.0.0.2 dev eth2

# ip route list table 100
192.168.1.0/24 dev eth1 scope link src 192.168.1.252
default via 192.168.1.1 dev eth1

Настройка iptables(SNAT и маркировка пакетов):

echo "1" > /proc/sys/net/ipv4/ip_forward

# NAT
# выпускаем локалку в интернет
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth1 -j MASQUERADE

# ROUTING

ip route flush table 100
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.252 table 100
ip route add default via 192.168.1.1  dev eth1 table 100

ip rule del pri 100
ip rule add fwmark 2 lookup 100 pri 100

# MARK RULES
iptables -t mangle -A FORWARD -s 10.10.0.68 -j MARK --set-mark 2
iptables -t mangle -A FORWARD -s 10.10.0.68 -d 127.0.0.0/8 -j MARK --set-mark 0
iptables -t mangle -A FORWARD -s 10.10.0.68 -d 10.0.0.0/8 -j MARK --set-mark 0
iptables -t mangle -A FORWARD -s 10.10.0.68 -d 192.168.0.0/16 -j MARK --set-mark 0
iptables -t mangle -A FORWARD -s 10.10.0.68 -d 172.16.0.0/12 -j MARK --set-mark 0

# COUNT RULES
iptables -t mangle -A POSTROUTING -m mark --mark 2 -j ACCEPT

ip route flush cache

Последнее правило заведено для проверки работы маркировки. Действительно, при прохождении пакета на внешние хосты его счётчик увеличивается, то есть маркировка выставлется верно. Все возможные модули со словом mark в названии загружены:

#lsmod | grep -i mark
xt_connmark             6209  0
xt_CONNMARK             6465  0
xt_CONNSECMARK          6465  0
xt_SECMARK              6852  0
xt_mark                 5953  1
xt_MARK                 6465  5
ip_conntrack           53281  8 xt_connmark,xt_CONNMARK,xt_CONNSECMARK,ipt_MASQUERADE,iptable_nat,ip_nat,ip_conntrack_netbios_ns,xt_state
x_tables               17349  14 xt_connmark,xt_CONNMARK,xt_CONNSECMARK,xt_SECMARK,xt_mark,xt_MARK,ipt_MASQUERADE,iptable_nat,ipt_REJECT,xt_state,ip_tables,ip6t_REJECT,xt_tcpudp,ip6_tables
Настройки HOST(10.10.0.68):

Интерфейсы:

eth0 10.0.0.68/24
lo 127.0.0.1/8
Список маршрутов:
#ip rule list
0:    from all lookup 255
32766:    from all lookup main
32767:    from all lookup default

Проверяем - не работает:

Запуск traceroute на HOST показывает, что трафик до 8.8.8.8(гуглёвский бесплатный DNS) всё равно идёт через 10.10.0.2 и потом 10.0.0.2, то есть через первого провайдера.

Проверяем работу второго провайдера:

Меняем на PROXY маршрут по-умолчанию на 192.168.1.1:

# ip route del default
# ip route add default via 192.168.1.1 dev eth1
Всё работает, и traceroute на HOST'е показывает, что пакеты идуит через 192.168.1.1.

В чём может быть проблема? Весь гугл облазил - вроде всё правильно. :( :( *смайлик, бьющийся головой об стену*

selivan
()

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