• ↓
  • ↑
  • ⇑
 
10:54 

Грабли и костыли.

Есть центральный офис. Есть филиальная сеть. Есть VPN. И есть м-ммм... разновсяческие провайдеры, в том числе и pptp'шники. В результате - есть локальная сетевуха со своим серым IP'шником, DNS'ами и "шлюзом по умолчанию" (Провайдеру, вестимо, лениво забивать route'ы для всех своих AC, список которых, к тому же может меняться - а DNS round-robin'ом выдает и все океюшки). Есть pptp-соединение до провайдера - опять таки, со своими DNS-серверами (Не спрашивайте меня "зачем"!) и своим шлюзом по умолчанию. И есть VPN-соединение до центрального офиса, опять же со своим DNS'ом и default gateway'ем (Хочется пустить I-net трафик филиальной сети через прозрачныйproxy центрального офиса с логгированием, фильтрацией, аутентификацией и прочими радостями жизни).
На выходе почему-то трабла - судя по всему не работает системный gethostbyname()/getaddrinfo() - сторонние программы не резолвят имена, а специализированные утилиты (Тот же nslookup) ответ дают. Метрики на маршрутах правильные (У VPN'а наименьшая, ага), dial-up connections в adapters&bindings на верху находятся, все пингуется-опрашивается-ходит, а gethostbyname как не работал, так и не работает :(.
В качестве временного "костыля" поднял non-transparent proxy для удаленных офисов и докрутил браузеры - но как-то не радует меня данное решение. Куды бечь, на что смотреть - Б-г знает, мне пока не ведомо :(.

@темы: Работа

10:13 

Еще немного о SAMBA'е...

... в качестве PDC. Bydefault'но samba пред(по)лагает использование roaming-профилей с указанием секции [homes] в smb.conf'е, раздачей домашних папок с соответствующими правами доступа (pam_mkhomedir спасает, если что ;)) и прочими радостями жизни, что нафиг никому не сдалось (Учитывая неискоренимую привычку большинства юзверей хранить стопицот фильмов, песен, фоточег и прочей фигни на рабочем столе). Есть проблЭма? Есть решение! man smb.conf называется :).
Читаем:
logon path blah-blah-blah Disable the use of roaming profiles by setting the value of this parameter to the empty string. For example, logon path = "".(C) Угу. Только не работает. Впрочем - и не должно, т.к. настройки в smb.conf'е перекрываются данными из "профиля пользователя" в tdb-backend'е а пользователи уже созданы. ОК. pdbedit -L -v, смотрим - ага, так и есть, logon path задан. pdbedit -r -u user -p "", проверяем... не-а. не работает. Странно. Гугль гугль ты могуч... ага, нас таких страдальцев до и больше - надо внимательней читать man'ы: "Warning Do not quote the value. Setting this as "\\%N\profile\%U" will break profile handling."(С) там же. Тут квотим, тут не квотим, там селедку завернули empty string обозначили... pdbedit -r -u user -p '' - и все работает. В smb.conf'е пишем просто logon path = - и все тоже работает!

@темы: FreeBSD, Работа

16:18 

Рабочее, матерное.

Какой трижды ...!!! сукин сын в мелкоцопте придумал скрывать панель "параметров" до нажатия кнопки ALT??? Почти час искал adapters&bindings! Найду - убью, в общем.

@темы: FreeBSD, Работа

14:13 

А мужики-то не знали!

Оказывается, в SAMBA'е еще со времен 3.0.11 появилась возможность делегировать управление и root'а маппить в samba-пользователя уже не надо - достаточно сделать net rpc rights list
и раздать соответствующие права из списка
SeMachineAccountPrivilege Add machines to domain
SeTakeOwnershipPrivilege Take ownership of files or other objects
SeBackupPrivilege Back up files and directories
SeRestorePrivilege Restore files and directories
SeRemoteShutdownPrivilege Force shutdown from a remote system
SePrintOperatorPrivilege Manage printers
SeAddUsersPrivilege Add users and groups to the domain
SeDiskOperatorPrivilege Manage disk shares
при помощи net rpc rights grant пользователь|группа <права> и будет у нас свое казино с блэк-джеком и шлюхами, a.k.a. NT4 Domain, управляемый "виндовыми" пользователями ))).

@темы: FreeBSD, Работа

14:12 

Окрошка:

