<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5816887912585622484</id><updated>2024-11-01T12:36:27.724+02:00</updated><category term="Windows Server"/><category term="Active Directory"/><category term="C#"/><category term="Debian"/><category term="Easter Egg"/><category term="First"/><category term="Hello world"/><category term="Ldap"/><category term="Linux"/><category term="Remote access"/><category term="Server"/><category term="Team Viewer"/><category term="dialin"/><category term="ppp"/><category term="security"/><title type='text'>(defun ipfw blog)</title><subtitle type='html'>Вырванные страницы</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ipfwww.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default'/><link rel='alternate' type='text/html' href='http://ipfwww.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ipfwww</name><uri>http://www.blogger.com/profile/07572170763067549251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5816887912585622484.post-5562504293246915351</id><published>2009-12-19T23:27:00.000+02:00</published><updated>2009-12-19T23:51:06.852+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Easter Egg"/><category scheme="http://www.blogger.com/atom/ns#" term="Remote access"/><category scheme="http://www.blogger.com/atom/ns#" term="security"/><category scheme="http://www.blogger.com/atom/ns#" term="Team Viewer"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server"/><title type='text'>Team Viewer Server</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1IAIbInPJP8tn8MrIzZoVMopy_rhsToUOXNNRo7_tNjY2y3pBdAh7XYXVX-BHu_ufS3mjNN9mBuFyCz1HLXB2KFazh-T_3Kb3FJaDOVGFe3s13Gq7c1l8gI5aoCTgJX11EYQaMj_ExVrY/s1600-h/teamviewer_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1IAIbInPJP8tn8MrIzZoVMopy_rhsToUOXNNRo7_tNjY2y3pBdAh7XYXVX-BHu_ufS3mjNN9mBuFyCz1HLXB2KFazh-T_3Kb3FJaDOVGFe3s13Gq7c1l8gI5aoCTgJX11EYQaMj_ExVrY/s320/teamviewer_logo.png&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Довольно давно использую по работе и не только замечательную программку &lt;a href=&quot;http://www.teamviewer.com/&quot;&gt;TeamViewer&lt;/a&gt;. И вот недавно, по чистой случайности обнаружил интересный номерок, даже незнаю причислять это к Eastern Egg&#39;sам или это такая учебно-демонстрационная фишка, но суть ее в том, что компания-разработчик, держит в сети специальный сервер, на котором запущен TeamViewer в круглосуточном режиме!&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt; &lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;Чтобы подключиться к этому серверу нужно ввести в поле ID тима 12345. Ну хорошо, ай-ди мы знаем, но нужен еще и код. Думаете на сервере прописан постоянный пароль? Дудки! Он динамический, но его говорит сам Тим.&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBkXEHLEbSBLuTdMu2eFxXGSr2RXL9HSd59NYkJGvmD1RChBNJEjfA295bt1rpBAzLzLwD7YOpogolZfH5NSv-afTaM-xyHKydXz-_b_g5mUfecsmVxirDDELWT15nUwN2Enm5EcOrEyE_/s1600-h/team_saypassword.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBkXEHLEbSBLuTdMu2eFxXGSr2RXL9HSd59NYkJGvmD1RChBNJEjfA295bt1rpBAzLzLwD7YOpogolZfH5NSv-afTaM-xyHKydXz-_b_g5mUfecsmVxirDDELWT15nUwN2Enm5EcOrEyE_/s640/team_saypassword.PNG&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Вводим то что нам говорят и попадам в &lt;strike&gt;преисподнюю&lt;/strike&gt; Windows 2003 Server.&lt;br /&gt;
&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBSXBV7zllNO8wMpF2gRkuqZLlLU6hxPp22vtyosDqsFkTvAuLt2d3TcH-4eiD-JMI75ajc7_1XCH8OoFx2IZB7nZwJ96Ha3EotGVkUuloHUUeaSy4DaWrVxr_2-nujL2ZhaYs9GPmV8nD/s1600-h/team_welcome.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBSXBV7zllNO8wMpF2gRkuqZLlLU6hxPp22vtyosDqsFkTvAuLt2d3TcH-4eiD-JMI75ajc7_1XCH8OoFx2IZB7nZwJ96Ha3EotGVkUuloHUUeaSy4DaWrVxr_2-nujL2ZhaYs9GPmV8nD/s640/team_welcome.PNG&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;Возможности у нас обрезаны по самое не балуйся, все щелчки правой кнопкой мышки по таскбару, рабочему столу, в окнах открытия/закрытия файлов отключены, все ярлычки read-only, как и вся папка рабочий стол. Ни создать, ни удалить ничего нельзя. Ну оно и понятно, зачем давать всем полный доступ к своему серверу, его быстро превратили бы в машину для ддоса или спам-бота, да мало ли применений можно найти для Intel(R) Pentium(R) III Xeon processor с 1GB RAM и выходом в инет...&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipu-g-QwFwXift-0qNUK8S4vYyUWSCpshrm8wWcJwu9i5FypW_FTLV5baoVAwChvXLt0OebsbloKxLy1cykmf8xcy2p6IUXg8Mo6hTmmB2gQOQcDzNnasSU8WDG46Apzn_D5kPXz2sSxW/s1600-h/FileOpen.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiipu-g-QwFwXift-0qNUK8S4vYyUWSCpshrm8wWcJwu9i5FypW_FTLV5baoVAwChvXLt0OebsbloKxLy1cykmf8xcy2p6IUXg8Mo6hTmmB2gQOQcDzNnasSU8WDG46Apzn_D5kPXz2sSxW/s640/FileOpen.PNG&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;Но мы не теряемся, вписываем в поле File name: c:\ нажимаем Энтер и видим.. да, содержимое системного диска. Но видим мы только *.txt файлы. Не теряемся вбиваем в то же поле *.* и теперь все секреты нам видны. Сразу бросаеться в глаза папочка sysprep. заходим в нее и видим параметры развертывания ОС. Среди них есть и такие интересные сведения как ключ для установки Windows и пароль администратора (еще бы найти куда его ввести)...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вызываем тоже окно, идем в C:\Documents and settings\Demo\Start Menu\Programs\StartUp и открываем файлик startup.cmd:&lt;br /&gt;
&lt;div style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: inherit; text-align: center;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAAVQDKDcLG2fpGwnYrWTxtw4VcsqvZXldhJBa6PXOBWGCQ-f4CUYfTU7S9ffhKqjYK_DcmYG4sGhBNV5aRUNG0RhdnG4FOMg3YJE0O3lh-9J3TnY8ZTMkvVxm_5afclIST56TQyC_513s/s1600-h/startup.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAAVQDKDcLG2fpGwnYrWTxtw4VcsqvZXldhJBa6PXOBWGCQ-f4CUYfTU7S9ffhKqjYK_DcmYG4sGhBNV5aRUNG0RhdnG4FOMg3YJE0O3lh-9J3TnY8ZTMkvVxm_5afclIST56TQyC_513s/s640/startup.PNG&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;Скриптик, который грохает все с Рабочего Стола и Моих Документов при каждом входе пользователя в систему. Дописать в него свои команды тоже не получиться, он доступен только для чтения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Вообщем такое вот пасхальное яйцо.</content><link rel='replies' type='application/atom+xml' href='http://ipfwww.blogspot.com/feeds/5562504293246915351/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://ipfwww.blogspot.com/2009/12/team-viewer-server.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/5562504293246915351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/5562504293246915351'/><link rel='alternate' type='text/html' href='http://ipfwww.blogspot.com/2009/12/team-viewer-server.html' title='Team Viewer Server'/><author><name>ipfwww</name><uri>http://www.blogger.com/profile/07572170763067549251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1IAIbInPJP8tn8MrIzZoVMopy_rhsToUOXNNRo7_tNjY2y3pBdAh7XYXVX-BHu_ufS3mjNN9mBuFyCz1HLXB2KFazh-T_3Kb3FJaDOVGFe3s13Gq7c1l8gI5aoCTgJX11EYQaMj_ExVrY/s72-c/teamviewer_logo.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5816887912585622484.post-3725338249501515136</id><published>2009-11-04T15:50:00.000+02:00</published><updated>2009-11-04T16:07:34.298+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Debian"/><category scheme="http://www.blogger.com/atom/ns#" term="dialin"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="ppp"/><category scheme="http://www.blogger.com/atom/ns#" term="Server"/><title type='text'>Быстро поднимаем DialIn Server</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOq4SS_-UMJAzqKQ3SqJXvnWFsTB_Lynffh-_ts2iayH9LYb0RKZ1kolA6NA8u5mGT3oeVtID7_SRju17tn344RQtS64isI1PIExlxY43VpYuSaQqYJ0waBRcv_MDromneBm7s4hfTYMfG/s1600-h/zyxel_u1496stripped.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOq4SS_-UMJAzqKQ3SqJXvnWFsTB_Lynffh-_ts2iayH9LYb0RKZ1kolA6NA8u5mGT3oeVtID7_SRju17tn344RQtS64isI1PIExlxY43VpYuSaQqYJ0waBRcv_MDromneBm7s4hfTYMfG/s200/zyxel_u1496stripped.gif&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;XXI-ый век... В то время, когда космические кормабли бороздят просторы.... Нет. В то время когда инет стал быстрым, дешевым, безлимитным такой архаизм как dial-up может вызвать только умешку, но тем не менее есть места где до сих пор используеться это чудо инженерной мысли. И собственно говоря даже есть люди которым нужно следить за обородуванием из прошлого и как-то уживаться с ним.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;Это был пролог. Теперь же ближе к сути. Имееться старый dialin сервер (PIII, FreeBSD 4.6) с&amp;nbsp; модемным пулом в 12 Зикселей, обслуживает около трех-четырех одновременных подключений. Задача: Перенести это все дело на отдельный, относительно новый сервер (2*Dual Xeon 2,2; 2048 RAM; 160GB Raid-0;1Gbps link). Строго говоря, такая конфигурация для таких целей не то что слишком хорошая, она просто нереальная. Задействовано будет около 1% мощностей, но поскольку другой машины просто небыло, а старый сервер уже вот вот прикажет долго жить, было решено сделать на чем есть, а незадействованные ресурсы потом придумаем как использовать, хоть поднять несколько виртуальных машин для грубых экспериментов. Основная задача DialIn в нашей организации - предоставление интернета на скорости около 56Kbps, а так же пропуск некоторых пользователей к корпоративному почтовому серверу. &lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgswiCf9vXMVdZEEUGQy5OSn32sRD2vQ0tJM2-WB8gzmff-xkawLSN_3SoGryW6UtLf5Wh55FGjNdgWKX_EFuloCShb2T08oyd0WufOuJ7I5OYLSk5tbX4AHHjetRL5k0HM5FUnI8EuAIri/s1600-h/sy-pio9835-2s_1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgswiCf9vXMVdZEEUGQy5OSn32sRD2vQ0tJM2-WB8gzmff-xkawLSN_3SoGryW6UtLf5Wh55FGjNdgWKX_EFuloCShb2T08oyd0WufOuJ7I5OYLSk5tbX4AHHjetRL5k0HM5FUnI8EuAIri/s200/sy-pio9835-2s_1.jpg&quot; /&gt;&lt;/a&gt;Специально для всей этой кухни закупили две платки &lt;a href=&quot;http://www.moschip.com/mcs9865.php&quot;&gt;Moschip MCS 9865&lt;/a&gt;. В графе поддерживаемых драйверов значиться Linux Kernel 2.6.14 &amp;amp; above. Хмм... Нативная поддержка в Линукс это уже что-то. В качестве дистрибутива был выбран &lt;a href=&quot;http://www.debian.org/releases/stable/&quot;&gt;Debian 5.0 Lenny&lt;/a&gt;. Ну что ж все в сборе, можно приступать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;Поехали&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Инсталяция Debian&#39;а самая стандартная, благо сейчас с установкой Линукса может справиться любой школьник. Я использовал текстовый режим, из компонентов остаавил только базовую систему, больше ничего не требуеться. После установки несем сервер его будущий дом, тобишь серверную, подключаем там все модемы к RS232-портам, само собой питание и сеть. Все дальнейшие действия совершаем удаленно, с рабочего места.&lt;br /&gt;
Собственно что нам нужно сделать:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Собрать и подгрузить драйвер для MCS9865.&lt;/li&gt;
&lt;li&gt;Настроить mgetty для приема вызовов.&lt;/li&gt;
&lt;li&gt;Настроить PPP для установления связи.&lt;/li&gt;
&lt;li&gt;Создать правила файрволла.&lt;/li&gt;
&lt;li&gt;Забыть о сервере.&lt;/li&gt;
&lt;/ol&gt;1. Драйвер. Копируем с диска к плате архив MCS9865_Linux.tar.gz.&lt;br /&gt;
&lt;blockquote style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:~# сp /media/cdrom/drivers/Linux/MCS9865_Linux.tar.gz ~/&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;&quot;&gt;dialin:~# tar zxvf MCS9865_Linux.tar.gz&lt;br /&gt;
dialin:~# cd MCS9865_Linux&lt;br /&gt;
dialin:~# make&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;И сразу же получаем:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;blockquote style=&quot;font-family: Verdana,sans-serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;make -C /lib/modules/2.6.26-2-686/build/ SUBDIRS=/root/MCS9865_Linux modules&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; make[1]: Entering directory `/usr/src/linux-headers-2.6.26-2-686&#39;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; &amp;nbsp; CC [M]&amp;nbsp; /root/MCS9865_Linux/mcs9865.o&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; /root/MCS9865_Linux/mcs9865.c: In function ‘serial9865_probe’:&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; /root/MCS9865_Linux/mcs9865.c:2068: error: ‘SA_SHIRQ’ undeclared (first use in this function)&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; /root/MCS9865_Linux/mcs9865.c:2068: error: (Each undeclared identifier is reported only once&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; /root/MCS9865_Linux/mcs9865.c:2068: error: for each function it appears in.)&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; make[2]: *** [/root/MCS9865_Linux/mcs9865.o] Ошибка 1&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; make[1]: *** [_module_/root/MCS9865_Linux] Ошибка 2&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; make[1]: Leaving directory `/usr/src/linux-headers-2.6.26-2-686&#39;&lt;/span&gt;&lt;br style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot; /&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt; make: *** [default] Ошибка 2&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Ну что же, мы не ищем легких путей. Открываем файл mcs9865.c на 2068-ой строке и видим:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;//Register a ISR&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((retval = request_irq(dev-&amp;gt;irq, serial9865_interrupt,SA_SHIRQ,&quot;mcs9865-serial&quot;,&amp;amp;serial9865_ports[retval])))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto disable;&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Да, я знаю о чем вы подумали, использовать &lt;span style=&quot;font-family: Verdana,sans-serif; font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;goto&lt;/span&gt; &lt;/span&gt;плохо, это влечет за собой уменьшение толщины озонового слоя... Сейчас речь не об этом. Как говорил нам make &lt;span style=&quot;font-family: inherit; font-size: small;&quot;&gt;‘SA_SHIRQ’ undeclared,&lt;/span&gt;&lt;br /&gt;
а благодаря гуглу мы узнаем что SA_SHIRQ уже два года как deprecated и что заменить его нужно на волшебный IRQF_SHARED&lt;span style=&quot;font-size: x-small;&quot;&gt;. &lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;После всех этих шаманств, командуем:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;И драйвер должен нормально собраться, проинсталлироваться и подгрузиться как модуль. Проверяем модули и выдачу lspci:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:~/MCS9865_Linux# lsmod | grep mcs9865&lt;br /&gt;
mcs9865&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 16736&amp;nbsp; 2&lt;br /&gt;
mcs9865_isa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2500&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;
dialin:~/MCS9865_Linux# lspci -v | grep -i &quot;NetMos&quot;&lt;br /&gt;
03:01.0 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])&lt;br /&gt;
03:01.1 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])&lt;br /&gt;
03:01.2 Communication controller: NetMos Technology Device 9865&lt;br /&gt;
03:02.0 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])&lt;br /&gt;
03:02.1 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])&lt;br /&gt;
03:02.2 Communication controller: NetMos Technology Device 9865&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&amp;nbsp;Как видим все отлично поставилось и определилось. В /dev/ появились 4 устройства ttyD0-D3, и 4 ttyS0-S3. Что-то тут не то. Как видно по выводу lspci, имеються две платы-контроллеры с двумя портами на борту и к ним подсоединены по две двухпортовые железки. Тоесть всего портов должно быть 12, а у нас 8. После непродолжительного гугления выяснилось что по умолчанию Линукс отображает только 4 устройства /dev/ttyS и чтобы увеличить это число нужно при загрузке передать ядру параметр 8250.nr_uarts=x, где х - необходимое количество устройств. Приводим /boot/grub/menu.lst к следующему виду:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;default&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;br /&gt;
timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;
color cyan/blue white/blue&lt;br /&gt;
&lt;br /&gt;
title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debian GNU/Linux, kernel 2.6.26-2-686&lt;br /&gt;
root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hd0,0)&lt;br /&gt;
kernel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /vmlinuz-2.6.26-2-686 root=/dev/sda3 ro 8250.nr_uarts=16&lt;br /&gt;
initrd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /initrd.img-2.6.26-2-686&lt;br /&gt;
&lt;br /&gt;
title&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode)&lt;br /&gt;
root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (hd0,0)&lt;br /&gt;
kernel&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /vmlinuz-2.6.26-2-686 root=/dev/sda3 ro single&lt;br /&gt;
initrd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /initrd.img-2.6.26-2-686&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
Перезагружаемся, логинимся и видим:&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:/boot/grub# ls -l /dev/tty[SD]*&lt;br /&gt;
crw-rw---- 1 root dialout 201,&amp;nbsp; 0 Ноя&amp;nbsp; 3 13:37 /dev/ttyD0&lt;br /&gt;
crw-rw---- 1 root dialout 201,&amp;nbsp; 1 Ноя&amp;nbsp; 3 08:00 /dev/ttyD1&lt;br /&gt;
crw-rw---- 1 root dialout 201,&amp;nbsp; 2 Ноя&amp;nbsp; 3 08:00 /dev/ttyD2&lt;br /&gt;
crw-rw---- 1 root dialout 201,&amp;nbsp; 3 Ноя&amp;nbsp; 3 08:00 /dev/ttyD3&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 64 Ноя&amp;nbsp; 3 08:00 /dev/ttyS0&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 65 Ноя&amp;nbsp; 3 08:00 /dev/ttyS1&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 74 Ноя&amp;nbsp; 3 08:00 /dev/ttyS10&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 75 Ноя&amp;nbsp; 3 08:00 /dev/ttyS11&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 76 Ноя&amp;nbsp; 3 08:00 /dev/ttyS12&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 77 Ноя&amp;nbsp; 3 08:00 /dev/ttyS13&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 78 Ноя&amp;nbsp; 3 08:00 /dev/ttyS14&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 79 Ноя&amp;nbsp; 3 08:00 /dev/ttyS15&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 66 Ноя&amp;nbsp; 3 08:00 /dev/ttyS2&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 67 Ноя&amp;nbsp; 3 08:00 /dev/ttyS3&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 68 Ноя&amp;nbsp; 3 08:00 /dev/ttyS4&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 69 Ноя&amp;nbsp; 3 08:00 /dev/ttyS5&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 70 Ноя&amp;nbsp; 3 08:00 /dev/ttyS6&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 71 Ноя&amp;nbsp; 3 08:00 /dev/ttyS7&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 72 Ноя&amp;nbsp; 3 08:00 /dev/ttyS8&lt;br /&gt;
crw-rw---- 1 root dialout&amp;nbsp;&amp;nbsp; 4, 73 Ноя&amp;nbsp; 3 08:00 /dev/ttyS9&lt;br /&gt;
dialin:/boot/grub#&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;/blockquote&gt;То что нужно. Теперь ставим необходимое ПО:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:/boot/grub# aptitude install uucp mgetty ppp&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Говорим init&#39;у что будем использовать модемы:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:~# vim /etc/inittab&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;D0:23:respawn:/sbin/mgetty -D -n 3 ttyD0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;D1:23:respawn:/sbin/mgetty -D -n 3 ttyD1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;D2:23:respawn:/sbin/mgetty -D -n 3 ttyD2&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;И так далее для всех остальных модемов. Пару слов о том что все это значит. 23 - указывает на каких уровнях запуска (runlevels) будет действовать запись, respawn заставляет init перезапускать mgetty после отсоединения пользователей, число после -n, говорит через сколько звонков модем должен поднять трубку. Чтобы изменения вступили в силу, перезапускаем init:&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:~# kill -1 1&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Теперь переходим к настройке mgetty. Собственно все опции храняться в трех файлах, директории /etc/mgetty.В /etc/mgetty/login.config вписываем строчку&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;/AutoPPP/ -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a_ppp&amp;nbsp;&amp;nbsp; /usr/sbin/pppd file /etc/ppp/options.server&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Этим мы указываем что mgetty будет стартовать  &lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;pppd&amp;nbsp;&lt;/span&gt;&lt;/span&gt;при поднятии трубки модемом, а параметры будет брать из файла&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-family: Verdana,sans-serif;&quot;&gt;/etc/ppp/options.server.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;Далее на очере&lt;span style=&quot;font-family: inherit;&quot;&gt;ди файл mgetty.config. Он описывает параметры для каждого из модемов, строки инициализации, скорость, лог файлы для каждого. Мы просто скопировали этот файл со старого сервера. Примерный вид:&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;########################################&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;#&amp;nbsp; 884544&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;### ZyXEL U-3xxxx &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ##&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; rings 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; port ttyD0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; init-chat &quot;&quot; \d\d\d+++\d\d\dATQ0E1V1H0 OK ATL0M0S0=0 OK AT&amp;amp;K3 OK&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; statistics-chat &quot;&quot; AT OK ATI2 OK&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; statistics-file /tmp/modem1.log&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; modem-type cls2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&amp;nbsp; data-only y&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&amp;nbsp;Понятно, что для каждого типа модема строка инициализации должна быть своя. Теперь настраиваем ppp. Создаем файлик /etc/ppp/options.server, в нем содержаться общие параметры для всех модемов. Мы запишем в него только одну строку:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;blockquote style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;dialin:~# &lt;/span&gt;&lt;span style=&quot;font-size: small;&quot;&gt;echo &quot;lock&quot; &amp;gt; /etc/ppp/options.server&lt;/span&gt;&lt;br /&gt;
&lt;/blockquote&gt;Теперь создадим конфигурационные файлы для каждого порта. Имя нужно составлять таким образом: options.&lt;port&gt;port, где вместо port подставляем имя порта для каждого модема.&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;&lt;br /&gt;
В этих файлах храняться настройки соединения. Мы туда впишем такие строки:&lt;/port&gt;&lt;br /&gt;
&lt;blockquote&gt;&lt;div style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;port&gt;modem&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;crtscts&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;-detach&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;require-pap&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;refuse-chap&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;proxyarp&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;login&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;ms-dns 4.2.2.2&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;ms-dns 4.2.2.1&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;ms-dns 193.193.193.100&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;172.16.81.12:10.10.5.202&lt;/port&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;port&gt;&lt;/port&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;port&gt;DNS-серверы внешние, последняя строка задает на ip-адресацию внутри тонеллей pppX, которые будут автоматически подниматься, при соединению пользователей. А весь траффик pppd сам будет заворачивать на этот интерфейс.&amp;nbsp;&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;Используеться PAP-авторизация пользователей, благодаря строкам refuse-chap и require-pap.&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;Пользователей прописываем в файле /etc/ppp/pap-secrets, в формате логин пароль IP-адрес.&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;Ну вот и все, нам осталось только настроить NAT, на вышестоящих шлюзах ну и файрволл на этом. &lt;/port&gt;Однако этот процесс уже сугубо индивидуальный и зависит от топологии сети и требований системных администраторов. Поэтому оставляю это вам. &lt;port&gt;&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;&lt;br /&gt;
&lt;/port&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;port&gt;Эпилог&lt;/port&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;port&gt;В заключение скажу, &lt;/port&gt;что вся эта кухня у нас ест 20Мб RAM из 2466, и 1% ресурсов одного ядра, одного процессора в системе, что чрезвычайно много, однако я уверен, скоро мы найдем применение простаивающим пока мощностям.&lt;br /&gt;
&lt;port&gt;Надеюсь эта статья кому-то поможет, хотя вряд-ли, такое обородование и такие задачи сейчас уже днем с огнем не сыщешь.&amp;nbsp;&lt;/port&gt;&lt;br /&gt;
&lt;port&gt;Ну да ладно, главное - приобретенный опыт и навыки. Удачи.&lt;br /&gt;
&lt;/port&gt;</content><link rel='replies' type='application/atom+xml' href='http://ipfwww.blogspot.com/feeds/3725338249501515136/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://ipfwww.blogspot.com/2009/11/dialin-server.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/3725338249501515136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/3725338249501515136'/><link rel='alternate' type='text/html' href='http://ipfwww.blogspot.com/2009/11/dialin-server.html' title='Быстро поднимаем DialIn Server'/><author><name>ipfwww</name><uri>http://www.blogger.com/profile/07572170763067549251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOq4SS_-UMJAzqKQ3SqJXvnWFsTB_Lynffh-_ts2iayH9LYb0RKZ1kolA6NA8u5mGT3oeVtID7_SRju17tn344RQtS64isI1PIExlxY43VpYuSaQqYJ0waBRcv_MDromneBm7s4hfTYMfG/s72-c/zyxel_u1496stripped.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5816887912585622484.post-8858863271247888594</id><published>2009-11-02T14:29:00.009+02:00</published><updated>2010-04-29T21:27:08.822+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Active Directory"/><category scheme="http://www.blogger.com/atom/ns#" term="C#"/><category scheme="http://www.blogger.com/atom/ns#" term="Ldap"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Server"/><title type='text'>Неординарная работа с Active Directory</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlpKBesImY6VAoIhy3NGU2cWGWCdcKjYxRL5OJid9v0FmlHMoeXT6t_81lvq4hoUWB0n2P5_8a0gFMuQfov36wV4_U7OGTXHb1Ro0KhfO4y81gL0QjfBEgKlOKPgzQ55rKK8WVLvcUuT_l/s1600-h/activedirectory9.jpg&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5399494267356154626&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlpKBesImY6VAoIhy3NGU2cWGWCdcKjYxRL5OJid9v0FmlHMoeXT6t_81lvq4hoUWB0n2P5_8a0gFMuQfov36wV4_U7OGTXHb1Ro0KhfO4y81gL0QjfBEgKlOKPgzQ55rKK8WVLvcUuT_l/s400/activedirectory9.jpg&quot; style=&quot;float: left; margin: 0pt 10px 10px 0pt;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
Организации с уже давно сформировавшейся инфраструктурой сети и доменов AD все чаще сталкиваються с необходимостью получать данные о различных обьектах из &lt;a href=&quot;http://ru.wikipedia.org/wiki/Active_Directory&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Active Directory&lt;/a&gt;,&lt;br /&gt;
будь-то простое определение пользователей членов некоторой группы безопастности или же полное интегрирование уже существующей системы управления персоналом с доменом. Эта статья предназначена прежде всего для облегчения работы системных администраторов предприятий, благодаря автоматизации рутинных задач с помощью скриптовых (и не только) языков программирования.&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;b style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif;&quot;&gt;Начнем с основ&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;Active Directory представляет собой LDAP-совместимую реализацию Службы Каталогов, основное предназначение которой – предоставить &lt;i&gt;централизированное &lt;/i&gt;средство управления всеми елементами определенной организации подключенными к сети, а так же хранить подробную информацию о них. Каждый елемент Службы Каталогов принято называть &lt;i&gt;обьектом&lt;/i&gt;, а информация о нем храниться в виде набора &lt;i&gt;атрибутов. &lt;/i&gt;&lt;br /&gt;
Ограничение на количество обьектов накладываеться только движком БД(Microsoft Jet Blue) который для своей работы использует АД. Теоретически эти ограничения составляют: 16Тб на размер базы данных и около 1млрд обьектов Службы Каталога. Пока что этот лимит небыл превышен и вряд ли будет в обозримом будущем…&lt;br /&gt;
Для удобной работы с такими большимы количествами обьектов АД организовывает их в логические группы, создавая таким образом иерархическую структуру. Обьекты способные содержать в себе другие обьекты называют &lt;i&gt;контейнерами&lt;/i&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div align=&quot;center&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPFQYT-LVJB1dJVvardqbGQMdKfX8w3jzPYwQPSmBWS1CJqRTvTmmJLuKvsM77pdo7Y7klQpCLu86IxYy7rIi0wjpYNaKlNGGo8WW4pt20MLKtRY4I2VvqPknPRIOo_skqJWuqHnwMDYOA/s1600-h/ActiveDirectoryMMC1.png&quot;&gt;&lt;img alt=&quot;Оснастика администрирования ActiveDirectory&quot; border=&quot;0&quot; height=&quot;340&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3PTtQ-kx73vXCjaBYQcjQ_CPlqUBslXYMgg3XR6Lo4sIlu0vrw1zVOKSOVPJsQdXhDPQnfmDJzApQ4QqNvCn9C05P7US71EGquzQs6paZkHeGN22KvrLGGe5I9db0HVawSYxiqhM6ohA9/?imgmax=800&quot; style=&quot;border-width: 0px; display: block; float: none; margin-left: auto; margin-right: auto;&quot; title=&quot;Оснастика администрирования ActiveDirectory&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;b&gt;(Оснастика администратора ActiveDirectory)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;Обьект можно однозначно идентифицировать по его имени. АД поддерживает такие форматы именования обьектов как: &lt;a href=&quot;http://ru.wikipedia.org/wiki/UNC&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;UNC&lt;/a&gt;, &lt;a href=&quot;http://ru.wikipedia.org/wiki/URL&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot; title=&quot;URL&quot;&gt;URL&lt;/a&gt; и &lt;a href=&quot;http://ru.wikipedia.org/wiki/LDAP&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;LDAP&lt;/a&gt;. Каждый обьект имеет &lt;i&gt;составное имя&lt;/i&gt; (Distinguished name, DN) и именно его мы будем использовать для манипулирования данными Службы Каталогов. Атрибуты составного имени:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;DC – класс обьекта домена &lt;/li&gt;
&lt;li&gt;OU – имя организационной единицы (подразделения) &lt;/li&gt;
&lt;li&gt;CN – общее имя &lt;/li&gt;
&lt;/ul&gt;Пример составного имени: &lt;tt&gt;CN=Ivanov I.A,OU=Маркетинг,DC=microsoft,DC=com&lt;/tt&gt;&lt;br /&gt;
Каждому обьекту службы каталогов также присваиваеться уникальный идентификатор (GUID/UUID) – уникальная строка длиной в 128 бит, которая используеться большей частью для внутренних нужд Active Directory. Пример:&lt;br /&gt;
&lt;blockquote&gt;&lt;h4&gt;{1acc40ef-d1e1-4b0e-94d6-ef1894b3545a}&lt;/h4&gt;&lt;/blockquote&gt;Физически вся информация об объектах AD храниться в файле &lt;br /&gt;
&lt;blockquote&gt;%systemroot%\NTDS\NTDS.DIT&lt;br /&gt;
&lt;/blockquote&gt;Вся работа с ним осуществляеться системным агентом каталога(DSA), именно он выстраивает иерархию обьектов и предоставляет возможность работы этими данными приложениям извне используя протокол LDAP(Lightweight Directory Access Protocol). Для этого необходимо сформировать LDAP URL. Делаеться это достаточно просто, он имеет вид: &lt;a href=&quot;ldap://server/&quot;&gt;LDAP://server/&lt;/a&gt; + DN, где server – IP адрес или DNS имя сервера на котором располагаеться служба каталогов, а DN  - уже знакомое нам составное имя. Пример ldap url: &lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;ldap://dc.microsoft.com/CN=IvanovI.A,OU=%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%82%D0%B8%D0%BD%D0%B3,DC=microsoft,DC=com&quot;&gt;LDAP://dc.microsoft.com/&lt;tt&gt;CN=IvanovI.A,OU=Маркетинг,DC=microsoft,DC=com&lt;/tt&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/blockquote&gt;&lt;h2&gt;&lt;/h2&gt;&lt;h2&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;Trebuchet MS&amp;quot;,sans-serif; font-weight: normal;&quot;&gt;&lt;b&gt;Приступаем&lt;/b&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h2&gt;&lt;span style=&quot;font-size: x-large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/h2&gt;Имея все эти сведения можем уже попробовать написать простенькое приложение основная задача которого – соединиться со службой каталогов и забрать какие-то данные, пускай это будут сведения обо всех основных контроллерах домена предприятия.&lt;br /&gt;
Для реализации вышепоставленной задачи нам понадобиться:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Visual C# (мы начнем с него, можно и Express версии) &lt;/li&gt;
&lt;li&gt;Реальный или виртуальный контроллер домена &lt;/li&gt;
&lt;li&gt;Учетная запись с правами не ниже администратора домена &lt;/li&gt;
&lt;/ul&gt;Создавать мы будем пока что консольное приложение, но потом легко будет подключить и GUI.&lt;br /&gt;
Создаем новый проект:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeOaWlD-ZhyjkHmAw9TkLSFND9cP0hCdHCIdhEDgPiZr9-rEu02745o5oSyeOvH9NrRH1NDssRSSkBICRYRiUmuev6bPoxcPK5nb_Mprwd1jx8MICGCmlje-IFJPd4BftFwDQZjiefmmNL/s1600-h/image31.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5399494518735327554&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeOaWlD-ZhyjkHmAw9TkLSFND9cP0hCdHCIdhEDgPiZr9-rEu02745o5oSyeOvH9NrRH1NDssRSSkBICRYRiUmuev6bPoxcPK5nb_Mprwd1jx8MICGCmlje-IFJPd4BftFwDQZjiefmmNL/s320/image31.png&quot; style=&quot;cursor: pointer; height: 215px; margin: 0pt 10px 10px 0pt; width: 320px;&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
Сразу идем в References и подключаем System.DirectoryServices&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHnWwIW_DvEQ_rO2zI3RnfnOf_k_BZr1WMsX_1o4acQZFT71hFe0NjlALJWuUET-5yJBHjp35Y8THg_u4qa4qTFBJ0Z7sCkyQQ0XLzIa_33FLA1zcV4f0NjLUFoPIG3JH1_3cuaOCpPluX/s1600-h/image16.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5399495291519902882&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHnWwIW_DvEQ_rO2zI3RnfnOf_k_BZr1WMsX_1o4acQZFT71hFe0NjlALJWuUET-5yJBHjp35Y8THg_u4qa4qTFBJ0Z7sCkyQQ0XLzIa_33FLA1zcV4f0NjLUFoPIG3JH1_3cuaOCpPluX/s320/image16.png&quot; style=&quot;cursor: pointer; height: 270px; margin: 0pt 10px 10px 0pt; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;/span&gt; &lt;br /&gt;
Теперь подключаем пространство имен:&lt;br /&gt;
&lt;blockquote&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.DirectoryServices;&lt;br /&gt;
&lt;/blockquote&gt;Теперь пара слов для чего мы все это проделали. Основным средством взаимодействия нашего приложения с Active Directory являеться обьект System.DirectoryServices. Располагаеться он во внешней библиотеке System.DirectoryServices.dll и чтобы его использовать нужно подключиться эту самую бибиотеку. После всех этих действий мы можем забыть о том что это внешний компонент и работать с ним как с родным.&lt;br /&gt;
Из пространства имен System.DirectoryServices нас прежде всего интересуют два класса: DirectoryEntry и DirectorySearcher. MSDN нам говорит что первый из них инкапсулирует в себе узел или обьект иерархии Active Directory, а второй служит для выполнения запросов к Active Directory Domain Services. Используя эти два класса можно делать с обьектами Службы каталога все что угодно.&lt;br /&gt;
&lt;pre&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style=&quot;color: black; font-family: Courier New; font-size: 75%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Collections.&lt;span style=&quot;color: #2b91af;&quot;&gt;Generic&lt;/span&gt;;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Linq;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.DirectoryServices;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Text;

&lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt; adcmd
{
&lt;span style=&quot;color: blue;&quot;&gt;   class&lt;/span&gt; Program
   {
&lt;span style=&quot;color: blue;&quot;&gt;      static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; Main(&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;[] args)
      {
         DirectoryEntry entry = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;LDAP://Toaster&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;admin&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;123&quot;&lt;/span&gt;);
&lt;span style=&quot;color: blue;&quot;&gt;         foreach&lt;/span&gt; (DirectoryEntry child &lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt; entry.Children)
&lt;span style=&quot;color: #2b91af;&quot;&gt;            Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;{0}: ({1})&quot;&lt;/span&gt;, child.Name, child.Path));
      }
   }
}
&lt;/span&gt;
&lt;/code&gt;
&lt;/blockquote&gt;&lt;/pre&gt;Вот такой простенький код покажет нам ВСЕ обьекты AD первого уровня вложенности, с их путями в формате LDAP URL. Ключевое свойство здесь entry.Children, это коллекция и содержит она все дочерние елементы обьекта entry. Таким образом, мы можем добраться до обьектов любого уровня вложенности, ведь у child тоже есть поле Children. К родительскому же обьекту можно обратиться используя свойство Parent.&lt;br /&gt;
Далее неплохо было бы научиться работать с атрибутами обьектов. Делаеться это через свойство экземпляра класса DirectoryEntry Properties. Давайте посмотрим все атрибуты корневого елемента каталога:&lt;br /&gt;
&lt;pre&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style=&quot;color: black; font-family: Courier New; font-size: 75%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Collections.&lt;span style=&quot;color: #2b91af;&quot;&gt;Generic&lt;/span&gt;;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Linq;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.DirectoryServices;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Text;

&lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt; adcmd
{
&lt;span style=&quot;color: blue;&quot;&gt;   class&lt;/span&gt; Program
   {
&lt;span style=&quot;color: blue;&quot;&gt;      static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; Main(&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;[] args)
      {
         DirectoryEntry entry = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;LDAP://Toaster&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;admin&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;123&quot;&lt;/span&gt;);
&lt;span style=&quot;color: blue;&quot;&gt;         foreach&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt; prop &lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt; entry.Properties.PropertyNames)
&lt;span style=&quot;color: #2b91af;&quot;&gt;            Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;{0}: {1}&quot;&lt;/span&gt;, prop, entry.Properties[prop].Value.ToString()));
      }
   }
}
&lt;/span&gt;&lt;/code&gt;
&lt;/blockquote&gt;&lt;/pre&gt;Вот что получилось у меня:&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOeSyi2pDQhF72bi9rUaktrrSaN8MN3Gk9Wr42r2C278mqt5Jeg0t7863mLqvlyKjf0Cp1UuNadgqJIRiWtBDqFFh5YfLxPszQBnCN2gYLJz2lXcv2SUBjdTso3TUXq1kSai_HdQ86AUnE/s1600-h/image32.png&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5399496450710090146&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhOeSyi2pDQhF72bi9rUaktrrSaN8MN3Gk9Wr42r2C278mqt5Jeg0t7863mLqvlyKjf0Cp1UuNadgqJIRiWtBDqFFh5YfLxPszQBnCN2gYLJz2lXcv2SUBjdTso3TUXq1kSai_HdQ86AUnE/s320/image32.png&quot; style=&quot;cursor: pointer; height: 314px; width: 320px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
Итак, мы уже немного поднаторели в выборке данных, приступаем к реализации основной задачи. Как вы помните, нужно выбрать всех пользователей (вывести фамилию и инициалы) которые принадлежат определенной группе безопастности.&lt;br /&gt;
Алгоритм работы предельно прост:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Соединяемся со службой каталога; &lt;/li&gt;
&lt;li&gt;вибираем всех пользователей; &lt;/li&gt;
&lt;li&gt;проходимся по всех и смотрим атрибут MemberOf. Говоря на языке С# он представляет собой коллекцию обьектов типа String с именами всех груп безопастности, в которых состоит пользователь. Тоесть то что доктор прописал! &lt;/li&gt;
&lt;li&gt;перебираем эту коллекцию и если находим соответствие – выводим на экран значение другого атрибута, а именно displayUsername, в нем содержиться фамилия и инициалы пользователя, указанные при введении его в AD. &lt;/li&gt;
&lt;/ul&gt;Создаем новый проект, или же модицируем ранее созданный. Нам понадобяться те же библиотеки.&lt;br /&gt;
Код&lt;br /&gt;
&lt;pre&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style=&quot;color: black; font-family: Courier New; font-size: 75%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Collections.&lt;span style=&quot;color: #2b91af;&quot;&gt;Generic&lt;/span&gt;;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Linq;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.DirectoryServices;
&lt;span style=&quot;color: blue;&quot;&gt;using&lt;/span&gt; System.Text;

