+38 (067) 901-63-22

Корзина

0 товара(ов) на сумму
0 грн.

Записи автора Рудюк Сергей

Установка и настройка DNS сервера Ubuntu

Установка и настройка DNS сервера Ubuntu

Для начала нужно установить самые последние обновления системы

sudo apt-get update sudo apt-get upgrade

После этого установим службу DNS сервера Bind9

sudo aptitude install bind9

после установки службы, она автоматически запуститься

nastrojka-DNS-servera-Ubuntu-1

Следующим шагом, генерируем ключ для обновления DNS записей

dnssec-keygen -a HMAC-MD5 -b 128 -r /dev/urandom -n USER DHCP_UPDATER

выводим его на экран

cat Kdhcp_updater.*.private|grep Key

на экране вы должны увидеть ключ, что то подобно этому:

Key: 4GD8OIb8pZk4vAueACAfUQ==

Настраиваем DNS сервер Bind9

Открываем файл конфигурации

sudo nano /etc/bind/named.conf.options

Добавим следующий код:

forwarders { 8.8.8.8; 8.8.4.4; }; listen-on { 127.0.0.1; 192.168.0.1; };



  • forwaders – вышестоящий dns сервер (сервер гугла), используется если url запроса не найден в нашей базе.
  • listen-on – адреса через которые будет обслуживаться наш DNS сервер.

Сохраняем (Ctrl+O) и закрываем (Ctrl+X) файл.

Перезапустим bind9

sudo service bind9 restart

Теперь можно протестировать работу нашего DNS сервера

Добавим в фал /etc/resolv.conf строчку с нашим DNS сервером (так как файл /etc/resolv.conf при перезагрузке меняет значения на дефолтные, добавить запись нужно в тот файл из которого будут браться дефолтные значения)

sudo nano /etc/resolvconf/resolv.conf.d/tail

в этот файл пишем следующее:

domain lab.loc search lab.loc nameserver 127.0.0.1

Сохраняем файл, закрываем его и перезагружаем сервер. После перезагрузки протестируем работу сервера, выполните следующую команду:

dig ubuntu.ru

в ответ вы получите ответ с временем выполнения запроса (выделено цветом)

nastrojka-DNS-servera-Ubuntu-1 otvet-komandy-dig-600x472Как видите запрос был выполнен за 284 мсек. Теперь еще раз выполним этот же запрос и проверим время запроса

otvet-komandy-dig-2-600x471Повторный запрос был выполнен за 7 мсек! Отлично! Кэширование запросов работает. Двигаемся дальше.

Настройка основного DNS сервера

Исходные данные:

  • Доменное имя – lab.loc
  • IP сервера – 192.168.0.1
  • Имя сервера – srv-01.lab.loc

Нам нужно будет указать две зоны (прямого и обратного просмотра) и прописать их в конфигурации сервера.

Я начну с конца и укажу настройки зон в файле конфигурации. Открываем его

sudo nano /etc/bind/named.conf.local

и вставляем следующее:

key DHCP_UPDATER { algorithm HMAC-MD5.SIG-ALG.REG.INT; secret "4GD8OIb8pZk4vAueACAfUQ=="; }; zone "lab.loc" { type master; file "/var/lib/bind/db.lab.loc"; allow-update { key DHCP_UPDATER; }; }; //reverse zone zone "0.168.192.in-addr.arpa" { type master; file "/var/lib/bind/db.192"; allow-update { key DHCP_UPDATER; }; };

  • key DHCP_UPDATER — информация о ключе, который мы с вами записывали (в кавычки вам нужно вписать свой ключ)
  • zone «lab.loc» — информация о зоне использования DNS, указан тип — master, путь к файлу хранения данных зоны, обновления файла разрешено с использованием ключа.
  • zone «0.168.192.in-addr.arpa» — создание зоны обратного просмотра

Теперь создадим сами файлы в которых будут храниться данные зоны lab.loc. Для этого скопируем образец файла прямого просмотра:

sudo cp /etc/bind/db.local /var/lib/bind/db.lab.loc

откроем его

sudo nano /var/lib/bind/db.lab.loc

и внесем правки как у меня:

; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 20141126 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS srv-01.lab.loc. @ IN A 192.168.0.1 @ IN AAAA ::1 srv-01 IN A 192.168.0.1

Теперь скопируем файл зоны обратного просмотра:

sudo cp /etc/bind/db.127 /var/lib/bind/db.192

откроем его

sudo nano /var/lib/bind/db.192

Вносим в него следующее:

; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA srv-01.lab.loc. root.srv-01.lab.loc. ( 20141126 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS srv-01. 1 IN PTR srv-01.lab.loc.

Сохраняем, закрываем, перезапускаем Bind9

sudo /etc/init.d/bind9 restart

Сохраняем, закрываем, проверяем работу DNS сервера:

nslookup srv-01.lab.loc

в ответ вы должны увидеть следующее: forward-zone-test-600x435Как видите зона прямого просмотра работает, нам показался адрес проверяемого имени. Теперь проверим работу зоны обратного просмотра

nslookup 192.168.0.1

В ответ должны получить следующее:

reverse-zone-test-600x429Как видите в ответ мы получили имя сервера по его адресу. Если у вас в ответ на nslookup так же все корректно отображается, значит вы все сделали правильно! Если нет, проверяйте что сделали не так.

Настройка динамического обновления зон DHCP сервером

Если вы вместе со мной настраивали сервер с самого начала, тогда у вас не должно возникнуть трудностей. Откроем файл /etc/dhcp/dhcpd.conf

sudo nano /etc/dhcp/dhcpd.conf

Проверяем что опция option domain-name содержит имя домена lab.loc, строку ddns-update-style none; закомментировать. Теперь добавим строчку update-static-leases on; – она отвечает за создание зон для клиентов у которых статичный IP адрес. Для автоматизации этого процесса, добавим следующий код:

ddns-update-style interim; update-static-leases on; key DHCP_UPDATER { algorithm hmac-md5; secret "CO0WnumqxGoxqGEDjaR3YA=="; } zone lab.loc. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; }

где secret это тот самый код который мы делали вначале статьи.

Вот пример моего файла /etc/dhcp/dhcpd.conf:

default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.10 192.168.0.254; option domain-name-servers 192.168.0.1; option domain-name "lab.loc"; option routers 192.168.0.1; option broadcast-address 192.168.0.255; default-lease-time 604800; max-lease-time 604800; } ddns-update-style interim; update-static-leases on; key DHCP_UPDATER { algorithm hmac-md5; secret "LUH8l/F2OtaVrA6eSffJog=="; } zone lab.loc. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.168.192.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; } log-facility local7;

Больше никакие настройки DHCP не трогаем, перезапускаем bind9 и dhcp

sudo /etc/init.d/bind9 restart
sudo /etc/init.d/isc-dhcp-server restart

Теперь нужно проверить как все это дело работает “в бою”. Запускаем клиентскую машину, которая находиться в сети с сервером. После включения машина получит IP адрес от DHCP сервера, а DHCP сервер создаст запись вроде klient-pc.lab.loc.

На запрос nslookup yos-pc (yos-pc это имя клиентской машины), мы должны увидеть ответ от сервера

Win7-600x450Как видите по скриншоту, работает и прямой и обратный запросы к DNS.

После перезагрузки сервера, можно посмотреть на файлы прямого и обратного просмотра, в них вы увидите записи о новых машинах, вот пример моего файла, после перезагрузки сервера

zapis-v-dns-596x480Источник: http://faqpc.ru/nastrojka-dns-servera-ubuntu/

Что делать, если автоматическое обновление Wordpress завершилось неудачей