Во времена оны плакался я, что в 8-ке, дескать, fdisk с bsdlabel'ом как-то "не так не работают" - что могу сказать сейчас? "Зато мы делаем танки!" Зато в 8.1 хорошо работает gpart, так что поднять поверх gmirror'а (mirror'им диски целиком) gjournal (С отдельным разделом под журнал) удалось без всяких танцев-с-бубнами и костылей, с первого захода, аминь, аминь, аминь.
С Б-жьей и Старших Товарищей помощью разрешился вопрос с триждыдолбанным KMS - данные его внутреннего LDAP'а вполне себе edit'ятся, но... ЧЕРЕЗ WEB-INTERFACE only ну или там через MS Аутглюк из-под админ-юзера (Кто, ну скажите мне, кто настраивает почту для admin-user'а?) !!! Повбывал бы, ей-ктулху.
Отдельные лучи поноса Intel'у - три пересборки ядра FreeBSD + полдня танцев-с-бубном прежде, чем выяснилось, что DG41CN AHCI НЕ поддерживает. Абыдна, да - 'device ahci' + 'opions ATA_CAM' мне, в общем-то, понравились...
Ах, да - еще себе в копилочку - практически случайно нашелся отличный (На первый взгляд!) эмулятор терминала - termit. Умеет работать с tab'ами, менять кодировку и... и больше ничего ). Из всех зависимостей - только что-то GTK'шное (Виджеты для терминала, вроде бы) - на вид именно то, что надо...

@темы: FreeBSD, Работа

16:29 

Я это самое...

... "десятиногое ракообразное". Криведко, в смысле. Решил поднять "собственное казино с блэк-джеком и шлюхами" собственный W2003SR2 для разбирательств с RADIUS'ом в тихих домашних условиях. Создаю VM'ку на virtualbox'е через консоль:
VboxManage createvm WSERVER --ostype Windows2003 --remember
VBoxManage modifyvm WSERVER --memory 2048 --acpi on --ioapic on --cpus 1 --hwvirtex on --hwvirtexecl on --boot1 dvd --boot2 disk --boot3 none --boot4 none --nic1 hostonly --hostonlyadapter1 vboxnet0
VBoxManage createhd --filename ./VHD/server.vhd --size 20 --remember
VBoxManage storagectl WSERVER --name hdd0 --add sata
VBoxManage storageattach WSERVER --storagectl hdd0 --port 0 --device 0 --type disk --medium ./VHD/server.vhd
VBoxManage storageattach WSERVER --storagectl hdd0 --port 1 --device 1 --type dvd --medium host:cd0
Буй! Не могу, говорит, приаттачить к данному контроллеру. К НЕданному scsi, например - тоже не смог. А вот к ide - самое оно.
VBoxManage storagectl WSERVER --name hdd1 --add ide
VBoxManage storageattach WSERVER --storagectl hdd1 --port 0 --device 0 --type dvd --medium host:cd0
Да, кстати, если кому интересно, чтобы подключить host drive во FreeBSD (И, наверное, не только ;)) нужно воткнуть atapicam, и раздать права на файлы устройств - закинуть юзера в группу operators и отредактировать devfs.conf, чтобы права раздавались при создании файлов
VBoxHeadless -s WSERVER -n -o - Запускаем!
Все хорошо, только демонстрационный диск с 2003 сервером не видится. Хм. Ставлю диск с Frenzy (LiveCD на базе Freebsd. заточенный под системное администрированике) - грузится. ЗАГОВОР! Ок, вынимаю диск - No bootable medium found
Дропаю VBoxHeadless, ставлю другой диск - то же самое. Монтирую образ - никак. Редактирую машинку, меняю контроллеры, танцую с бубном... ну НИКАК и все. Уже и DELAY на биосе в VB поменял, и тип меню сменил, и все что можно поотключал... полдня убил.
Потом цепляю в очередной раз VBoxHeadless с паролем "1" (Задолбало сто раз нормальное нечто вводить!)... а он меня с ним не пускает! Со старым... есть. Это жжж! не спроста! Смотрю в процессах... с-зззараза! VBoxHeadless, оказывается, только от консоли отвалился, а не дропнулся к чертям собачьим, как ему требовалось - в результате я полсуток коннектился к одной и той же машине!!! ЛЕЖАЩЕЙ машине, заметим.
Дропнул в процессах VBoxHeadless, запустил по новой - работает! Океюшки, живем!

@темы: FreeBSD, Работа

16:15 

Продолжение RADIUS'ной...

... истории. В логах периодически всплывает rad_init_send_request Failed: sendto -1: Permission denied. Такое ощущение, что он тупо не может создать сокет по одной из двух причин - либо IPADDR_ANY конфликтует с имеющимся в системе Jail'ом (Ну-ууу... вряд ли. Я бы понял, если бы jail не поднимался, или если бы все происходило изнутри jail'a - но в host-системе?), либо сокет пытается прибиндиться к одному из protected-портов sin_port=htons(0) - что тоже вряд ли, ибо mpd5 стартует все-таки от root'а...
Надо навтыкать всякого-разного debug'а в radlib.c и пересобрать mpd - но делать это на рабочей машине в рабочее же время как-то... не хочется. Впрочем, можно попробовать сменить destdir у порта и поставить еще одну версию... буду думать дальше.

@темы: FreeBSD, Работа

16:11 

Очередные грабли

