LINUX.ORG.RU

Сообщения hellstad

 

Медленное разрешение имен

Столкнулся со странной проблемой. На компьютере медленно отрабатывает разрешение доменых имен при скачке из интернета. Причем так себя ведут и wget и curl и функции вызываемые из php. При этом nslookup и Ping отрабатывает мгновенно, а wget висит на разрешении имени. DNS в resolv.conf прописывал разные - локальный, провайдера, гугловский, яндекса. Если прописать хост в /etc/hosts отрабатывает мгновенно. OS - древняя gentoo, не обновлялась наверное с 2012.

Куда копать?

cat /etc/nsswitch.conf  | grep host
hosts:       files dns
external etc # time nslookup yandex.ru
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   yandex.ru
Address: 77.88.55.55
Name:   yandex.ru
Address: 5.255.255.5
Name:   yandex.ru
Address: 5.255.255.55
Name:   yandex.ru
Address: 77.88.55.66


real    0m0.023s
user    0m0.000s
sys     0m0.000s

external etc # time ping -c 1 yandex.ru
PING yandex.ru (5.255.255.55) 56(84) bytes of data.
64 bytes from yandex.ru (5.255.255.55): icmp_req=1 ttl=53 time=16.9 ms

--- yandex.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 16.998/16.998/16.998/0.000 ms

real    0m0.084s
user    0m0.000s
sys     0m0.000s

external etc # time wget yandex.ru
--2016-02-19 13:59:59--  http://yandex.ru/
Распознаётся yandex.ru... 77.88.55.55, 5.255.255.5, 5.255.255.55, ...
Устанавливается соединение с yandex.ru|77.88.55.55|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 302 Moved temporarily
Адрес: http://www.yandex.ru/ [переход]
--2016-02-19 14:00:09--  http://www.yandex.ru/
Распознаётся www.yandex.ru... 5.255.255.5, 77.88.55.66, 77.88.55.55, ...
Повторное использование соединения с yandex.ru:80.
Запрос HTTP послан, ожидается ответ... 302 Found
Адрес: https://www.yandex.ru/ [переход]
--2016-02-19 14:00:15--  https://www.yandex.ru/
Устанавливается соединение с www.yandex.ru|5.255.255.5|:443... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 Ok
Длина: 63341 (62K) [text/html]
Saving to: «index.html.2»

100%[===================================================================================================================================================================================================>] 63,341      --.-K/s   в 0.04s

2016-02-19 14:00:15 (1.59 MB/s) - «index.html.2» saved [63341/63341]


real    0m15.430s
user    0m0.000s
sys     0m0.020s

 

hellstad
()

Опять два канала и CONNMARK

Заранее прошу простить за очередное поднятие этого вопроса...
Два канала vlan1, vlan2. eth0 - локалка, 192.168.4.225. 192.168.4.99 - «И.О. сервера в DMZ»

Надо - разные типы траффика в разные каналы.

# ip rule list
0: from all lookup local
100: from all fwmark 0xa lookup T1
101: from all fwmark 0x14 lookup T2
200: from 178.76.236.86 lookup T2
201: from 178.76.236.82 lookup T1
32766: from all lookup main
32767: from all lookup default

# ip route show table T1
192.168.4.0/24 dev eth0 proto kernel scope link src 192.168.4.225
127.0.0.0/8 dev lo scope link
default via x.x.x.81 dev vlan1
# ip route show table T2
192.168.4.0/24 dev eth0 proto kernel scope link src 192.168.4.225
127.0.0.0/8 dev lo scope link
default via x.x.x.85 dev vlan2

# iptables -S -t nat
-A PREROUTING -d x.x.x.82/32 -i vlan1 -p tcp -m tcp --dport 8100 -j DNAT --to-destination 192.168.4.99:22
-A PREROUTING -d x.x.x.86/32 -i vlan2 -p tcp -m tcp --dport 8100 -j DNAT --to-destination 192.168.4.99:22
-A POSTROUTING -s 192.168.4.99/32 -o vlan1 -j SNAT --to-source x.x.x.82
-A POSTROUTING -s 192.168.4.99/32 -o vlan2 -j SNAT --to-source x.x.x.86


# iptables -S -t mangle
-A PREROUTING -i vlan1 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i vlan2 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i eth0 -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i vlan1 -j CONNMARK --set-xmark 0xa/0xffffffff
-A PREROUTING -i vlan2 -j CONNMARK --set-xmark 0x14/0xffffffff
-A PREROUTING -s 192.168.4.99/32 -i eth0 -j CONNMARK --set-xmark 0x14/0xffffffff
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff


# ip route show
x.x.x.84/30 dev vlan2 proto kernel scope link src 178.76.236.86
x.x.x.80/30 dev vlan1 proto kernel scope link src 178.76.236.82
10.2.128.0/24 dev vlan3 proto kernel scope link src 10.2.128.2
192.168.4.0/24 dev eth0 scope link metric 3
127.0.0.0/8 via 127.0.0.1 dev lo
default via x.x.x.81 dev vlan1 metric 9
default via x.x.x.85 dev vlan2 metric 10

Исходящий траффик с 192.168.4.99 упорно идет через vlan1, игнорируя set-mark. Входящее соединение на x.x.x.81:8100 проходит успешно, х.86 - не инициируется. Согласно tcpdump SYN пакет доходит до конечного компа, но ответ на него теряется где то в дебрях...

Подскажите куда копать? 2 дня ковыряюсь уже, мозг устал. Вполне вероятно что ошибка на самом видном месте...
Да, ip rule add from 192.168.4.99 table T2 - работает, но не подходит, нужно разрулить соединения по портам + внешние.

hellstad
()

ldap - userPassword поменять значение на уже зашифрованное.

Есть 2 лдап каталога c разной структурой и файлик smbpasswd.

Есть некоторое количество юзеров, которым нужно создать учетки в новом лдап каталоге, и перенести их данные: ФИО, отдел... и пароли. Пароли - соответственно для pam (squid,ssh...) и smb авторизации.

С паролями косяк, поле userPassword при записи в него воспринимает текст, который туда хотят записать как plaintxt, и на всякий случай шифрует его. Но у меня пароли уже зашифрованы - в старом лдапе. ФИО и пароли из smbpasswd - все переносится нормально.

Изменять userPassword пробовал так:

ldapsearch -w .... -D "cn=manager,..." -h ... -b "dc=vip-driver,dc=ru" "(uid=$user)" > /tmp/ldap.txt
...skip...
userPassword=`cat /tmp/ldap.txt | grep userPassword | awk -F ": " {'print $2'}`
...skip...
echo replace: userPassword >> $ldif
echo userPassword: $userPassword >> $ldif
echo - >> $ldif

ldapmodify -c -f $ldif -w $ldap_pw -x -D $ldap_dn
и так перлом:
use Net::LDAP;
use Net::LDAP::Entry;

$ldap = Net::LDAP->new('127.0.0.1') or die "$@";
$mesg = $ldap->bind( 'cn=ldapadmin,dc=calculate', password => '...' );
$entry = Net::LDAP::Entry->new;

$mesg = $ldap->search( base => "ou=Users,ou=Samba,ou=Services,dc=calculate", filter => "uid=$user" );
$entry = $mesg->entry($index);

$entry->replace (
userPassword => '$pwd_hash'
);
$entry->update ( $ldap );

Вопрос знатокам: как внести в userPassword _уже_ зашифрованное значение?

Единственный способ который, как мне кажется, поможет - это slapcat + slapadd, но он мне не нравится тем, что придется ldiff редактировать вручную.

hellstad
()

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