Выход новых версий WordPress происходит регулярно: устраняются разнообразные уязвимости, решаются вопросы с безопасностью, добавляется уникальный функционал. В данном контексте очень важно проводить своевременное обновление, которое совершается очень просто: с помощью одного щелчка мышью в панели администратора. Несколько минут — и WordPress обновлился до новой версии. Однако бывают ситуации, когда автоматическое обновление WordPress заканчивается провалом. Давайте посмотрим, почему это происходит, и что в таком случае можно сделать.

Как выглядит ошибка автоматического обновления в WordPress?

После инициации автоматического обновления ядра WordPress (скажем, от версии 3.1.0 до 3.1.1) на экране “Update WordPress” будут отображаться статусы, характеризующие каждый шаг обновления:

Downloading update from http://wordpress.org/wordpress-3.1.1.zip… Unpacking the update… Verifying the unpacked files… Installing the latest version…

Пока, вроде бы, все в порядке. Давайте посмотрим, что произойдет дальше.

auto-update-failВ нашем случае сообщение, стоящее перед “Installation Failed”, раскрывает суть возникшей проблемы. Это самый простой вариант ошибки. В более сложных ситуациях статусы вообще не выводятся на экран, поэтому приходится разбираться в возникшей проблеме самостоятельно. Более того, в результате такой проблемы доступ к сайту может быть заблокирован для всех пользователей, включая администратора. Если администратор попытается загрузить какую-либо из страниц своего сайта, он получит на экран страницу со следующим содержанием:

Briefly unavailable for scheduled maintenance. Check back in a minute.

Очень сложно справиться с проблемой, если вы не можете залогиниться как администратор. К счастью, решить вопрос можно и без администраторских полномочий. Достаточно использовать доступ через FTP: пройти в корневую директорию и удалить файл .maintenance. Если ваш FTP-клиент не видит файлов, начинающихся с точки, попробуйте войти в панель управления вашего сервера и использовать файловый менеджер для поиска и удаления требуемого файла. На следующем скриншоте представлен файл .maintenance в корневой директории WordPress:

auto-update-fileЭтот файл содержит переменную, которая используется функцией wp_maintenance:

<?php $upgrading = 1302115706; ?>

Если вы столкнулись с блокировкой доступа к своему ресурсу, просто удалите файл .maintenance, чтобы справиться с проблемой. Как только вы сделаете это, вам вновь откроется доступ к панели администратора и другим страницам сайта. Оказавшись в панели администратора, вы можете увидеть небольшое уведомление, которое информирует вас о недавнем провале автоматического обновления:

auto-update-fail-message

An automated WordPress update has failed to complete – please attempt the update again now.



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

Проверка прав доступа к файлам

Установка надлежащих прав доступа к файлам — один из способов справиться с различными неприятностями, возникающими в процессе автообновления. В разделе «Обновление Консоли» кодекса WordPress можно увидеть следующий совет, касающийся решения проблем:

Удостоверьтесь в том, что ваша директория WordPress связана с тем пользовательским именем, под которым запущен сервер Apache. К примеру, если ваш сервер запущен как https, и ваши файлы лежат в папке /var/wordpress, используйте “chown -R apache.apache /var/wordpress.”

Наряду с этим вы можете также попытаться изменить права доступа для директории /upgrade/. Как показано на следующем скриншоте, WordPress использует папку /upgrade/ для хранения временного файла, создаваемого в процессе установки:


auto-update-tmp

Для того чтобы временный файл был создан в каталоге /upgrade/, он (каталог) должен быть перезаписываемым для сервера. Чтобы понять, послужило ли это причиной возникновения проблем, попробуйте изменить права доступа для каталога на 777 (или на любой другой CHMOD эквивалент), после чего повторите процесс автоматического обновления. Если это сработало, то вопрос решен, правда, с небольшой оговоркой: вы должны использовать такие права доступа, которые выставляют самые жесткие ограничения из всех возможных. Получить такую комбинацию можно как опытным путем, так и с помощью изучения различных справок. Online CHMOD Calculator поможет вам с подбором подходящих прав доступа.

Отключение безопасного режима

Отключение безопасного режима, если оно разрешено, может помочь справиться с проблемами, вызванными автоматическим обновлением. Согласно PHP-руководству, начиная с версии PHP 5.3.0 безопасный режим считается устаревшей возможностью. Отключить безопасный режим можно несколькими способами. Самый простой способ — отключение безопасного режима в панели управления сервера, но этот способ не всегда доступен. Обходной путь — добавление следующего сниппета в файл php.ini:

safe_mode = Off

или следующего сниппета в конфигурационный файл Apache:

<Directory /var/www/public> php_admin_flag safe_mode off </Directory>

Добавьте этот код в файл httpd.conf и перезапустите Apache.

Определение FTP переменных в файле wp-config.php

Еще один способ вернуть к работе автмоатическое обновление — задать необходимые переменные в файле wp-config.php. Для этого метода существует множество различных вариаций, так что вам придется экспериментально выяснять требуемые переменные. Лично у меня сейчас стоит следующая рабочая конфигурация:

define('FS_CHMOD_FILE', 0755); define('FS_CHMOD_DIR', 0755); define('FS_METHOD', 'ftpext'); define('FTP_BASE', '/httpdocs/'); define('FTP_CONTENT_DIR', '/httpdocs/wp-content/'); define('FTP_PLUGIN_DIR ', '/httpdocs/wp-content/plugins/'); define('FTP_USER', 'username'); define('FTP_PASS', 'password'); define('FTP_HOST', '123.456.789'); define('FTP_SSL', false);

Разместите этот фрагмент кода над строкой “That’s all, stop editing! Happy blogging.” Не забудьте изменить имя пользователя, пароль и другие данные, используемые в остальных переменных.

auto-updates-success

В качестве заключения хочется заметить, что функция автоматического обновления стоит того, чтобы решать проблемы с ее работоспособностью. Без автоматического обновления приведение всех компонентов в актуальный вид отнимает значительное время. Легче один раз разобраться с возникшими неприятностями, чем потом тратить лишние усилия на установку свежих обновлений для WordPress.

Источник: http://oddstyle.ru/wordpress-2/stati-wordpress/chto-delat-esli-avtomaticheskoe-obnovlenie-zavershilos-neudachej.html

Команда NSLOOKUP - работа с сервером DNS из командной строки

Утилита NSLOOKUP присутствует в операционных системах Windows, начиная с Windows NT , и предназначена для формирования запросов к серверам DNS из командной строки. Фактически, утилита является аналогом службы DNS-клиент и позволяет диагностировать проблемы с разрешением имен в системе DNS. По умолчанию, все запросы отправляются на DNS-сервер, адрес которого задан настройками сетевого подключения. В терминах утилиты такой сервер является сервером по умолчанию (default server). Команда ipconfig /all позволяет получить информацию о настройках протокола IP и, в том числе, о серверах DNS, используемых в системе.

При запуске nslookup без параметров, утилита переходит в интерактивный режим, ожидая ввод команд пользователя. Ввод знака вопроса или help позволяет отобразить справку о внутренних командах и опциях nslookup:

Команды: (идентификаторы отображаются в верхнем регистре, квадратные скобки "[]" обозначают необязательные параметры) <b>NAME</b> - печать сведений об узле или домене NAME с помощью сервера по у молчанию <b>NAME1 NAME2</b> - та же операция, но в качестве сервера используется NAME2 <b>help или ? </b> - печать сведений о стандартных командах <b>set OPTION</b> - установить параметр <b> all</b> - печать параметров, текущего сервера и узла <b> [no]debug</b> - печать отладочных сведений <b> [no]d2</b> - печать полных отладочных сведений <b> [no]defname</b> - добавить имя домена ко всем запросам <b> [no]recurse</b> - запрос рекурсивного ответа на запрос <b> [no]search</b> - использовать список поиска доменов <b> [no]vc</b> - всегда использовать виртуальную схему <b> domain=NAME</b> - установить имя домена по умолчанию NAME <b> srchlist=N1[/N2/.../N6] </b> - установить домен N1 и список поиска N1,N2 и т.д. <b> root=NAME</b> - установить корневой сервер NAME <b> retry=X </b> - установить число повторов X <b> timeout=X </b> - установить интервал времени ожидания в X секунд <b> type=X</b> - установить тип запроса (пр. A,AAAA,A+AAAA,ANY,CNAME,MX ,NS,PTR,SOA,SRV) <b> querytype=X</b> - то же, что и type <b> class=X</b> - установить класс запроса ( IN (Internet), ANY) <b> [no]msxfr</b> - использовать быструю зону MS для передачи <b> ixfrver=X </b> - текущая версия, использующаяся в передаче запросов IXFR <b>server NAME</b> - установить сервер по умолчанию NAME, используя текущий сервер по умолчанию <b>lserver NAME</b> - установить сервер по умолчанию NAME, используя первоначальный сервер <b>root</b> - сделать текущий сервер по умолчанию корневым сервером <b>ls [opt] DOMAIN [> FILE] </b> - перечисление адресов в домене DOMAIN (необязательно: вывод в файл FILE) <b> -a</b> - перечисление канонических имен и псевдонимов <b> -d</b> - перечисление всех записей <b> -t TYPE</b> - перечисление записей указанного типа RFC (пр. A,CNAME,MX,NS,P TR etc.) <b>view FILE</b> - сортировка файла "ls" и его просмотр с помощью pg <b>exit</b> - выход из программы

При запуске с некоторыми из параметров, команда nslookup выполняется в не интерактивном режиме без диалога с пользователем:

nslookup yandex.ru. - выполнить запрос к DNS-серверу, заданному по умолчанию, на разрешение доменного имени yandex.ru . Для уменьшения ненужных запросов к серверам имен имя домена нужно вводить в випе полностью определенного (fully qualified domain name) , т.е. с точкой в конце. Если этого не делать, то nslookup будет сначала выполнять запрос на разрешение имени относительно домена того компьютера, на котором она выполняется т.е. yandex.ru.mydomain.ru если имя локальнлгл домена mydomain.ru.

nslookup odnoklassniki.ru 8.8.8.8 - определить IP-адрес узла odnokassniki.ru с использованием DNS-сервера 8.8.8.8 (публичный DNS-сервер Google).

nslookup -type=mx -timeout=8 vk.com 208.67.220.220 - отобразить запись MX для домена vk.com из базы данных сервера с IP-адресом 208.67.220.220 (сервер OpenDNS). При выполнении команды, максимальное время ожидания ответа сервера - 8 секунд.

nslookup -type=any -timeout=8 vk.com 208.67.220.220 - то же, что и в предыдущем примере, но для любых типов записей.

Пример отображаемых данных:


Сервер: 208.67.220.220 Не заслуживающий доверия ответ: vk.com internet address = 87.240.131.119 vk.com internet address = 87.240.131.99 vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru ns1.vkontakte.ru internet address = 93.186.237.2 ns2.vkontakte.ru internet address = 93.186.224.100

Для разных версий nslookup и разных DNS-серверов, обслуживающих запрос, отображаемая информация может отличаться. Тот же запрос, сформированный англоязычной nslookup и направленный на обработку DNS-серверу Google прведет к отображению следующих данных:


Address: 8.8.8.8 Non-authoritative answer: vk.com internet address = 87.240.131.120 vk.com internet address = 87.240.143.244 vk.com primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com nameserver = ns4.vkontakte.ru vk.com MX preference = 10, mail exchanger = mail.vk.com vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all"

Сообщение "Не заслуживающий доверия ответ:" (Non-authoritative answer: ) говорит о том, что выполняющий запрос DNS-сервер, не является владельцем зоны vk.com т.е. записи для узла vk.com в его базе отсутствуют, и для разрешения имени использовался рекурсивный запрос к другому DNS-серверу. Если отправить запрос DNS-серверу ns1.vkontakte.ru, то будет получен авторитетный ответ (authoritative answer) :


Server: ns1.vkontakte.ru Address: 93.186.237.2 vk.com primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com internet address = 87.240.131.118 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:904 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:905 vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:906 vk.com nameserver = ns4.vkontakte.ru vk.com nameserver = ns1.vkontakte.ru vk.com nameserver = ns2.vkontakte.ru vk.com MX preference = 10, mail exchanger = mail.vk.com vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ns4.vkontakte.ru internet address = 93.186.239.253 ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ns1.vkontakte.ru internet address = 93.186.237.2 ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ns2.vkontakte.ru internet address = 93.186.224.100 ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 mail.vk.com internet address = 93.186.236.94


Использование опции отладки (debug) позволяет получить дополнительную информацию, содержащуюся в заголовках запросов клиента и ответов сервера (время жизни, флажки, типы записей и т.п.):

> server ns1.vkontakte.ru ------------ Got answer: HEADER: opcode = QUERY, id = 5, rcode = NXDOMAIN header flags: response, want recursion, recursion avail. questions = 1, answers = 0, authority records = 1, additional = 0 QUESTIONS: ns1.vkontakte.ru, type = A, class = IN AUTHORITY RECORDS: -> (root) ttl = 440 (7 mins 20 secs) primary name server = a.root-servers.net responsible mail addr = nstld.verisign-grs.com serial = 2013101600 refresh = 1800 (30 mins) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 86400 (1 day) ------------ ------------ Got answer: HEADER: opcode = QUERY, id = 6, rcode = NOERROR header flags: response, want recursion, recursion avail. questions = 1, answers = 1, authority records = 0, additional = 0 QUESTIONS: ns1.vkontakte.ru, type = A, class = IN ANSWERS: -> ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 6350 (1 hour 45 mins 50 secs) ------------ Default Server: ns1.vkontakte.ru Address: 93.186.237.2 > vk.com Server: ns1.vkontakte.ru Address: 93.186.237.2 ------------ Got answer: HEADER: opcode = QUERY, id = 7, rcode = REFUSED header flags: response, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: vk.com, type = ANY, class = IN ------------ ------------ Got answer: HEADER: opcode = QUERY, id = 8, rcode = NOERROR header flags: response, auth. answer, want recursion questions = 1, answers = 11, authority records = 0, additional = 7 QUESTIONS: vk.com, type = ANY, class = IN ANSWERS: -> vk.com ttl = 900 (15 mins) primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) -> vk.com internet address = 87.240.131.99 ttl = 900 (15 mins) -> vk.com internet address = 87.240.131.119 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 ttl = 900 (15 mins) -> vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 ttl = 900 (15 mins) -> vk.com nameserver = ns1.vkontakte.ru ttl = 900 (15 mins) -> vk.com nameserver = ns2.vkontakte.ru ttl = 900 (15 mins) -> vk.com nameserver = ns4.vkontakte.ru ttl = 900 (15 mins) -> vk.com MX preference = 10, mail exchanger = mail.vk.com ttl = 900 (15 mins) -> vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ttl = 900 (15 mins) ADDITIONAL RECORDS: -> ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 9000 (2 hours 30 mins) -> ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ttl = 9000 (2 hours 30 mins) -> ns2.vkontakte.ru internet address = 93.186.224.100 ttl = 9000 (2 hours 30 mins) -> ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 ttl = 9000 (2 hours 30 mins) -> ns4.vkontakte.ru internet address = 93.186.239.253 ttl = 9000 (2 hours 30 mins) -> ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ttl = 9000 (2 hours 30 mins) -> mail.vk.com internet address = 93.186.236.94 ttl = 900 (15 mins) ------------ vk.com ttl = 900 (15 mins) primary name server = ns1.vkontakte.ru responsible mail addr = ncc.vkontakte.ru serial = 2013100501 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 604800 (7 days) default TTL = 900 (15 mins) vk.com internet address = 87.240.131.99 ttl = 900 (15 mins) vk.com internet address = 87.240.131.119 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:901 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:902 ttl = 900 (15 mins) vk.com AAAA IPv6 address = 2a00:bdc0:3:103:1:0:403:903 ttl = 900 (15 mins) vk.com nameserver = ns1.vkontakte.ru ttl = 900 (15 mins) vk.com nameserver = ns2.vkontakte.ru ttl = 900 (15 mins) vk.com nameserver = ns4.vkontakte.ru ttl = 900 (15 mins) vk.com MX preference = 10, mail exchanger = mail.vk.com ttl = 900 (15 mins) vk.com text = "v=spf1 ip4:93.186.224.0/20 ip4:87.240.128.0/18 mx include:aspmx.googlem ail.com ~all" ttl = 900 (15 mins) ns1.vkontakte.ru internet address = 93.186.237.2 ttl = 9000 (2 hours 30 mins) ns1.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:1::2 ttl = 9000 (2 hours 30 mins) ns2.vkontakte.ru internet address = 93.186.224.100 ttl = 9000 (2 hours 30 mins) ns2.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:2::2 ttl = 9000 (2 hours 30 mins) ns4.vkontakte.ru internet address = 93.186.239.253 ttl = 9000 (2 hours 30 mins) ns4.vkontakte.ru AAAA IPv6 address = 2a00:bdc0:ff:4::2 ttl = 9000 (2 hours 30 mins) mail.vk.com internet address = 93.186.236.94 ttl = 900 (15 mins)