FreeBSD 8.1. mpd 5.5. l2tp. Настроено. Работает. Вести mpd.secret достаточно быстро достает ;) решаю настроить аутентификацию через RADIUS.
На Windows 2003R2 с DC (Дети, НЕ ДЕЛАЙТЕ так! DC и RADIUS на одном компе - решение для нищебродов ;)) поднимаю IAS. Создаю клиента RADIUS, задаю shared secret, включаю подпись запросов, создаю политику доступа, применяю по nas_ip_address и nas_id, разрешаю доступ. В аттрибутах пользователя включаю все, что нужно ;).
Перехожу к mpd:
set radius config /usr/local/etc/radius.conf (Ибо нефиг палить пароли в конфигах ))
set auth enable radius-auth
set radius me
set radius identifier
set radius enable message-authentic
Перезапускаю, ломлюсь - фигу. В логах виндей - "неправильная подпись". ОК, снимаю галку с требованием подписи и выпиливаю message-authentic, а вот дальше начинается СТРАННОЕ.
В виндах - все ОК, юзверю разрешен доступ. tcpdump показывает, что ответ от IAS'a вполне себе прилетает, а в логах mpd - "No valid RADIUS response". Ага, думаю. Дело в радиус-атрибутах! Смотрю в доки по mpd - и впрямь, Framed-Protocol в respons'e нифига не поддерживается, а MS гордо шлет 'PPP'. ОК, выпиливаю нафиг все доп. атрибуты RADIUS'а в политике IAS'а. По tcpdump'у и впрямь видно, что ничего лишнего не шлется... вроде как. Результат тот же самый.
Многа думаю.

@темы: Работа, FreeBSD

16:50 

"Сколько не писали ИИ для БПЛА...

... , по странности налоговый отчет для 1С выходит."(С) Хрен знает, что там с ИИ и БПЛА твориться, но отечественный типа-бухгалтерский софт уныл настолько БЫЛИННО, что это уже не бага, а ФИЧА. Ей-ктулху, случайной такая рукожопость быть не может!
Писать софт под _конкретную версию_ _интернет-эксплохера_ или там _мысы ворда_, ставить отдельный редактор скриптов, печатать полученный результат при помощи проприетарной же компоненты левого производителя, умудряться лажать с _официальным дистрибутивом_ (Попадался диск с "Контуром" который отказывался генерить сертфикаты, например), на пустом месте рожать глюки (Две проги "одного КБ" не могут ужиться в одной винде - нивапрос!) и так далее и тому подобное. Контур-экстерн во всех ипостасях (Шоб им всем до конца жизни под ИЕ60 сидеть!) он же в "лайт" версии, "Отчет 200Хрень" (Та самая вордянка-с-макросами) "Налог-чего-то-там" (Фокспрошная муйня в девичестве), разновсяческие 1Сучьи бланкоформочки (Тысячи их!) и еще стопицот всяких приблуд от родного гос-ва родному бизнесу при поддержке родного же софтопрома - все, все, все унылое, шотрындец, мертворожденное еще на стадии зачатия, кривое, как жизнь гетмана Мазепы - и все никак не умирающее. Такое ощущение, что рождается половина этого трындеца даже не "студентом за червонец" а бомжом за бутылку, и чем оно уродливей - тем больше у него шансов "пойти в массы".
Вот ей-ктулху, за все время своей работы видел 1 (Прописью - ОДНО) кроссплатформенное "бизнесбухгалтерское-приложение" - банк-клиент чего-то там банка, написанное на java'е (Насчет остальных характеристик типа той же usability не уверен, ибо не работал) - остальное - какой-то невдолбический трындец. "Дайте-мне-доступ-ко-всей-системе-откройте-все-интернеты-поставьте-софта-тыщ-на-писят-пошаманьте-с-бубном-и-может-я-заработаю". Может, правда и нет.
И добро бы вся эта "франкенштейновость" была чем-то вроде *nix'вого скрипта - "куча мелких компонент, каждая из которых решает одну задачу, взаимодействующих стандартным образом при помощи стандартных интерфейсов" - нихуа. "Тут пишем, тут не пишем, тут софт проприетарный, сюда файлик выгружается, с этим при помощи win API работаем, там селедку завернули, причем не мы..." - в случае проблем все это не дебужится принципиально, официальным суппортом в том числе - судя по их методике работы у ребят просто лежат ДЛИННЫЕ списки багов, к которым приложены воооот такенные КОСТЫЛИ: "случилось то-то - делай так-то, ставь вот эту блуду", не помогло - "переставьте полностью на другом компьютере".
В общем, "Дякую тоби, оссподи, шо я не бухадмин", а то бы вымер уже, как те мамонты.

@настроение: Повбывал бы!

@темы: Жизнь, Работа

11:03 

Все через задницу...

... кроме клизмы. Для того, чтобы переименовать контроллер домена в MS AD надо:
netdomcomputername текущее_имя_компьютера /add:новое_имя_компьютера
netdomcomputername текущее_имя_компьютера /makeprimary:новое_имя_компьютера
netdomcomputername новое_имя_компьютера /remove:старое_имя_компьютера