&lt;span style=&quot;color: blue;&quot;&gt;namespace&lt;/span&gt; adcmd
{
&lt;span style=&quot;color: blue;&quot;&gt;   class&lt;/span&gt; Program
   {
&lt;span style=&quot;color: blue;&quot;&gt;      static&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; Main(&lt;span style=&quot;color: blue;&quot;&gt;string&lt;/span&gt;[] args)
      {
&lt;span style=&quot;color: #2b91af;&quot;&gt;         String&lt;/span&gt; FML;  &lt;span style=&quot;color: green;&quot;&gt;// здесь будем хранить инициалы&lt;/span&gt;
&lt;span style=&quot;color: #2b91af;&quot;&gt;         String&lt;/span&gt; OU;    &lt;span style=&quot;color: green;&quot;&gt;// а здесь отдел&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;          /* Соединяемся с Active Directory */&lt;/span&gt;
          DirectoryEntry entry = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; DirectoryEntry(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;LDAP://internal.Toaster&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;admin&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;123&quot;&lt;/span&gt;);
&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span style=&quot;color: black; font-family: Courier New; font-size: 75%;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;          /* Создаем обьект для поиска *&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;
&lt;code&gt;&lt;span style=&quot;color: black; font-family: Courier New; font-size: 75%;&quot;&gt;          DirectorySearcher mySearcher = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; DirectorySearcher(entry);
&lt;span style=&quot;color: green;&quot;&gt;          /* Настраиваем фильтр поиска (только пользователи) */&lt;/span&gt;
          mySearcher.Filter = &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;(&amp;amp;(objectClass=user)(objectCategory=person))&quot;&lt;/span&gt;;
&lt;span style=&quot;color: green;&quot;&gt;          /* Сортировка по убыванию */&lt;/span&gt;
          mySearcher.Sort = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; SortOption(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;displayName&quot;&lt;/span&gt;, SortDirection.Ascending);
&lt;span style=&quot;color: green;&quot;&gt;          /* Проходимся по всех найденных обьектах */&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;          foreach&lt;/span&gt; (SearchResult resEnt &lt;span style=&quot;color: blue;&quot;&gt;in&lt;/span&gt; mySearcher.FindAll())
          {
&lt;span style=&quot;color: green;&quot;&gt;             /* Получаем DirectoryEntry для каждого обьекта AD */&lt;/span&gt;
             DirectoryEntry de = resEnt.GetDirectoryEntry();
&lt;span style=&quot;color: green;&quot;&gt;             /* Если пользователь состоит в какой-то группе безопастности и имеет имя... */&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;             if&lt;/span&gt; (de.Properties[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;MemberOf&quot;&lt;/span&gt;].Value != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; de.Properties[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;displayName&quot;&lt;/span&gt;].Value != &lt;span style=&quot;color: blue;&quot;&gt;null&lt;/span&gt;)
             {
&lt;span style=&quot;color: green;&quot;&gt;                /* ...начинаем просмотр всех групп */&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;                for&lt;/span&gt; (&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; i = 0; i &amp;lt; style=&quot;color: rgb(163, 21, 21);&quot;&amp;gt;&quot;MemberOf&quot;].Count; i++)
&lt;span style=&quot;color: green;&quot;&gt;                 /* Этот пользователь член нужной группы? */&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;                 if&lt;/span&gt; (de.Properties[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;MemberOf&quot;&lt;/span&gt;][i].ToString().Contains(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;Бухгалтерия&quot;&lt;/span&gt;))
                 {
&lt;span style=&quot;color: green;&quot;&gt;                    /* Да, извлекаем Фамилию и инициалы */&lt;/span&gt;
                    FML = de.Properties[&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;displayName&quot;&lt;/span&gt;][0].ToString();
&lt;span style=&quot;color: green;&quot;&gt;                    /* А теперь извлекаем OU(отдел) пользователя*/&lt;/span&gt;
                    OU = de.Parent.Path.ToString();
&lt;span style=&quot;color: green;&quot;&gt;                    /* Чистим данные от ненужного мусора */&lt;/span&gt;
                    OU = OU.Replace(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;LDAP://internal.Toaster/OU=&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;);
                    OU = OU.Replace(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;,DC=Toaster&quot;&lt;/span&gt;, &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;&quot;&lt;/span&gt;);
&lt;span style=&quot;color: green;&quot;&gt;                    /* Выводим искомую информацию в форматированном виде. */&lt;/span&gt;
&lt;span style=&quot;color: #2b91af;&quot;&gt;                    Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #2b91af;&quot;&gt;String&lt;/span&gt;.Format(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;{0}\t{1}&quot;&lt;/span&gt;, FML, OU));
                 }
              }
           }
&lt;span style=&quot;color: #2b91af;&quot;&gt;        Console&lt;/span&gt;.WriteLine(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;All done.&quot;&lt;/span&gt;);
&lt;span style=&quot;color: #2b91af;&quot;&gt;        Console&lt;/span&gt;.ReadKey();
     }
  }
}&lt;/span&gt;
&lt;/code&gt;
&lt;/blockquote&gt;&lt;/pre&gt;Ну вот и все, используя эти знания можно легко переписать получившийся код под любую задачу или же сделать все необходимые параметры изменяемыми, хардкодить не хорошо. А можно сделать эдакий универсальный менеджер для облегчения работы с доменом, стандартные оснастики довольно убоги. Вобщем поле для экспериментов довольно большое, дерзайте! За сим позвольте откланяться.</content><link rel='replies' type='application/atom+xml' href='http://ipfwww.blogspot.com/feeds/8858863271247888594/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://ipfwww.blogspot.com/2009/11/active-directory.html#comment-form' title='Комментарии: 3'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/8858863271247888594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/8858863271247888594'/><link rel='alternate' type='text/html' href='http://ipfwww.blogspot.com/2009/11/active-directory.html' title='Неординарная работа с Active Directory'/><author><name>ipfwww</name><uri>http://www.blogger.com/profile/07572170763067549251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlpKBesImY6VAoIhy3NGU2cWGWCdcKjYxRL5OJid9v0FmlHMoeXT6t_81lvq4hoUWB0n2P5_8a0gFMuQfov36wV4_U7OGTXHb1Ro0KhfO4y81gL0QjfBEgKlOKPgzQ55rKK8WVLvcUuT_l/s72-c/activedirectory9.jpg" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5816887912585622484.post-145093346265513822</id><published>2009-10-17T20:17:00.001+03:00</published><updated>2009-11-02T17:00:40.759+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="First"/><category scheme="http://www.blogger.com/atom/ns#" term="Hello world"/><title type='text'>Hello, world!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWg-8KElNYbDD_z0ktGuFXRlYS630Cx2NL0U00woM4mWMNvDYfi7qyjWNVeB8rSIF17exfyVz6xEVpfUCR7w_KiRXaMOHaG8O3_e61jy20YIGQ4jhIU2nkQu3bIlsfP40uedmaiW4G820p/s1600-h/image%5B3%5D.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWg-8KElNYbDD_z0ktGuFXRlYS630Cx2NL0U00woM4mWMNvDYfi7qyjWNVeB8rSIF17exfyVz6xEVpfUCR7w_KiRXaMOHaG8O3_e61jy20YIGQ4jhIU2nkQu3bIlsfP40uedmaiW4G820p/s320/image%5B3%5D.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;Это первая запись в блоге, обычно люди в первом посте приветствуют своих будущих читателей и т. д. Для меня это просто место где я буду учиться излагать свои мысли, писать на интересные темы, преимущественно на Ай-ти тематику, тобишь программирование (&lt;strike&gt;C, C++, C#, Delphi, PHP, Python, shell, scheme&lt;/strike&gt;) на чем угодно, администрирование &lt;strike&gt;Windows/Unix/Linux&lt;/strike&gt; всего что только можно, ну и вообще о гиковом лайфстайле. Надеюсь блог поможет мне как-то структурировать мои знания и навыки, а также развить свой стиль написания статей.</content><link rel='replies' type='application/atom+xml' href='http://ipfwww.blogspot.com/feeds/145093346265513822/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://ipfwww.blogspot.com/2009/10/hello-world.html#comment-form' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/145093346265513822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5816887912585622484/posts/default/145093346265513822'/><link rel='alternate' type='text/html' href='http://ipfwww.blogspot.com/2009/10/hello-world.html' title='Hello, world!'/><author><name>ipfwww</name><uri>http://www.blogger.com/profile/07572170763067549251</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgWg-8KElNYbDD_z0ktGuFXRlYS630Cx2NL0U00woM4mWMNvDYfi7qyjWNVeB8rSIF17exfyVz6xEVpfUCR7w_KiRXaMOHaG8O3_e61jy20YIGQ4jhIU2nkQu3bIlsfP40uedmaiW4G820p/s72-c/image%5B3%5D.png" height="72" width="72"/><thr:total>0</thr:total></entry></feed>