nslookup 8.8.4.4 - отобразить имя узла, соответствующее IP-адресу 8.8.4.4

nslookup -ls -d mydomain.ru. > listdns.txt - отобразить все записи для домена mydomain.ru, обслуживаемого текущим DNS-сервером. Вывод направляется в файл listdns.txt текущего каталога. Задавать абсолютный путь к файлу не следует, поскольку все существующие на данный момент версии nslookup.exe успешно перенаправляют стандартный вывод в файл, только если он располагается в текущем каталоге.

При работе в интерактивном режиме, после старта на экран выводится приглашение к вводу команд - символ ">" . При вводе команд необходимо учитывать регистр символов, например, LS -d mydomain.ru. будет воспринята как ошибочна команда, а ls -D mydomain.ru. - как команда с ошибочной опцией.

Источник: http://ab57.ru/cmdlist/nslookup.html

VirtualBox не видит USB в Linux Ubuntu (для Linux Ubuntu 2014 и 2015 года)

VirtualBox и USB, проблема которую мы сейчас будем решать.

Проблема не в связке, а в настройке. :)

Для решения этой задачки нужно соблюсти 3 условия:

1. Установить последний релиз VirtualBox.

2. Добавить пользователя в группу vboxusers.
Работаем в терминале (Ctrl+Shift+T)

1
		
sudo gpasswd --add user vboxusers
		

Где user - это ваш логин, а vboxusers - группа в которую добавляем пользователя.

3. Выйти и зайти в систему Linux.

4. Для VirtualBox поставить дополнение Oracle VM VirtualBox Extension Pack.
Для того, чтобы виртуальная машина могла корректно работать в USB-хостами 2.0.

5. В запущенной гостевой ОС установить Дополнения гостевой ОС.

Вот и всё. Наслаждаемся проделанной работой :)

P.S. Вот помощь на сайте Ubuntu http://help.ubuntu.ru/wiki/virtualbox

Источник: http://tavportal.ru/archives/602

Программирование в командной строке используя PHP

Ubuntu предоставляет в комплекте с пакетом apache2 утилиты для включения\выключения виртуальных хостов и модулей. Однако, создание конфигов для виртуальных хостов отнимают дополнительное время. Поэтому, мне захотелось исправить этот недостаток. Можно было, конечно, сделать автоматические поддомены для апача, но я решил написать скрипт, который создает файлы конфигурации виртуальных хостов для апача, а так же, при необходимости, добавляет имя хоста в файл /etc/hosts. Я не очень хорошо пишу скрипты в bash'e, поэтому решил использовать PHP для моей довольно простой задачи, который я, к тому же, знаю довольно неплохо.
Итак, в этой статье мы сделаем сразу две полезных вещи: ознакомимся с операциями ввода\вывода командной строки в PHP и напишем скрипт, который совсем немного упростит нам жизнь.

Проверка прав доступа

Наверное, ни для кого не секрет, что достаточно просто в первой строке PHP скрипта написать
#!/usr/bin/env php
и такой скрипт можно будет выполнить как обычную программу в Linux.

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

  1. $virtual_hosts_dir = "/etc/apache2/sites-available/";
  2. if (!is_dir($virtual_hosts_dir) || !is_writable($virtual_hosts_dir))
  3. {
  4. echo "You must run this script as root!\n";
  5. exit;
  6. }


Получение информации из параметров

Далее, нам необходимо узнать у пользователя некоторую информацию, которая нам нужна для создания конфига. Кроме последовательного ввода из консоли, можно передать эту информацию в качестве параметров, которые мы передаем при вызове скрипта. В PHP есть глобальные переменные $argc и $argv. Первая содержит количество входящих параметров, а вторая — массив со входящими параметрами. По-умолчанию входящий параметр всего один — полный путь к вызываемому скрипту. Таким образом, обработка входящих переменных сводится просто к обработке массива:

  1. if ($argc>1)
  2. {
  3. for ($i=1; $i<$argc; $i++)
  4. {
  5. $option = explode("=", $argv[$i]);
  6. switch ($option[0])
  7. {
  8. case "-h":
  9. case "--add-to-hosts":
  10. $add_to_hosts = true;
  11. break;
  12. case "-n":
  13. case "--no-add-to-hosts":
  14. $add_to_hosts = false;
  15. break;
  16. case "-a":
  17. case "--server-alias":
  18. if (isset($option[1]))
  19. {
  20. $server_alias = $option[1];
  21. }
  22. else
  23. {
  24. echo "Wrong option: {$argv[$i]}\n";
  25. }
  26. break;
  27. case "-d":
  28. case "--document-root":
  29. if (isset($option[1]))
  30. {
  31. if ($option[1] == "default")
  32. {
  33. $document_root = $default_doc_root
  34. }
  35. else if (is_dir(dirname($option[1])))
  36. {
  37. $document_root = $option[1];
  38. }
  39. }
  40. else
  41. {
  42. echo "Wrong option: {$argv[$i]}\n";
  43. }
  44. break;
  45. default:
  46. if (substr($argv[$i], 1, 1) == '-')
  47. {
  48. echo "Unknown option: {$argv[$i]}\n";
  49. }
  50. break;
  51. }
  52. }
  53. }


Потоки ввода\вывода

Но не всегда ведь удобно вбивать кучу параметров в консоль. Поэтому теперь мы просим пользователя ввести с клавиатуры то, что нам до сих пор неизвестно. Для этого нам понадобятся потоки ввода\вывода, а в данном случае только ввода. В PHP для работы с потоками ввода\вывода используются константы STDIN, STDOUT, STDERR. По сути, эти потоки ничем не отличаются от файловых потоков и работать с ними так же просто. Например, строка:

  1. $line = fgets(STDIN);

просто считает строку из консоли и запишет её в переменную $line. В данном случае, мы не открывали и не закрывали поток, т.к. PHP делает это автоматически. Но, мы можем открыть поток вручную и держать его открытым столько, сколько нам нужно. Это будет работать быстрее, если Вам нужно считать\записать более одной строки:

  1. $stdin = fopen("php://stdin", "r");
  2. $line1 = gets($stdin);
  3. $line2 = gets($stdin);
  4. fclose($stdin);