Но если контроллер домена у вас единственный, то... вам нужно установить второй контроллер домена "После чего задача сводится к предыдущему варианту"(Ц) анекдот после чего задача нихрена не сводится к предыдущему варианту, не-ееет. Technet предлагает передать роли FSMO новому серверу, закинуть туда GC, понизить старый DC до состояния обычного сервера, переименовать его, и проделать всю процедуру в обратном порядке.
ОК. Что при этом делать с DNS, зоны которого интегрированы в AD? Поднимать DNS на "новом DC"? Таки не вариант, ибо он просит поставить диск, а физически сервак в тех еще долбенях... ОК, выносим зоны из AD, поднимаем, передаем, реплицируем, начинаем понижать... ужас-караул! Зоны только на нашем серваке, они нифига не реплицировались, мы все умрем! Формать-вашу-С:-комплит! Реплицирую ручками через ntdsutil. Понижаю сервак до простого сервера, ребут... а он, с-сссобака серая, не "ложиться" - все службы помЭрли, nmap пишет большую дулю, а пинги идут. А сервак, повторяю, в долбенях. Перемать-мать-мать.
Утром физический ребут - все ок. Переименуем, повышаем, передаем, реплицируем - все ОК. Начинаем понижать временного бедолагу. dcpromo - фига-с-два! Опять ругаемся на зоны в AD, которые нифига не реплицированы. Replmon - все ОК. С-сссзззаррраза! dcpromo /forceremoval + dcdiag /fix + ntdsutil = день-ночь-сутки-прочь.
Вгоняем зоны по новой в AD (Безопасных обновлений для), ставим Identity Management for Unix, IAS и начинаем, наконец-то, работать...

@настроение: Повбывал бы!

@темы: Работа

12:48 

Следующий well-known...

... способ интеграции с AD состоит в расширении схемы домена при помощи SFU (Для windows 2000(3)S, для 2003R2 - SUA, в 2008 вообще ничего ставить не нужно, нужно включить роль "Identity manager for unix") - "спасибо М-цопту за стандартизацию процесса", установке и настроке pam-и-nss_ldap.
Ну, надо, так надо - ставим SF(X) в виндах, edit'им юзверей, раздаем им необходимые параметры (Если юзверей много - проще скриптом, был у меня где-то выше пример работы С), создаем нового пользователя для bind'а к LDAP'у (Имя пользователя - на ангельской мове, чтобы с unicode'ом в cn'е не сталкиваться), задаем пассворду посекьюрней (Один черт, в плэйнтексте в файлике лежать будет ))) закидываем бедолагу в группу domain guests, вышвыриваем из 'domain users' (Той самой секурности для) - и с виндами покончено.
На никсах - ставим pam_ldap, nss_ldap, nscd (Не обязательно, но сильно-сильно желательно). Создаем в нужном месте (Поскольку PADL'овский ldap.conf с openldap'овским совпаают не во всем, нехудо бы при компиляции задать какой-нибудь левый путь для конфига - от греха подальше) ldap.conf плюс-минус следующего содержания:
uri ldap://наш_сервер/
base dc=наш,dc=домен
ldap_version 3
binddn наш_юзер@наш_домен
bindpw пассворда, соответственно
scope sub
pam_login_attribute msSFU30Name
pam_password ad
nss_base_passwd cn=куда_сложили,dc=наш,dc=домен?sub?(&(!(useraccountcontrol=514)(mail=*) #Отключаем вывод disabled-пользователей, выводим только пользователей с указанной электронной почтой.
nss_base_group cn=куда_сложили,dc=наш,dc=домен?sub
nss_map_objectclass posixAccount User
nss_map_attribute uid msSFU30Name
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_override_attribute_value loginShell '/bin/nologin' #Писать nologin в качестве соответствующего атрибута в AD может быть не совсем удобно - хрен знает, может в этой системе он 'nologin', а в соседней как раз нормальный юзверь? Ну или просто nologin не в /bin'е лежит ;). Так что - аккуратненько override'им под наши нужды.
nss_ьфз_attribute homeDirectory unixHomeDirectory #А вот тут override'ить уже не выйдет - а жаль. Придется, например, ln'ить /home на /var/mail - КОСТЫЛЬ! 0:)
nss_map_attribute gecos name
nss_map_attribute userPassword msSFU30Password
Правим /etc/nsswitch.conf:
passwd files cache ldap
group files cache ldap
Правим /etc/nscd.conf:
enable-cache passwd yes
enable-cache group yes
Правим pam-файл, вместо pam_ldap'а в auth вполне можно использовать тот же pam_krb5, ибо нефиг %).
Стартуем nscd, делаем getent passwd, работаем :).
Потенциальные грабли решения:
1) ldap.conf'овский override не поддерживает шаблоны, а использовать одни и те же значения на всех машинах сети может быть не слишком удобно. Предполагаемый костыль - расширять схему доп. аттрибутами и map'пить в разных серверах разные.
2) Не понятно, как быть с почтовыми псевдонимами - вести стандартный aliases.db ручками - таки костыль ).

