Базы данныхИнтернетКомпьютерыОперационные системыПрограммированиеСетиСвязьРазное
Поиск по сайту:
Подпишись на рассылку:

Назад в раздел

UNIX FAQ от Vitaly Deriabin.

eManual.ru - электронная документация

Секция 1 из 2 - Предыдущая - Следующая

From : Vitaly Deriabin <nospam@vitalic.glazov.net> Subj : UNIX FAQ от Vitaly Deriabin 1. какие есть демоны, смотрящие в логи и производящие указанные действия [исполнение команды], если встретили к-либо событие? swatch logsentry 2. Как мне yвидеть и плодотвоpно pаботать с локальной сетью типа нетваpь? 1) Собрать поддержку IPX в ядре или загрузить модуль IPX 2) Вставить в стартовые скрипты что-то типа echo Starting IPX networking... /sbin/ipx_interface add -p eth0 802.3 20000140 /sbin/ipx_interface add eth0 802.2 20000141 3) достать ipxd - демон который манипулирует протоколами RIP/SAP установить бинарники или скомпилить и добавить в скрипты rc.d: if [ -f /usr/sbin/ipxd ]; then echo "Starting IPX RIP/SAP daemon" /usr/sbin/ipxd fi 4) Включить в ядре или загрузить как модуль поддержку ncpfs (Netware Core Protocol fs) - это собственно клиент. 5) достать бинарники или скомпилить ручками пакет ncpfs, в котором есть в частности команда ncpmount. Читаем маны и IPX-HOWTO. Проверка: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:20:AF:3B:BC:94 inet addr:193.244.1.4 Bcast:193.244.1.255 Mask:255.255.255.0 IPX/Ethernet 802.3 addr:20000140:0020AF3BBC94 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:42985 errors:3 dropped:3 overruns:2 frame:3 TX packets:37595 errors:0 dropped:0 overruns:0 carrier:0 coll:0 Interrupt:10 Base address:0x300 # cat /proc/net/ipx* Local_Address Remote_Address Tx_Queue Rx_Queue State Uid 20000140:0453 Not_Connected 00000000 00000000 07 000 20000140:0452 Not_Connected 00000000 00000000 07 000 Network Node_Address Primary Device Frame_Type 20000140 0020AF3BBC94 Yes eth0 802.3 Network Router_Net Router_Node 10000140 20000140 00804890FF19 00000140 20000140 00804890FF19 00000123 20000140 00804890FF19 3082C515 20000140 00804890FF19 20000140 Directly Connected linux:/proc/net# 3. Подскажите плиз как пеpеключить кодиpовку "на лету"... Hужна дос кодиpовка. конвеpтиpование не годится! Hапиши скриптик на expect, который будет перекодировать туда и обратно и пускай программу под ним. Что то вроде #!/usr/bin/expect spawn $argv interact -nobuffer -regexp { "([x80-xFF])" {send_user [recode -input cp866 $expect_out(1,string)]} -u "([x80-xFF])" {send [recode -output cp866 $expect_out(1,string)]} } tcl-расширение recode берется у меня на домашней страничке http://www.ice.ru/~vitus/ 4. Как оставить квоты на все, кроме почты? 1) Создать раздел без квот, и подмонтировать к /var/spool/mail, правда могут быть те же проблемы с pop3 - большинство серверов копируют почтовый яшик куда нибудь типа /var/tmp/pop/ 2) Сделать линк /var/spool/mail на раздел, где нет квот. 5. Интересует следующее: как это правильно сделать и как правильно раздаются номера в ссылках @K??socks5 и @S??socks5? Вам нужно man chkconfig, дрюг мой разлюбезный. Knn - остановить, Snn - стартовать. Порядок остановки/старта определяется цифрой nn. При входе на runlevel последовательно выполняются все K, потом все S. быстрее было бы сказать - less /etc/rc.d/rc. 5. Имеем: diald, ipfwadm, динамический IP. Hастраиваем, запускаем, получаем: Пакет, пришедший с интерфейса eth0, прошедший in-firewall, форвардится и маскарадится для передачи "наружу". При этом он отправляется на интерфейс sl0, что служит сигналом diald для поднятия ppp. После поднятия ppp0 все пакеты ждавшие отправки из sl0 отправляются через интерфейс ppp0. Hовые пакеты сразу отправляются через ppp0. Проблема: Маскарадинг пакета при не поднятом ppp приводит к тому, что пакет получает адрес машины-гейта 10.0.0.1, так как реальный IP адрес будет известен только после поднятия ppp. После этого пакеты начинают маскарадиться правильно. Из-за этого пользователь, запустивший у себя на машине IE и запросивший страничку из Интернета через полторы минуты наблюдает у себя сообщение об отсутствии доступа. Поэтому требуется повторное нажатие на URL. Из этого вытекает следующее - требуется либо увеличить таймауты IE, либо каким-либо образом перемаскарадить пакеты, ждущие своей отправки, после узнавания реального IP адреса. Вариант с получением постоянного адреса очевиден и не рассматривается. YT>>less /usr/src/linux/Documentation/networking/ip_dynaddr.txt 6. Мне нужно сделать простую штуку, чтобы все входяшие из интернета пакеты на 80й порт линуха, перенаправлялись на 80й порт WinNT. Поищи на sunsite прогу redirect 7. lilo boot: linux 1 и получаете root-овый шелл без пассворда. LILO: linux single Впрочем если Single mode требует пароля, что не так уж и ново, есть бронебойный способ: LILO: linux init=/bin/bash Правда, если LILO запаролен, единственный способ войти - загрузиться с дискеты. 8. Чем не устраивает su ? Тем, что пути к /sbin; /usr/sbin потерялись? Так надо не просто "su" набирать, а "su -", тогда рутовский .profile отработает. Других причин не могу придумать... 9. Поставил модемы и сразу же возникает вопрос! а есть ли софт, который считает время + трафик и т д. для ppp юзеров? Я, конечно, могу написать скрипт, который будет анализировать логи, но зачем писать, если что-то Есть классная вещь - getstatd (pаньше лежала на http://linux.opennet.ru/getstatd/) 10. Что нужно сказать pppd, что все готово и пора поднимать ppp? > Беру isp-hookup-howto, делаю все по нему. > Есть два провайдера, пытаюсь с ними соединиться, но: > после проверки имени и пароля, машина провайдера говорит ppp ready и лезет > какой-то мусор. Впечатление, что моя машина не понимает, что пора поднимать > ppp. > вот скрипт: > > === Cut === > TIMEOUT 5 > "" "at" > OK "atz" > OK "atdp123456" > ABORT "NO CARRIER" > ABORT "NO DIALTONE" > ABORT "ERROR" > ABORT "NO ANSWER" > ABORT "BUSY" > TIMEOUT 45 > CONNECT "" > "ogin:" "^Umyname" > "word:" "qmypassword" Posle etogo: "}" "q" i vseo, bol'she nichego ne nado. > > "PPP ready." "q^Uppp" > "~-^Uppp-~" > === Cut === > > вызываю pppd командой > > === Cut === > pppd connect 'chat -v -f /etc/ppp/chat-file' -detach crtcsts modem > defaultroute user myname /dev/modem 38400 > === Cut === > > у одного из этих провайдеров можно без скрипта (pap авторизация). сокращаю > скрипт (без всяких там имен и паролей) и коннектится нормально, ppp поднимается > и все работает. > > как бы сделать, чтобы коннектиться с тем у кого скриптовая авторизация? > > Alex. >> что нужно сказать pppd, что все готово и пора поднимать ppp? i> Когда скрипт, указанный в connect выходит с нулем, pppd i> считает, что на той стороне все готово. i> "^?}" чем-то похожа на PPP, но точно сказать не берусь. i> Запусти pppd с debug и кидай лог и настройки. === "options" === # debug lock modem crtscts kdebug 0 asyncmap 0 #require-pap noipx noauth lcp-max-configure 20 noipdefault defaultroute ipcp-accept-remote noproxyarp lcp-echo-interval 30 lcp-echo-failure 4 === Cut === команда на соединение: exec pppd 0.0.0.0:0.0.0.0 connect 'chat -v -f /etc/ppp/chat-univer' user myname /dev/modem 38400 === chat-univer === TIMEOUT 5 "" "at" OK "atz" OK "atdp123456" ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "ERROR" ABORT "NO ANSWER" ABORT "BUSY" TIMEOUT 45 CONNECT "" "ogin:" "^Umyname" "word:" "qmypass" "}" "q" 11. Нужно предоставить доступ к Internet для локальной сети через сервер по коммутируемой линии с динамической адресацией. > > Где моя ошибка? > От корки до корки прочитал HOWTO и man по Firewall, маскарадингу и PPP, > поговорил со знающими людьми: говорят, что все должно работать. > > Заранее большое спасибо! > > > > Иди сюда http://www.linuxsupportline.com/~router/ , думаю поможет. По крайней мере, я так сделал и все работает. 12. Проблема с Dhcpd после установки PPPD >Жил-был хорошо работающий сервер RedHat 5.1 с DHCP-раздачей. Поставили туда >модем и попытались настроить ppp к ISP. В соответствии с документацией на >pppd, для начала удалили default route, которая до этого указывала на >конкретный адрес (192.168.0.254 netmask 255.255.255.0) в единственном >имевшемся Ethernet-сегменте. Удалили, поскольку, она не особо, вроде бы, и >нужна (адрес был фиктивным), а pppd при загрузке отказывался менять ее на >свой динамически получаемый адрес. В результате, остались 2 записи роутинга: >127.0.0.0 ..... что-то там... lo >192.168.0.0 * 255.255.255.0 ... eth0 >Теперь ppp работает, как доктор прописал, а вот dhcpd хватил Кондратий. >Часть клиентов (как ни странно - WIN95) продолжают получать адреса, а вот >Linux-box'ы и карты HP JetDirect (bootp) - перестали! Причем, dhcpd на >сервере дает такую диагностику на собственную попытку отправить клиенту >DHCPACK: >... send_pkt: Network ureachable >Возвращаем назад фиктивную default route - опять все в порядке! Ничего не >понимаю, помогите, профи! route add -host 255.255.255.255 eth0 13. Как руссифицировать терминалки-звонилки? > Типа seyon или minicom? Очень хочется работать с ББС из Линукса. > cu -l ttyS0 -s 38400 14. Как принимать и посылать сообщения Winpopup в Win сеть? >> Я недавно поставил LINUX и меня мучает одна пpоблема. У нас есть >> сеть Ethernet, в ней 4-е машины WINDOWS и моя LINUX (RH_6.0). >> Скажите пожалуйста, как мне с их WINPOPUP можно соединиться, чтоб >> тоже мессаги слать. > Samba. smbclient -M hostname > Только пpинимать оно не будет. В /etс/smb.conf пpопиши стpоку: message command = /usr/local/bin/linpopup "%f" "%m" %s; rm %s И пpинимать будет и отпpавлять. BTW, почитай Readme к LinPopUp там это все описано. 15. Как узнать в каком rpm лежит файл? > > $ for i in `ls *.rpm`; do a=`rpm -qlp $i | grep libXt.so`; [ -z "$a" ] || echo -e "$in$an"; done Вот! Кстати! Я пользуюсь: for f in *.rpm; do rpm -qlp $f | grep libXt.so && echo $f done 16. Как разграничить приоритет машинам по tcp/ip? > > > Схема такая: локалка сидит на Eth0, Интернет подключается к Eth1. > > > Линукс файерволит локалку. Необходимо, чтобы при начале работы некоторых > > > машин локальной сети в интернет, ей выделялась бы вся необходимая > > > толщина интернетовского канала, для остальных машин - что останется. > > > Может стоит эти приоритетные машины на третий езернет посадить? > > > Как тогда устанавливать приоритет интерфейсов? Угу, можно, к сожалению пока это все мало документированно и придется крайне внимательно разбираться, стоит посмотреть вот эту ссылочку ftp://post.tepkom.ru/pub/vol2/Linux/docs - там где-то внутри есть ссылка на страничку Алексея Кузнецова, он как раз автор, там свежие версии и немножко примеров, но не очень информативных. Я сам, за недостатком времени, до конца тоже не добил, так что мудрым советом помочь не в силах. Ключевые слова для поиска информации cbq и iproute2. Пока писал, заодно отыскал и саму страничку ftp://ftp.inr.ac.ru/ip-routing 17. Как поставить пароль на Lilo? VD> Возникла у меня необходимость поставить один сервер, в функции которого VD> входила бы периодическая дозвонка с помощью скрипта провайдеру и забор VD> почты. Hо дело в том, что в скрипте придется прописывать и диалапный VD> пароль, VD> а его то как раз бы и не хотелось показывать посторонним. А посторонних VD> вокруг полно. Поскольку взломать линукс при наличии физического доступа к VD> компу - минутное дело (lilo: root=/bin/sh), хотелось бы узнать, как можно VD> защитить этот пароль? Который, разумеется, необходимо в открытом виде VD> передавать при звонке... От рута не спрячешь. По поводу лило - читай его ридми. Ключевые слова - restricted, password. 18. Как перестартовать respawn процессы? kill -1 1 - перечитает конфиг inittab, но данные прошлые будет хранить до тех пор пока не сделаешь killall -INT mgetty, вот только тогда новые установки вступят в силу. А killall -HUP mgetty перечитывает только свои конфиги. 19. Плз, ткните меня носом в тот софт, котоpый поставит на линухе вpемя, взятое с поpта 37 на удаленной машине. rdate 20. При коннекте Виндовым ТелHетом к Linux 2.0.35 в Midnight Commander не работают функциональные клавиши (в частности Все прше простого. Есть такая штука - escape-последовательности.... Т.е. нажимаешь Esc а потом цифирку (просто цифирку, не функциональную клавишу), какую надоть. F3 = Esc 3 21. Человек хочет Линукс на одной дискете > В /usr/doc/HOWTO/Bootdisk-HOWTO написано как это делать > Но может быть проще скачать готовый 1-дискетный Линукс и переделать его под > свои нужды Гдето в инете есть несколько таких проектов Жаль ссылки не сохранил > ---------------/* Самый удачный imho http://www.toms.net/rb/ Во первых имеет большинство из того, что может понадобиться, уже на себе, а во вторых приналичии рук и головы :-) позволяет переконфигурятьсебя практически подо все, что душе угодно - поменять ядро, набор софта, добавить русификацию, lynx и т.п. :) И, кстати, на той странице большой набор линков на другие проекты подобного рода. P.S.: если принципиально нужно 2.2.х ядро, то ищите RamLinux (? вроде так) на фрешмите. У всех остальных по моим данным до сих пор 2.0.36. 22. А вообще - есть ли какая прога, которая позволяет контролировать (ограничивать) по времени и размеру доступ клиентов в Интернет? Соббственно сам squid если к WWW и FTP. Там ACL'ями можно и такое накрутить... 23. Русские буквы в Samb'e С латинскими буквами пpоблем нет, но если создаешь из WIN95/98 на VV> сетевом диске под Samba папку или файл с pусскими буквами, то VV> получается нечитаемая еpунда (навеpное идет пеpекодиpовка в КОИ8-Р). VV> Потом удальть эту папку или файл из под WIN не удается. VV> Samba из RedHat 5.2. /etc/smb.conf: client code page = 866 charecter set = koi8-r 24. Народ, проясните деталь: когда бинд запускается, он снюхивается со всеми поднятыми на данный момент интерфесами, как заставить его снюхиваться только с определенными? Ссылка #1: BIND Version 8 Online Documentation. Смотреть в разделе "options" на тему опций listen-on и interface-interval. Последний, как я понимаю, нужно задать равным нулю. После этого по SIGHUP named просканирует интерфейсы, и, если опцией listen-on интерфейсы явно не заданы, будет слушать на всех активных интерфейсах. Можно также вместо нуля для interface-interval задать время в минутах (период сканирования интерфейсов). 25. Как заставить Sendmail просматривать не только имена класса w в /etc/virtusertable? В файл sendmail.cw домен не вписывать. В sendmail.cf ищешь правило SParse1 # handle virtual users И строчку R$+ < @ $=w . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . > поменяй на R$+ < @ $* . > $: < $(virtuser $1 @ $2 $@ $1 $: @ $) > $1 < @ $2 . > (и, естессно, kill -HUP ;-) 26. Как удобно считать трафик через роутер? >From Mike.Pechkin@p7.f13.n5100.z2.fidonet.org Wed Aug 4 09:46:14 1999 Newsgroups: fido7.ru.linux From: Mike Pechkin Date: Tue, 03 Aug 99 22:11:00 +0400 Subject: Логи тpаффика чеpез router - IPDump Organization: "Go West, Riga, Latvia IPDump v0.0.0.7b 03.08.99. Главной целью написания этой _маленькой_, но очень мощной программы, было желание облегчить жизнь сисадминам, а так же самим себе ;), по контролю траффика проходищий через router. Программа разрабатывалась и тестировалась на ядре Linux 2.0.36, хотя в будущих версия появится поддержка 2.2.10xxx. (дело в том, что я меня стоит Linux 2.0.36, а у моего компаньона Linux 2.2.10, поэтому и придется делать под 2.2.10xxx ;)) Приемущества и возможности программы: * разбиение по группам; (делаем две группы, одна на входящий, другая на выходящий траффик. Одна на международный, другая на местный траффик и т.д. и т.п.) * для каждой группы можно указать свой отдельный лог-файл; * для каждой группы можно указать свой формат вывода в лог-файл; * указывание бесконечного количества правил; (ограничение память) * указывание любых протоколов; (ограничение на протоколы которые _не_ поддерживает программа, пока !) поддерживаются: TCP, UDP. В ближайшее время ICMP. * указывание одного или диапазона портов; (23 или 1:1024) * задание исключающих правил, например "ВСЕ ПОРТЫ, КРОМЕ 23" "ВСЕ ПРОТОКОЛЫ КРОМЕ TCP" и т.д. * технология SmartOrder; (е надо указывать, как в Apache: "order deny, allow", что просматривать первым src или dst, это все делает программа) больше фишек нет, фантазия кончилась. Если что, пишите... P.S. Чеpез несколько дней на сеpвеpе будет выложена публичная пpе-бета, а пока пишется документация. А пока нужны тестеpы... Если кто хочет заняться тестеpованием, то пpосим Вас пpисылать свои адpеса, для pассылки. Если пpога понpавиться и будет иметь спpос, то можно заняться kernel developerom под ядpо 2.4.xxx P.S.S. У меня pаботает уже 3 дня, как pезеpвный демон по подсчету тpаффика, и пока все ОК, но это пока ;) Mike 27. Подскажите, plz, IRC-клиента, котоpый могy бы на ходy пеpекодиpовать в cp1251,так чтобы понимали подмастдайные юзеpы. И еще ICQ-клиент, котоpый мог бы ноpмально общаться с оpигинальными mirabilis'овскими клиентами (icq98a,99a). Желательно _не_ под X (текст-моде). Если таких нет, то под Иксы (но не под gnome или kde или gtk или qt и дp.) - пpосто под xlib. Сходи сюда http://www.portup.com/~gyandl/icq/index.html Здесь лежит полный список всех ICQ для Линуха, в том числе и текстовых. 28. Как по нуль модему два линукса связать? Поставь pppd и в /etc/ppp/options.ttyS1 пропиши вот это: lock local debug persist passive 10.10.10.1:10.10.10.2 115200 Потом сделай в /etc/ppp файл options с нулевой длиной. Далее проделай все вышеописаное на 2-й машине, с одним лишь отличием: строчку "10.10.10.1:10.10.10.2" замени на "10.10.10.2:10.10.10.1". Потом на обоих машинах напиши из под рута pppd ttyS1 - тут на обоих машинах должен появится сетевой интерфейс ppp0, соответственно на первой машине интерфейсу ppp0 будет присвоен адрес 10.10.10.1, а на второй 10.10.10.2. Команда ifconfig показывает состояние сетевых интерфейсов. Если ppp0 не появился - смотри в логи(обычно это /var/log/messages), pppd там должен написать в чем проблема. Если ppp0 появился, попробуй ping 10.10.10.2 - если все ок, то telnet 10.10.10.2 и вот тебе и логин... ;-)) Примечания: 1. я подразумеваю что у тебя нульмодемный шнурок на обоих машинах воткнут в ttyS1. 2. вышеприведенный конфиг для pppd версии 2.3.8, возможно, для ранних версий pppd придется внести какие-то изменения чтоб он работал. 3. я подразумеваю что в ядре скомпилена поддержка PPP протокола, иначе сначала перекомпиль ядро. Возможно, у тебя есть модуль ppp и его придется загрузить ручками: напиши из под рута modprobe ppp перед запуском pppd. Дополнительное чтение: man pppd, PPP-HOWTO. 29. Где в Москве найти свежую версию Линуха? В IPLabs. http://www.iplabs.ru. Географически это Профсоюзная, Кржижановского, 13, тел. 728-4101. Они сейчас за наиболее русифицированные считают Mandrake и BlackCat. И 175 руб. прихвати за Mandrake-6.0 RE - два диска и описание. Отличная вещь. Если книжечку не поленишься прочесть, то работает сразу, с русским проблем нет. А телефон они еще 728-4102 дают. 30. Как я открыл в Linux 2000 файлов". Всем, кто любит 1C посвящается. Привожу детальное описание действий по шагам. Hеобходимо: 1. Обнаружить что 1024 файлов на процесс для эксплуатации этого угребища маловато. 2. Прочитать /usr/src/linux/Documentation/proc.txt возле волшебного слова file-max. Обнаружить, что для изменения лимита per-process надо изменить NR_OPEN в limits.h и fs.h находящихся в /usr/src/include/linux. 3. Поменять их скажем на 2048. 4. сказать make zImage && make modules && make modules_install 5. прописать в lilo новое ядро, сказать lilo и перегрузиться. 6. обнаружить вопль get_unused_fd: тра-ля-ля и нежелание грузиться 7. Hажать Reset, загрузить старое ядро. 8. Вместо того, чтобы запускать newsreader и ныть в ru.linux что звиздец эхотагу и флеймить о его пригодности для той или иной задачи, зайти в /usr/src/linux/. 9. сказать rgrep get_unused_fd *. 10. Обнаружить эту функцию в fs/open.c 11. Обнаружить в ней следующий код: === struct files_struct * files = current->files; int fd, error; error = -EMFILE; fd = find_first_zero_bit(&files->open_fds, NR_OPEN); === 12. Исследовать include/asm на предмет current и обнаружить что это struct task_state 13. Исследовать include/linux/sched.h на предмет struct task_state и увидеть что ее поле files представляет собой struct file_struct 14. Обнаружить, что поле open_fds в struct file_struct представляет собой fd_set, что есть ни что иное, как __kernel_fd_set. Последняя в свою очередь определена в include/linux/posix_types.h. 15. Обнаружить в include/linux/posix_types.h такой кусок кода: === #undef __NFDBITS #define __NFDBITS (8 * sizeof(unsigned long)) #undef __FD_SETSIZE #define __FD_SETSIZE 1024 #undef __FDSET_LONGS #define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS) #undef __FDELT #define __FDELT(d) ((d) / __NFDBITS) #undef __FDMASK #define __FDMASK(d) (1UL = NR_OPEN, например 2048. 17. Повторить шаги 4 и 5. 18. Сказать ulimit -n и увидеть 2048 19. Если еще не верится - скомпилить нижеприведенный суперпрограм: === #include main () { FILE *fp; int i; char name[100]; mkdir("testdir"); for(i = 0; i < 2000; i++) { sprintf(name, "testdir/%d", i); if ( (fp = fopen(name, "wb")) == NULL) break; } printf("%d", i); } === 20. Запустить ее и увидеть что в testdir - 2000 файлов. Все это заняло у меня 40 минут, включая 2 компиляции ядра. Примечания: 1) от шага 3 можно сразу перейти к шагу 16 2) передайте тем, кто заведует proc.txt и posix_types.h что не помешало бы сделать __FD_SETSIZE зависимым от NR_OPEN или хотябы это описать. 3) Внесите это в FAQ 4) В эксперименте принимали участие: ядро - 2.2.10, без ac-XXX , glibc-2.0.7-13, SysVinit-2.76-1. Дистрибутив - RH 5.1

Секция 1 из 2 - Предыдущая - Следующая


  • Главная
  • Новости
  • Новинки
  • Скрипты
  • Форум
  • Ссылки
  • О сайте




  • Emanual.ru – это сайт, посвящённый всем значимым событиям в IT-индустрии: новейшие разработки, уникальные методы и горячие новости! Тонны информации, полезной как для обычных пользователей, так и для самых продвинутых программистов! Интересные обсуждения на актуальные темы и огромная аудитория, которая может быть интересна широкому кругу рекламодателей. У нас вы узнаете всё о компьютерах, базах данных, операционных системах, сетях, инфраструктурах, связях и программированию на популярных языках!
     Copyright © 2001-2024
    Реклама на сайте