В данном случае мы сначала открываем поток, считываем из него две строки и закрываем его.
С записью аналогично, хотя я предпочитаю для вывода на экран просто использовать echo.

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

  1. while (!$server_alias)
  2. {
  3. echo "Enter your hostname: ";
  4. $server_alias = trim(fgets(STDIN));
  5. }

Теперь, спросим у пользователя, нужно ли добавлять информацию о этом хосте в /etc/hosts, но спрашиваем только в том случае, если эта информация не была передана в качестве параметра. Так как скрипт я писал себе для повседневной работы, то никаких реальных сайтов у меня не будет и чаще всего нужно будет добавлять хост в /etc/hosts, поэтому если мы ничего не вводим, а просто нажимаем Enter то это принимается как согласие:

  1. if ($add_to_hosts === null)
  2. {
  3. echo "Add $server_alias to your /etc/hosts ? (Y/N) [Y]: ";
  4. $line = trim(fgets(STDIN));
  5. if ($line == 'n' || $line == 'N')
  6. {
  7. $add_to_hosts = false;
  8. }
  9. else
  10. {
  11. $add_to_hosts = true;
  12. }
  13. }

То же самое и с корневой директорией сайта:

  1. if (!$document_root)
  2. {
  3. $default_doc_root = $default_doc_root.'/'.$server_alias;
  4. echo "Enter your document root [$default_doc_root]: ";
  5. $line = trim(fgets(STDIN));
  6. if ($line && is_dir(dirname($line)))
  7. {
  8. $document_root = $line;
  9. }
  10. else
  11. {
  12. $document_root = $default_doc_root;
  13. }
  14. }


Генерация конфиг-файла

На этом этапе весь сбор информации закончен и у нас есть все, что нужно, для того, чтобы создать конфиг. Надо убедится, что корневая директория сайта существует, а если её нет — создадим её:

  1. if (!is_dir($document_root))
  2. {
  3. mkdir($document_root);
  4. }

Мы спрашивали у пользователя по поводу добавления хоста в /etc/hosts. Сделаем это, если он согласился:

  1. if ($add_to_hosts)
  2. {
  3. $hosts = file_get_contents("/etc/hosts");
  4. $hosts .= "127.0.0.1\t$server_alias\n";
  5. file_put_contents("/etc/hosts", $hosts);
  6. }

Собственно так выглядит шаблон нашего конфига:

  1. $host_template = <<<HOST
  2. <VirtualHost *:80>
  3. ServerAdmin i@bogus.in
  4. ServerAlias $server_alias
  5. DocumentRoot $document_root
  6. <Directory $document_root>
  7. Options Indexes FollowSymLinks MultiViews
  8. AllowOverride All
  9. Order allow,deny
  10. allow from all
  11. </Directory>
  12. ErrorLog \${APACHE_LOG_DIR}/$server_alias-error.log;
  13. LogLevel warn
  14. CustomLog \${APACHE_LOG_DIR}/$server_alias-access.log combined
  15. </VirtualHost>
  16. HOST;

Ну и теперь просто запишем конфиг в файл и напомним пользователю о том, что конфиг теперь нужно еще и активировать с помощью a2ensite:

  1. file_put_contents("/etc/apache2/sites-available/$server_alias", $host_template);
  2. echo "Apache config for this hostname created successfully! Don't forget to run a2ensite $server_alias\n";

Скрипт написан. Нужно сохранить его в файл и не забыть установить флаг +x, чтобы его можно было запускать как программу:
chmod +x a2addsite

Использование

Теперь скрипт можно использовать. Можно как вводить всю информацию в консоли:
% sudo ./a2addsite
Add test.local to your /etc/hosts? (Y/N) [Y]:
Enter your document root [/home/www/test.local]:
Apache config for this hostname created successfully! Don't forget to run a2ensite test.local

так передавать всю или часть информации скрипту в качестве параметров при вызове:
% sudo ./a2addsite --server-alias=test2.local --add-to-hosts --document-root=default
Apache config for this hostname created successfully! Don't forget to run a2ensite test2.local

Выводы

PHP можно использовать не только для разработки сайтов, но и для решения мелких локальных задач на компьютере. Скрипт я писал под себя и, наверняка, кто-то из Вас переделает его под свои нужды.
Исходный код скрипта

Литература

Больше информации о потоках ввода вывода, а также о остальных особенностях работы с консолью в PHP можно получить на официальном сайте PHP (англ.):
Command line usage
PHP input/output

Источник: http://habrahabr.ru/post/112146/

Установка Postgresql и указание пароля

PostgreSQL - это объектно-реляционная система баз данных, которая обладает признаками традиционной коммерческой базы данных, с расширениями, которые будут доступны следующему поколению СУБД (систем управления базами данных).

Установка

Для установки PostgreSQL выполните следующую команду в терминале:

sudo apt-get install postgresql

Сразу после установки вы можете настроить сервер PostgreSQL по вашим потребностям, хотя стандартная настройка вполне жизнеспособна.

Настройка

По умолчанию соединения через TCP/IP заблокированы. PostgreSQL поддерживает множество методов аутентификации. Метод аутентификации IDENT используется для postgres и локальных пользователей пока не настроено что-то еще. Обратитесь к PostgreSQL Administrator's Guide, если вы собираетесь использовать какую-либо альтернативу типа Kerberos.

Дальнейшее обсуждение предполагает, что вы собираетесь разрешить соединения по TCP/IP и используете аутентификацию клиентов на основе метода MD5. Файлы настроек PostgreSQL хранятся в каталоге /etc/postgresql/<version>/main. Например, если вы установили PostgreSQL 8.4, файлы настроек сохранятся в каталоге /etc/postgresql/8.4/main.

Для настройки аутентификации ident добавьте записи в файл /etc/postgresql/8.4/main/pg_ident.conf. В файле содержатся подробные комментарии чтобы направлять вас.

Чтобы разрешить соединения по TCP/IP, отредактируйте файл /etc/postgresql/8.4/main/postgresql.conf. Найдите строку

#listen_addresses = 'localhost'

и замените ее на:

listen_addresses = 'localhost'

Чтобы разрешить другим компьютерам соединяться с вашим PostgreSQL сервером, замените 'localhost' на IP адрес вашего сервера или в качестве альтернативы на 0.0.0.0, чтобы подключить все интерфейсы.

Вы можете также редактировать любые другие параметры, если знаете что вы делаете! Для подробностей смотрите комментарии файла настроек или документацию по PostgreSQL.

Теперь, поскольку мы можем подключиться к нашему серверу PostgreSQL, следующим шагом будет установка пароля для пользователя postgres. Выполните следующую команду в терминале для соединения со стандартной базой шаблонов PostgreSQL:

sudo -u postgres psql template1

Эта команда подключится к PostgreSQL базе данных template1 как пользователь postgres. После подключения к серверу PostgreSQL вы окажетесь в SQL консоли. Вы можете выполнить следующую SQL команду в консоли psql для настройки пароля пользователя postgres:

ALTER USER postgres with encrypted password 'your_password';

После настройки пароля, измените файл /etc/postgresql/8.4/main/pg_hba.conf на использование MD5 аутентификации для пользователя postgres:

local all postgres md5

Под конец вам потребуется перезапустить сервис PostgreSQL для применения новых настроек. Из терминала выполните следующее для перезапуска PostgreSQL:

sudo /etc/init.d/postgresql-8.4 restart

Настройка выше в любом случае неполная. Пожалуйста обратитесь к руководству PostgreSQL Administrator's Guide для настройки других параметров.

Ссылки

1. Как упоминалось выше, Administrator's Guide - великолепный ресурс. Руководство также доступно из пакета postgresql-doc-8.4. Выполните следующую команду в терминале для установки пакета:

sudo apt-get install postgresql-doc-8.4

Чтобы увидеть руководство, введите file:///usr/share/doc/postgresql-doc-8.4/html/index.html в адресную строку вашего браузера.