Способ, в общем-то (Ну, хорошо - более, чем!) годный и в случае больших инсталляций (Несколько серверов + ...надцать рабочих станций под разл. рода *nix'ами) нечего лучше и искать не надо (Один раз расширил схему, один раз смастерил конфиги а потом знай-раскидывай их по нужным местам) но для "адын, савсэм адын" сервер хотелось бы что-нибудь попроще.

@темы: Работа

10:50 

Как известно, каждая проблема имеет решение -

- простое, понятное - и неправильное ;). Вот понадобился вам почтовый (SMTP, для ясности ;)) сервер с интеграцией в AD - родной виндовый, ессно, ффтопку, Sendmail туда же (Программа, конфиги которой нуждаются в компиляции существовать, имхо, не должна!) Courier MTA, кнечно, просто великолепно, но Maildir у них какой-то... подозрительный, Exim вы (Ну хорошо, я!) не знаете - "на трубе" остался Postfix.

Итак, что же первым приходит в голову при словах "интеграция в AD"? Правильно, samba winbind. Ставим postfix с sasl2, sasl2 с saslauthd, samba с AD и winbind, конфигуряем smb.conf:
[global]
security = ADS
workgroup =
realm =
password server = *
encrypt passwords = yes
winbind use default domain = yes
idmap uid = 10000-20000 (Кому надо, можно и больше)
idmap gid = 10000-20000
template shell = /bin/false
template homedir = /var/mail/%U
правим krb5.conf:
[realms]
(НАШЕ НЕЧТО) = {
kdc =
}
[domain_realm]
.(наше нечто) = (НАШЕ НЕЧТО)
Стартуем winbind, net ads join -U (admin user) -S (DC), проверяем wbinfo -u, если работает - правим nsswitch.conf - passwd = files, winbind, group = files, winbind. Проверяем id (доменный пользователь) - вот, собссна, и все.
Настраиваем saslauthd: создаем в нужном месте (Platform-specific) файлик smtp следующего содержания:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
и запускаем saslauthd с флагом '-a pam'.
Создаем pam-файл для winbind'а (Место расположения опять таки, depend on) с именем smtp, закидываем туда 'auth required pam_winbind.so', проверяем: testsaslauthd -u (доменный пользователь) -p (пароль, ага, прям тут) -s smtp, если ОК, то можно переходить к собственно, postfix'у.
Тут, кстати, тоже ничего сложного:
Вместо permit mynetworks пишем permit_sasl_authentificated, в local_recipient/relay_map 'unix:' меняем (Кому нужно, ага - у остальных и так стоит) на 'proxy: unix' (Ибо нефиг всяким там постфиксям к особо важным файлам напрямую лезть, пусть как все соответствующие системные вызовы используют - заодним и, хе-хе! winbind работать начнет). Стартуем postfix, проверяем.

Просто, не правда ли? Может, не "с закрытыми глазами", но "через полчаса" заработает - почему же так не стоит делать? Допустим, созданный таким образом сотрудник уходит в длительный неоплачиваемый отпуск - что делает администратор домена в этом случае? Правильно, блокирует учетную запись, а что делает winbind со значением UserAccountControl? Правильно, забивает :). Т.е. войти в систему пользователь не сможет, оправлять почту - тоже, а вот приходить она очень даже будет. А если таких пользователей сотни две? Непорядок. А что делать с т.н. "системными" пользователями (Built-in, или самолично созданными для, например, имперсонации служб), которые вроде как почту получать не должны? Winbind, тут, увы, не помошник. Конечно, "не так трудно" завести отдельную карту со списком "запрещенных" пользователей - но нафига нам плодить очередные костыли, там, где можно обойтись без них?
Вот и я думаю, что незачем. Вооружившись этим знанием переходим...
Впрочем, "продолжение в следующей серии" :)

@темы: Работа

10:58 

Сильнее всего меня в моей работе раздражают...

... ситуации, в которых ты "все сделал правильно" но это не хрена не помогает, т.к. "кто-то до тебя где-то что-то не подумал".
Ставлю amavisd-new из портов. УБИРАЮ галку SpamAsassin (Терпеть ненавижу эвристику в таких делах - куча геморроя с настройками и на выходе один черт, потерянные письма), запускаю - хренась! Не могу запуститься, ибо в модуле SA нет пути к SpamAssassin.pm. Ну нако-оооой он тебе, а? Ты ж "типа-без-него" скомпилен? А вот! И приходится лезть в этот трижды долбанный перловый скрипт и выпиливать там "единственный подключенный спам-фильтр". "Не подумали чутка", ога.
Ставлю Openfire + Mysql (Про Mysql я уже говорил многое и разное :), добавить тут нечего, но с SQLITE'ом оно "не взлетело" (Достаточно, кстати, интересным образом, но об этом позже)), в URI для jdbc завожу хост-имя-базу, завожу в базу пользователя, даю ему права цепляться с локалхоста, запускаю... авотхрен! В логах видно, что что ты ей в качестве хоста не пиши, а цепляется оно по fqdn хоста. Ну вот нафига-аааа вообще спрашивать лишние данные, если юзать их не собираешься? Ок, пофиксил пользователя.
В третьей конторе стоит пейратский на всю бОшку Kerio Mail Server с интегреным LDAP'ом для "адресной книги" (Что я думаю о типа-админах, которым одного LDAP'a (Того, что в AD, ага) "не хватает" - здесь приводить не стану). ОК. Переименовываем пользователя во внутренней DB... а во встроенном же LDAP'е юзверь не меняется!!! Чиооооордт! Что я делаю не так, а?