2. Для общей информации по SQL смотрите Using SQL Special Edition от Rafe Colburn.

3. Также смотрите страницу PostgreSQL Ubuntu Wiki для дополнительной информации.

Источник: http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85/postgresql

Команда Dig для проверки DNS-зоны

Dig (domain information groper) - утилита для роботы с DNS серверами. Входит в состав BIND. При запуске она отображает свою версию программы, которая обычно совпадает с версией BIND. Опишу несколько моментов, как ней пользоваться:
Для того, чтобы просто получить IP-адрес по имени хоста необходимо выполнить:

[root@router ~]# dig unigx.org.ua ; <<>> DiG 9.4.2 <<>> unigx.org.ua ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37503 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1;; QUESTION SECTION: ;unigx.org.ua. IN A ;; ANSWER SECTION: unigx.org.ua. 3600 IN A 82.207.87.36 ;; AUTHORITY SECTION: unigx.org.ua. 3600 IN NS ns.unigx.org.ua. unigx.org.ua. 3600 IN NS ns.yuren.com.ua. ;; ADDITIONAL SECTION: ns.unigx.org.ua. 3600 IN A 82.207.87.36 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:17:26 2010 ;; MSG SIZE rcvd: 106

Для того, что бы получить доменное имя по IP-адресу (PTR-запись) для поиска в обратных зонах, необходимо DIG указать с параметром "-x":

[root@router ~]# dig -x 82.207.87.36 ; <<>> DiG 9.4.2 <<>> -x 82.207.87.36 ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46705 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1;; QUESTION SECTION: ;36.87.207.82.in-addr.arpa. IN PTR ;; ANSWER SECTION: 36.87.207.82.in-addr.arpa. 67156 IN PTR mail.shzzch.com. ;; AUTHORITY SECTION: 87.207.82.in-addr.arpa. 16737 IN NS ns2.ukrtelecom.ua. 87.207.82.in-addr.arpa. 16737 IN NS expert.ukrtel.net. ;; ADDITIONAL SECTION: expert.ukrtel.net. 5922 IN A 195.5.6.10 ;; Query time: 0 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:21:46 2010 ;; MSG SIZE rcvd: 150

Для просмотра MX- записи для домена, необходимо указать парамерт "mx":

[root@router ~]# dig ya.ru mx ; <<>> DiG 9.4.2 <<>> ya.ru mx ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3248 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2;; QUESTION SECTION: ;ya.ru. IN MX ;; ANSWER SECTION: ya.ru. 592 IN MX 10 mx.yandex.ru. ;; AUTHORITY SECTION: ya.ru. 162 IN NS ns1.yandex.ru. ya.ru. 162 IN NS ns5.yandex.ru. ;; ADDITIONAL SECTION: ns1.yandex.ru. 86602 IN A 213.180.193.1 ns5.yandex.ru. 86602 IN A 213.180.204.1 ;; Query time: 202 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Dec 20 08:57:47 2010 ;; MSG SIZE rcvd: 117

Для отображения только имени хоста, можно использовать параметр "+short":

[root@router ~]# dig -x 82.207.87.36 +short mail.shzzch.com.

По умолчанию в dig, отключен список поиска в /etc/resolv.conf, включаем с помощью опции в запросе "+search":

[root@router ~]# dig ya.ru +search +short 87.250.251.3 93.158.134.3 213.180.204.3 77.88.21.3 87.250.250.3

Для того, что бы узнать серийный номер зоны, запускаем с параметром "soa":

[root@router ~]# dig ya.ru soa +short ns1.yandex.ru. sysadmin.yandex.ru. 2010121600 10800 900 2592000 900

Если необходимо узнать версию DNS-сервера(не есть гуд!):

[root@router ~]# dig -t txt -c chaos VERSION.BIND @ns1.yandex.ru ; <<>> DiG 9.4.2 <<>> -t txt -c chaos VERSION.BIND @ns1.yandex.ru ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44195 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;VERSION.BIND. CH TXT ;; ANSWER SECTION: VERSION.BIND. 0 CH TXT "9.5.2-P4" ;; AUTHORITY SECTION: VERSION.BIND. 0 CH NS VERSION.BIND. ;; Query time: 51 msec ;; SERVER: 213.180.193.1#53(213.180.193.1) ;; WHEN: Mon Dec 20 09:18:57 2010 ;; MSG SIZE rcvd: 65

Для проверки возможности копирования зоны с с master сервера на slave сервер:

[root@router ~]# dig @ns.yuren.com.ua unigx.org.ua. axfr ; <<>> DiG 9.4.2 <<>> @ns.yuren.com.ua unigx.org.ua. axfr ; (1 server found) ;; global options: printcmd unigx.org.ua. 3600 IN SOA ns.unigx.org.ua. admin.shzzch.com. 2010112501 3600 900 3600000 3600 unigx.org.ua. 3600 IN NS ns.unigx.org.ua. unigx.org.ua. 3600 IN NS ns.yuren.com.ua. unigx.org.ua. 3600 IN A 82.207.87.36 files.unigx.org.ua. 3600 IN A 82.207.87.36 forum.unigx.org.ua. 3600 IN A 82.207.87.36 ftp.unigx.org.ua. 3600 IN A 82.207.87.36 ns.unigx.org.ua. 3600 IN A 82.207.87.36 www.unigx.org.ua. 3600 IN A 82.207.87.36 unigx.org.ua. 3600 IN SOA ns.unigx.org.ua. admin.shzzch.com. 2010112501 3600 900 3600000 3600 ;; Query time: 462 msec ;; SERVER: 193.108.251.254#53(193.108.251.254) ;; WHEN: Mon Dec 20 09:43:04 2010 ;; XFR size: 10 records (messages 1, bytes 278)

Проверим отдает ли DNS-сервер unigx.org.ua, зону unix.ck.ua:

vlymar@mops:~$ dig @unigx.org.ua unix.ck.ua ; <<>> DiG 9.4.3-P3 <<>> @unigx.org.ua unix.ck.ua ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20484 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;unix.ck.ua. IN A ;; ANSWER SECTION: unix.ck.ua. 3600 IN A 82.207.87.36 ;; AUTHORITY SECTION: unix.ck.ua. 3600 IN NS ns.yuren.com.ua. unix.ck.ua. 3600 IN NS ns.unix.ck.ua. ;; ADDITIONAL SECTION: ns.unix.ck.ua. 3600 IN A 82.207.87.36 ;; Query time: 134 msec ;; SERVER: 82.207.87.36#53(82.207.87.36) ;; WHEN: Mon Dec 20 09:53:12 2010 ;; MSG SIZE rcvd: 104

Dig посылает DNS-серверу unigx.org.ua, запрос SOA-записи для unix.ck.ua:

vlymar@mops:~$ dig @unigx.org.ua unix.ck.ua soa ; <<>> DiG 9.4.3-P3 <<>> @unigx.org.ua unix.ck.ua soa ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32124 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1 ;; WARNING: recursion requested but not available;; QUESTION SECTION: ;unix.ck.ua. IN SOA ;; ANSWER SECTION: unix.ck.ua. 3600 IN SOA ns.unix.ck.ua. admin.shzzch.com. 2010121901 3600 900 3600000 3600 ;; AUTHORITY SECTION: unix.ck.ua. 3600 IN NS ns.unix.ck.ua. unix.ck.ua. 3600 IN NS ns.yuren.com.ua. ;; ADDITIONAL SECTION: ns.unix.ck.ua. 3600 IN A 82.207.87.36 ;; Query time: 185 msec ;; SERVER: 82.207.87.36#53(82.207.87.36) ;; WHEN: Mon Dec 20 10:01:55 2010 ;; MSG SIZE rcvd: 140

Для того, что бы просмотреть трассу поиска информации в DNS, в dig предусмотрена опция "+trace":

[root@srv ~]# dig unix.ck.ua +trace ; <<>> DiG 9.6.2-P1 <<>> unix.ck.ua +trace ;; global options: +cmd . 517876 IN NS b.root-servers.net. . 517876 IN NS l.root-servers.net. . 517876 IN NS k.root-servers.net. . 517876 IN NS m.root-servers.net. . 517876 IN NS h.root-servers.net. . 517876 IN NS e.root-servers.net. . 517876 IN NS a.root-servers.net. . 517876 IN NS d.root-servers.net. . 517876 IN NS g.root-servers.net. . 517876 IN NS i.root-servers.net. . 517876 IN NS c.root-servers.net. . 517876 IN NS j.root-servers.net. . 517876 IN NS f.root-servers.net. ;; Received 244 bytes from 127.0.0.1#53(127.0.0.1) in 2 msua. 172800 IN NS cd1.ns.ua. ua. 172800 IN NS he1.ns.ua. ua. 172800 IN NS ho1.ns.ua. ua. 172800 IN NS pch.ns.ua. ua. 172800 IN NS ya1.ns.ua. ua. 172800 IN NS ns-ua.ripe.net. ua. 172800 IN NS sunic.sunet.se. ua. 172800 IN NS sns-pb.isc.org. ;; Received 503 bytes from 199.7.83.42#53(l.root-servers.net) in 6 ms ck.ua. 172800 IN NS ba1.ns.ua. ck.ua. 172800 IN NS nix.net.ua. ck.ua. 172800 IN NS ns.ctsense.net. ck.ua. 172800 IN NS ns1.megastyle.com. ck.ua. 172800 IN NS ns2.megastyle.com. ;; Received 164 bytes from 216.218.215.27#53(he1.ns.ua) in 227 ms unix.ck.ua. 86400 IN NS ns.yuren.com.ua. unix.ck.ua. 86400 IN NS ns.unigx.org.ua. ;; Received 82 bytes from 72.20.97.27#53(ba1.ns.ua) in 204 ms unix.ck.ua. 3600 IN A 82.207.87.36 unix.ck.ua. 3600 IN NS ns.unigx.org.ua. unix.ck.ua. 3600 IN NS ns.yuren.com.ua. ;; Received 114 bytes from 193.108.251.254#53(ns.yuren.com.ua) in 1 ms

Для просмотра дополнительной текстовой информации о домене (запись TXT), необходимо выполнить:

[root@router /etc/rc.d]# dig unix.ck.ua txt | grep TXT unix.ck.ua. 3600 IN TXT "v=spf1 include:_spf.google.com -all"

Установка терминального сервера на базе Ubuntu Server 12.04 LTS 64-bit для работы c платформой 1C 8.3

Конспект установки и настройки терминального сервера XRDP на базе Ubuntu server 12.04 LTS 64-bit для работы пользователей с конфигурациями, которые запускаются на платформе 1С 8.3 в native режиме, без эмулятора Windows.

Устанавливаем дистрибутив ubuntu-12.04.2-server-amd64.iso, процедура стандартная почти автоматическая, в интернете можно найти подробное описание процесса.

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

Linux Ubuntu