И вот такая дребедень - целый день и каждый день. "Все сделано правильно, но ничего не работает", пилите дальше.

@темы: Работа, Жизнь

14:08 

Не так давно...

...возмущался я головожопостью отдельных представителей роду-племени одминского. Так вот, судя по всему - зря. Это не "он дурак", это мода такая. Гнездо, ага. Оказывается, есть на бескрайних просторах нашей родины ПРОВАЙДЕР, который поступает ровно таким образом: выдает каждому клиенту БЕЛЫЙ IP-адрес из пренадлежащего ему пула, прописывает (Ручками, ОГА - какой-такой Dynamic Hosts Configuration Protocol, о чем это вы? Мы тут программку на Delphi'ях нарисовали, она все-все сама сделает! Ах, да! Для Кор-по-ра-тив-ных клиентов мы можем предоставить 130 D-Link!) DNS + пяток маршрутов (До DNS'а, PPTP-Access Concentrator'ов и пр) - а потом поднимает PPTP-туннель, выдает новый IPшник и NAT'ит весь трафик через новый же шлюз. Profit!
А то, что до этих самых "белых" IP-шников нельзя достучаться извне, то, что долбанный NAT знать не знает и знать не хочет о всяких-разных PPTP/L2TP/IPSec pass-through, то, что дебужить эту ситуацию со стороны чистейшей воды сю-ууур! - это такие, право, мелочи... "Работает же все!"(Ц) Воистину, более мммм... своеобразных решений я еще не видел.

Ну и как обычно, о вечном. Очередные грабли - nmap не больно-то дружит с ngX интерфейсами. Из-под юзера nmap - ок. Делаем nmap -sS - даешь повышение привелегий. Запускаем nmap от root'а... упс!
WARNING: Unable to find appropriate route to ...
ifconfig + netstat -nr - все ОК, роуты есть, интерфейс жив. ping - есть. А вот работать отказывается.
Попытка скормить nmap'у нужный интерфейс при помощи -e ngX успехом так же не увенчалась. Гугль, тоже не обрадовал - мол, да, глюк есть, вроде как есть даже патч - но... с 2006 так и не принят. Абыдна, вай!

@настроение: Повбывал бы!

@темы: FreeBSD, Жизнь, Работа

13:52 

На...

... невесть каком дне дошли руки прикрутить к фрюхе flash - традицьённым способом, через эмуляцию linux + nspluginwrapper. В процессе "внезапно"(ТМ) выяснилось, что для LINUXULATOR'а кроме options COMPAT_FREEBSD32 и options COMPAT_LINUX32 (Что, в общем-то логично) нужен еще options COMPAT_FREEBSD7 о чем ни одна зар-раза во всем гугле ни словом не обмолвилась, а если учесть, что при сборке ядра я предпочитаю выпиливать все "ненужное"... в общем, собиралось оно весь вечер да еще полночи методом "околонаучного тыка" (С четвертой попытки угадал, однако!). На этом фоне "стаслые и ужаслые" предупреждения о том, что в linux-f10-pango "есть известные уязвимости" можно и вовсе не упоминать ).
Заодним, "чтоб два раза не ходить", выпилил из ядра поддержку АТА-устройств, заменив все на device ahci + options ATA_CAM. Погорячился, разумеется - SATA'шный винт работает краше прежнего (NCQ включено, ага. На паре find'ов + make index даже заметно... вроде как), а вот IDE'шный ноутбучный CDROM того... потерялся. Пришлось пересобирать ядро еще раз, добавив туда device atacore, device atapci и device atapicam (Унфикации для ;)).
Еще из маленких, но ОЧЕНЬ приятных бонусов - options VESA + options SC_PIXEL_MODE для amd64 архитектуры. В 8.0, насколько я помню, не было, а в 8.1 - от оно, "1280хсколько-то в консоли - это реально!" или "Зачем нам X'ы? Наc и так неплохо кормят! mplayer в VESA вполне даже смотрится, дас-ссс...
Из НЕприятного - в очередной раз (ТМ) попробовал собрать X'ы с HAL'ом и DBUS'ом. Не-а. Один черт, "налысо не нравится - стриги "под канадку". Система "потеряла" USB'шную беспроводную мышь - lshal показывает ресивер, а остальное - хрен вам. Вроде в прошлый раз такой траблы не было... ну или мне было сильно не до нее )))

@настроение: А в остальном, прекрасная маркиза...

@темы: FreeBSD, Жизнь

14:20 

Все-таки, программисты 1С...

... очень, очень, очень странные люди. То ли сам инструмент тому виной (См. выше и не только), то ли область деятельности (Страшней нашей бухгалтерии - только Интернет после ядерной войны - и то не факт!) постаралась, то ли "общение-с-бухгалтерами-пенсионного возраста" повлияло, но факт налицо.
Задача - на регулярной основе выгружать данные из клиент-серверной программы (Сервер на СУБД Firebird) в 1с. 1с - 8.1. Реляционная БД. 1С-ка. Все просто, да? Ну там (ODBC-ADO-OLE)+SQL=1C, драйверов для FB в сети в количестве, примеров кода (Именно для 1ески) - хоть мм-ммм... ешь, чего еще-то?
Но нет, мы легких путей не ищем! А дайте нам локальную копию БД и мы в монопольном режиме, как учили в далеком 9х-м году на Delphi ее распотрошим. Ручками, ога. Как файл. В обход SQL-сервера. "Зачем нам кузнец? Нам кузнец не нужен!"(С)
Клиент-серверное приложение. Сильно больше одного пользователя, причем в нескольких городах. Копия базы. Нет, Firebird умеет делать консистентные бэкапы "на ходу", умеет он и создавать новые БД из этих дампов, но блин-блин-блин! FB стоит на виндах (В общем-то, дальше можно и не продолжать). В режиме SS, т.е. больше одного проца он не получит никак, хоть на 8-ми вёдерную машину его водрузи, а бэкап хотя бы пары гигов со всеми чексуммингами и прочей мутотенью - дело мягко говоря, не слишком быстрое. "Есть мнение"(ТМ), что в скором времени конторе потребуется "новый, мощный сервер"(ТМ) :shuffle:

@темы: Работа

09:47 

Сделал очередную...