Устанавливаем графическую оболочку LXDE (http://xaxatyxa.ru/_ubuntu/ustanavlivaem-lxde-ubuntu.html) :

sudo apt-get update && apt-get upgrade

sudo apt-get install lxde

перезагрузка.

После ребута ubuntu загрузится уже в графическом режиме.

LXDE

Делаем автоматический вход в Ubuntu Lxde:

запускаем LXTerminal

для удобства работы устанавливаем Midnight Commander

sudo apt-get install mc

sudo mc

делаем правку файла sudo leafpad /etc/lxdm/lxdm.conf или в mc F4(edit)

надо раскомментировать (убрать #) перед autologin в самом начале файла,

поставить имя желаемого пользователя для автовхода:

autologin=ИмяПользователяДляАвтовхода

перезагрузка, теперь при старте сразу попадаем на рабочий стол lxde .


Устанавливаем XRDP:

sudo apt-get update

С сайта http://scarygliders.net/ берем адрес скрипта для автоматической компиляции XRDP из исходников самой последней доступной версии.

sudo apt-get install git

sudo git clone https://github.com/scarygliders/X11RDP-o-Matic.git

создается в домашнем каталоге папка X11RDP-o-Matic

sudo su

cd X11RDP-o-Matic

./X11rdp-o-matic.sh –justdoit

стартует долгий процесс скачивания, проверки и компиляции модулей для xrdp, обязательно нужно дождатся завершения процедуры -

LXDE2

в папке /X11RDP-o-Matic/packages/ лежат уже готовые собранные пакеты x11rdp_0.7.0-1_amd64.deb, xrdp_0.7.0-1_amd64.deb, пригодятся при переинсталированнии сервера без необходимости еще раз компилировать и собирать xrdp из исходников.

Проверяем установку xrdp:

sudo /etc/init.d/xrdp restart

netstat -lntp |grep 3389

Ставим xrdp в автозагрузку:

sudo update-rc.d xrdp defaults

sudo update-rc.d xrdp enable

Там же в папке /X11RDP-o-Matic/ находится скрипт создания файла *.xsession с командой startlxde для запуска LXDE при подключении пользователей:

./RDPsesconfig.sh

---------------------------------------------------------------------------------------------------------------------

Устанавливаем 1С 8.3и HASP драйвер:

sudo dpkg -i haspd_3.3-eter5ubuntu_amd64.deb

sudo dpkg -i haspd-modules_3.3-eter5ubuntu_amd64.deb

следующий пакет 32 бит, но без него не запускались HASP ключи:

sudo dpkg -i dkms-aksparlnx_3.2-eter1ubuntu_all.deb

Проверяем- sudo /etc/init.d/haspd restart

LXDE1C

Видим что aksusbd не запустился. Интернет подсказал решение - ”Некоторые программы из пакета драйверов HASP откомпилированы для 32-х битных систем. Для них необходимо установить поддержку 32-х битных приложений. Без пакета ia32-libs драйвера HASP-ключей на нашей 64-х битной системе работать не будут.” Устанавливаем:

sudo apt-get install ia32-libs

теперь aksusbd наконец стартует.

Распаковываем файлы deb64.tar.gz и client.deb64.tar.gz из дистрибутива 1С 8.3 в одну папку.

Устанавливаем:

sudo dpkg -i 1c*.deb

sudo apt-get -f install

sudo apt-get install ttf-mscorefonts-installer

sudo apt-get install imagemagick

Запускаем для проверки конфигуратор и создаем пустую базу -

1C



Останавливаем службу сервера 1С:Предприятия 8.3 ( пока не нужна )

sudo /etc/init.d/srv1cv83 stop

Отключаем автозапуск сервера 1С:Предприятия 8.3

sudo update-rc.d srv1cv83 disable

заодно можно отключить и другие не задействованные службы:

sudo update-rc.d postgresql disable

---------------------------------------------------------------------------------------------------------------------

Устанавливаем программы необходимые для работы пользователей в терминальных сессиях :

sudo apt-get install libreoffice

sudo apt-get install libreoffice-l10n-ru

sudo apt-get install libreoffice-l10n-uk

в репозитарии версия 3, так же доступен к скачиванию и установке новый libreoffice 4 с сайта.

http://www.libreoffice.org/download/?type=deb-x86_64&lang=ru&version=4.1.0

sudo apt-get install firefox

sudo apt-get install firefox-locale-ru

sudo apt-get install sylpheed

sudo apt-get install qbittorrent

sudo apt-get install cups-pdf

Настраиваем рабочий стол и окружение:

Добавляем на LXPanel - “Индикатор раскладок клавиатуры“, “Клавиатурный индикатор“

Мне понадобился еще один язык для переключения — украинский, поэтому редактируем файл /etc/default/keyboard (с правами администратора):

sudo leafpad /etc/default/keyboard

Изменяем строку:

XKBLAYOUT="us,ru,ua"

Настраиваем «скелеты» для пользователей:

Выполняем с правами рута

cd /home/Настроенный_Пользователь

cp -R -f -b .config/ /etc/skel/ # настройки lxde

cp -R -f -b Desktop/ /etc/skel/ # Содержимое рабочего стола

Теперь можем добавлять пользователей терминалов:

sudo adduser term1 # например

sudo adduser term2 #

Подключаемся как term1, я пробовал с Windows 8 64 bit, запустилось, но в терминале возникли проблемы с переключением языков клавиатуры.

Для решения редактируем файл /etc/X11/Xsession:

В самом начале после строки set -e прописываем:

if [ -r /etc/default/locale ]; then

. /etc/default/locale

export LANG LANGUAGE

fi

setxkbmap -layout "us,ru,ua" -model "pc105" -option "grp:alt_shift_toggle,grp_led:scroll"

Снова коннектимся к серверу и наконец получаем работающий терминал клиента -

WindowsLinux

В принцыпе, там еще много донастраевать в Ubuntu нужно, но основа создана и сервер терминалов, работающий по протоколу RDPv5 запущен, если нужно более 10-и подключенных одновременно клиентов, тогда увеличиваем значение записанное в опцию MaxSessions в секции Sessions файла /etc/xrdp/sesman.ini.

Вид рабочей базы 1С Бухгалтерия 8 на Linux:

1C в Linux



Низкоуровневое форматирование на Debian или Ubuntu

Случилось так, что понадобилось мне низкоуровневое форматирование. Винт на 2Тб, а значит и времени тоже надо было много, потому решил вставить винт в сервер и делать всё на нем. Процедура эта не трудоемкая, но очень длительная.

1. Подключаем винт
2. Перезагружаем железо
3. Сотрим список подключенных винтов и флешек

1

# fdisk -l

В результате получим нечто такого плана (для примера взял флешку на 4Гб):

1

2

3

4

5

6

7

8

9

10

11

Disk /dev/sdg: 4057 MB, 4057989120 bytes

255 heads, 63 sectors/track, 493 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0xcad4ebea


<code>Device Boot Start End Blocks Id System

/dev/sdg4 * 1 494 3962848+ c W95 FAT32 (LBA)

Partition 4 has different physical/logical endings:

<code>phys=(492, 254, 63) logical=(493, 90, 45)

/dev/sdg — это наш пациент (последняя буква может отличатся!)
4. Отмонитируем все разделы:

1

# umount /dev/sdg*

5. Запускаем форматирование

1

# dd if=/dev/zero of=/dev/sdg

По завершению форматирования получим объем флешки (должен соответствовать заявленному), скорость и время записи.
По памяти, жесткий диск форматировался со скоростью 1 Гб/мин (~16,5 Мб/сек), ибо подключен был через sata, а флешка куда дольше будет.


Источник: http://g13.org.ua/%D0%BD%D0%B8%D0%B7%D0%BA%D0%BE%D1%83%D1%80%D0%BE%D0%B2%D0%BD%D0%B5%D0%B2%D0%BE%D0%B5-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BD%D0%B0-debian-%D0%B8/

Настройка звука в XRDP для Linux Ubuntu

Автор: Рудюк С.А.

http://corp2.net

Замена Windows Server на Linux Ubuntu - выгодное и полезное решение. Такое решение может получиться более стабильно работающим и главное, масштабируемым и более защищенным. Но, есть в решениях Linux всегда ложка дегтя. Прежде всего, это работа с аппаратурой. Ряд аппаратных средств работает только с Windows. И даже гордятся этим, выставляя на своем корпусе лейбочку мелко-софтовской компании...

Так же, возникает вопрос настройки звука для XRDP в Linux Ubuntu. По умолчанию, звук в XRDP отключен и чтоб его настроить, нужно провести ряд действий. Данная статья рассказывает, как это сделать.

Итак, устанавливаем необходимые нам пакеты:

[code language="bash"]
sudo apt-get build-dep xserver-xorg-core
[/code]


[code language="bash"]
apt-get install autoconf libtool pkg-config
[/code]


[code language="bash"]
apt-get install libssl-dev libpam0g-dev libjpeg-dev libx11-dev libxfixes-dev flex bison libxml2-dev intltool xsltproc xutils-dev python-libxml2 xutils libpulse-dev
[/code]


Устанавливаем Git, чтоб иметь возможность брать исходные коды прямо из репозитариев:

[code language="bash"]
apt-get install git
[/code]

Клонируем проект XRDP в текущую папку:

[code language="bash"]
git clone git://github.com/FreeRDP/xrdp.git
[/code]

Можно так же просто закачать zip-архив по адресу: https://github.com/FreeRDP/xrdp

Компилируем XRDP:

[code language="bash"]
./bootstrap
[/code]


[code language="bash"]
./configure --enable-jpeg --enable-simplesound
[/code]

С некоторых пор, разработчик убрал опцию --enable-simplesound, поэтому, не пугайтесь, если у вас выдастся сообщение о отсутствующей опции. Сейчас она не особо нужна, т.к. автоматически определяется подключен звук или нет.

[code language="bash"]
make
[/code]


[code language="bash"]
make install
[/code]

Компилируем X11RDP.

Для этого, заходим в каталог xorg/X11R7.6 и вводим команду:

[code language="bash"]
./buildx.sh /opt/X11rdp
[/code]

Создаем ссылку:

[code language="bash"]
ln -s /opt/X11rdp/bin/X11rdp /usr/local/bin/X11rdp
[/code]

Добавляем в загрузку:

[code language="bash"]
cp /etc/xrdp/xrdp.sh /etc/init.d/
[/code]


[code language="bash"]
update-rc.d xrdp.sh defaults
[/code]

Копируем ключ rsa для шифрации:

[code language="bash"]
sudo cp ../xrdp/rsakeys.ini /etc/xrdp
[/code]

Компилируем пакеты, необходимые для переадресации звука:

[code language="bash"]
sudo apt-get install libjson0-dev libsndfile1-dev libspeex-dev libspeexdsp-dev
[/code]

Закачиваем исходные коды пакета pulseaudio из http://freedesktop.org/software/pulseaudio/releases/:

[code language="bash"]
tar -zxvf pulseaudio-3.0.tar.gz
[/code]

Входим в каталог и выполняем:

[code language="bash"]
./configure
[/code]

Если возникли проблемы при компиляции, то возможно вы закачали не тот пакет pulseaudio.

Переходим в каталог xrdp/sesman/chansrv/pulse.

Вам необходимо прокомпилировать библиотеку для передачи звука по XRDP.

Отредактируйте переменную PULSE_DIR на путь к исходным кодам pulseaudio.
После этого, выполните:

[code language="bash"]
make
[/code]

Скопируем библиотеку в pulse (пути могут отличаться в зависимости от версии pulseaudio):

[code language="bash"]
sudo cp module-xrdp-sink.so /usr/lib/pulse-3.0/modules/
[/code]

Теперь, необходимо подредактировать ряд конфигурационных файлов.

Редактируем (или добавляем) файл /etc/asound.conf:

[code language="bash"]
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}
pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
[/code]

Редактируем файл /etc/pulse/default.pa:

[code language="bash"]
.nofail
.fail
load-module module-augment-properties
load-module module-xrdp-sink
load-module module-native-protocol-unix
[/code]

Перезагружаемся. После этого, если все правильно настроено у Вас должен передаваться звук по RDP.


P.S. Если у Вас возникло желание сменить дорогие решения на Windows на эффективные и хорошо масштабируемые решения на Linux, звоните к автору данной статьи 067 901-63-22 Рудюк Сергей Анатольевич. Или пишите на: rs@corp2.net