... (Вторую, если быть точным ;)) попытку познакомиться с четвертыми кедами. Не помню уже, что мне не понравилось в первый раз, но сейчас первым (А так же вторым, третьим, четвертым и пятым!) впечатлением было "Вааааау! Оооо! Аааа! Ну вы, блин! Это ж надо ж!" - усе сияет, переливается, движется и пэ рэ, все красивенько, анимированньенько и местами даже вполне удобно. Desktop с rooms'ами, виджетики, панель - 7-ка однозначно отдыхает следующие года три, "родные" приложения может и не "лучшие в своем классе", но вполне работают - казалось бы, ляпота... если на нее любоваться, а вот если начать работать...
Konqueror - хороший браузер. Действительно, хороший - мне оч-чень понравился (Не Crome(ium) - нет, но явно резвей-удобней FF) - вот только - сюрпри-иииз! Работать с HTTPS-proxy с авторизацией отказался кат-тегорически, от слова "совсем". В TCPDump'е видно, что на "proxy authentification required' "завоеватель" отвечает ACK'ом... и инициирует новую сессию с. HTTP-прокси с авторизацией работает нормально.
Через полтора часа работы dolphin начал жрать 20% проца. Почему-зачем? Б-г знает. Впрочем, больше оно не повторялось...
Kopete - хороший ПЛОХОЙ im-клиент, но в общем-то, настраивается и работает. Вот только в процессе настроек - умудряется зависать и подтормаживать (Аж два разА, ага) - в работе ничего подобного не было, но "осадок остался".
Потом навернулся d-bus (И почему я ну ни капельки не удивлен, а?) - а вместе с ним и все остальное. Опять таки, в следующие три дня ничего подобного не было - хотя отдельные приложения падали, да.
Kmail по ощущениям с третьей версии изменился не сильно и ничем не удивил - есть. Работает.
Amarok - аналогично. Малость лучше "Windows Media Player'а" по usability, но все равно - "не нескафе".
Koffice'у все еще не хватает поддержки MS'овских форматов (Эт-та понятно, но хотя бы rtf к Kwrite'у могли бы и прикрутить!).
Konsole - традиционно великолепна, xterm (Бууаа-га-га!) рядом не валялся.
Ну и тадэ и та пэ.
В общем, "Роисся, вперде!" - в смысле, "впереди планеты всей, но глю-ууучное, шотрындец". Работать можно, но, но, но...
P.S. - Версия KDE - 4.4.3, дистрибутив - Mandriva 2010.1 (Spring) на virtualbox'е.

@темы: Жизнь, Работа

09:45 

О граблях, вестимо.

"Третьего дня"(ТМ) решил я обновить систему на недавно вышедшую 8.1 - на виртуальной машинке все вроде как ОК, можно и на личном букваре поэксперементировать, ага. Правим sup-файл для дерева сырцов, обновляем дерево, make buildworld-kernel-installworld-kernel, НЕ ЗАБЫВАЕМ (Оттож!) обновить gptzfsboot в первой партиции, ребутимся... авотхрен!
error 1 lba 48
error 1 lba 1
No ZFS pools located, can't boot
Хм. Странно. Впрочем... в 8.1 ZFS 14 версии, а в 8-ке - 13, может по тому и не находит? Надо бы версию пула обновить, ага. А пока - установим старый gptzfsboot + копирнем скомпиленый с ZFS'ом loader от 8-ки. Работает. За десять минут до конца рабочего дня - zpool upgrade -a, gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad4, ребут.
error 1 lba 48
error 1 lba 1
No ZFS pools located, can't boot
Хм. По проторенной дорожке - старый лоадер... авотхрен! Версия should be 13, ага. Приплыли. Смотрим, куда именно. Google ничего сильно вразумительного не говорит (Большая часть камрадов тупо забыла проинсталлить gptzfsboot "куда надо", меньшая - ловит кайф с current-веткой и сообщает, что уж в RELEASE'е-то все ОК) - тындекс и спрашивать бесполезно, придется ручками.
ls /usr/src/sys/boot/i386/gptzfsboot - никаких сырцов, один Makefile, в котором прописана статическая линковка gptboot + zfsboot + btx + еще какая-то хрень. Ага. fgrep'ом смотрим, где именно сидят сообщения об ошибках - сидят они в zfsboot.c, вот только к этому самому .c прилагается еще и .S, написанный на ассемблере. Мать-мать-мать. Начинаем смотреть - main вызывает probe_drive(), probe_drive() вызывает drvread(), там инициализируются несколько регистров, вызывается "ассемблерная вставка" - и выдается сообщение об ошибке. Два разА, ага. Дело ясное, что дело темное.
Лезем на svn, начинаем читать комментарии - что и зачем джамшутили в этом самом zfsboot.c - создается впечатление, что проблема вызвана включением 64х битной LBA вместо старой 48-ми битной, но как с этим бороться... версия ДО этого самого включения без сильномогучего бубна не собирается, что и как "править ручками" - хрен знает... трабла, в общем.
Неразрешимая? А вот и нет ). "Совершенно случайно" у меня в букваре обнаружилась SD-карта на 1 гиг, с которой комп вроде как даже соглашается грузиться - форматим ее под UFS2, копируем туда /boot, gpart'ом же ставим MBR, меняем /etc/fstab, ребутимся, меняем boot sequence, ребутимся... и работаем.
А вот что делать с "боевыми" серверами в которых карт-ридеров с "совершенно ненужными" SD'шками нет - Б-г весть. Экспериментировать как-то того... желания нет.

@темы: Работа, FreeBSD

16:02 

Ненависти псто

Что делает хороший программист, которому нужно написать переносимое (Кроссплатформенное!) клиент-серверное приложение? Пишет с использованием стандарта SQL XXX, всю "лишнюю" функциональность переносит на клиент, использует подключаемые модули и пэ рэ. Оно работает.
Что делает для решения этой задачи "средний" программист? Рисует на каждую версию БД отдельную версию своей супер-софтины. Кривенько, да - но тоже работает.
А еще есть Программисты 1С - эти "легким движением руки" ("Оторву у кошка хвостик - будет это бегемот"(С), ага) - патчат СУБД!!! Превратим Postgres в MS SQL, ога. Сделаем из классического версионника блокировочник. А потом - накатим еще один патч, ибо сюрпра-ааайз! эти самые "блокировки", оказывается, конфликтуют с родным автовакумом. Повбывал бы, ей-ктулху.

@темы: Жизнь

11:17 

Для себя...

... чтобы не забыть:

Чтобы смонтировать ISO-image во фрюхе надо не '-o loop' в mount воткнуть, как в этих ваших linux'ах, а:
Создать виртуальную девайсину с приаттаченным файлом:
mdconfig -a -t vnode -f /
А потом уже смонтировать получившийся девайс штатными средствами:
mount_cd9660 /dev/mdX /mnt
И, да - после не забыть задропать лишнее:
mdconfig -d -u <номер девайса>.

Для рулежки удаленным сервером с, например, koi8-r из X'ового терминала с той же UTF8 вовсе не обязательно перенастраивать кодировку - проще и удобней воспользоваться командой luit - например, так:
luit -encoding 'koi8-r' ssh -i / user@server.

Забавные грабли - два DC, один на 2003R2, другой на 2008 сервере, меняем в krb5.conf'е kdc с 2003 на 2008 сервак и по kinit'у получаем "kinit: krb5_get_init_creds: Response too big for UDP, retry with TCP" - сюрпрайз, сюрпрайз! Ну, TCP так TCP - пишем в krb5.conf'e kdc = tcp/DC и едем дальше, но все же странно усе это...

@темы: FreeBSD, Жизнь

Танец-с-саблями на граблях

главная