Система доменных имен Интернет (DNS, Domain Name System) представляет собой иерархическую распределенную систему сопоставления символьных имен узлов и сетевых служб их IP-адресам, а также маршрутизации электронной почты. Иерархия DNS отражена в многоуровневой структуре доменных имен (например: www.intuit.ru, ru — домен 1-го уровня, intuit — 2-го, www — 3-го).
Для разрешение IP-адреса по доменному имени используется рекурсивный поиск. Рекурсия начинается с обращения к одному из корневых DNS-серверов, содержащих ссылки на DNS-сервера, ответственные за домены 1-го уровня, далее отправляется запрос о расположении домена 2-го уровня к полномочному DNS-серверу домена 1-го уровня и т. д. Рекурсивный DNS-сервер обычно в целях снижения трафика кэширует запросы (DNS-кэш).
Для полноценного взаимодействия с сетью Интернет на узлах локальной сети должен быть указан один или несколько IP-адресов рекурсивных DNS-серверов. В качестве таковых можно использовать DNS-сервера провайдера или настроить локальный DNS-кэш.
Традиционно в Linux поведение клиентской подсистемы DNS определяется следующими файлами:
В некоторых случаях для динамического изменения настроек DNS в зависимости от активных внешних подключений, используется пакет resolvconf. NetworkManager также может менять содержимое файла resolv.conf в соответствие с производимыми пользователем изменениями. В Debian также на содержимое файла resolv.conf могут влиять записи о DNS-серверах в файле /etc/network/interfaces. Для тестирования работы подсистемы DNS могут использоваться утилиты nslookup или dig (в Debian содержатся в пакете dnsutils ).
Пример 12.6. .
# dig -b 192.168.200.2 @192.168.200.1 www.intuit.ru a ; <<>> DiG 9.6-ESV-R3 <<>> -b 192.168.200.2 @192.168.200.1 www.intuit.ru a ; (1 server found) ;; global options: +cmd ;; Got answer: ;; - >>HEADER<< - opcode: QUERY, status: NOERROR, id: 4921 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;www.intuit.ru. IN A ;; ANSWER SECTION: www.intuit.ru. 1295 IN A 194.67.246.18 ;; AUTHORITY SECTION: intuit.ru. 1295 IN NS ns.intuit.ru. intuit.ru. 1295 IN NS ns2.osp.ru. intuit.ru. 1295 IN NS ns1.intuit.ru. intuit.ru. 1295 IN NS ns3.osp.ru. ;; ADDITIONAL SECTION: ns.intuit.ru. 3447 IN A 194.67.165.74 ns1.intuit.ru. 3447 IN A 194.67.246.5 ns2.osp.ru. 3447 IN A 81.13.33.67 ns3.osp.ru. 3447 IN A 194.67.168.66 ;; Query time: 18 msec ;; SERVER: 192.168.200.1#53(192.168.200.1) ;; WHEN: Sun May 29 19:26:16 2011 ;; MSG SIZE rcvd: 186
Утилита dig полезна для тестирования DNS в сложных конфигурациях. В данном случае ключ -b позволяет указать исходный IP-адрес, после @ указывается IP-адрес сервера, к которому делается запрос, а затем — имя, которое нужно разрешить и тип записи ( a ).
Пусть есть подключение к инфраструктуре провайдера по технологии Ethernet, а Интернет-доступ осуществляется с помощью технологии PPTP VPN. Реализуем в VirtualBox на основе Linux схему, состоящую из сервера доступа (первая виртуальная машина) к сети Интернет для виртуального сетевого сегмента, представленного еще одной виртуальной машиной - клиентом. Для доступа сервера к Интернет будет использоваться подключение VirtualBox "Сетевой мост", виртуальный локальный сегмент будет использовать "Внутреннюю сеть". Настроим на сервере для клиентов виртуальной локальной сети DNS-кэш на основе программы dnsmasq [ 50 ] таким образом, чтобы клиенты отправляли DNS-запросы на локальный адрес сервера, а сервер обращался к DNS-серверу провайдера. Дополнительно также будет настроен DHCP-сервер на локальном интерфейсе.
# cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto eth1 iface eth1 inet static address 192.168.1.1 netmask 255.255.255.0
# apt-get install pptp-linux
В файле /etc/ppp/chap-secrets укажем логин, имя подключения и пароль для подключения к сети провайдера:
# cat /etc/ppp/chap-secrets user0013 vpn Sdnf5r1
Для инициализации pptp-туннеля и настройки маршрутизации на сервере напишем скрипт upptplink.sh:
# cat upserver.sh #!/bin/sh # адрес VPN-сервера SERVER ="10.10.10.10" # имя пользователя USER=user0013 # имя ppp-интерфейса PIF=ppp0 pppd file /etc/ppp/options.pptp defaultroute replacedefaultroute name $USER remotename vpn pty "pptp $SERVER —nolaunchpppd" sleep 5 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o $PIF -s 192.168.1.0/24 -j MASQUERADE
Утилита pppd устанавливает соединение точка-точка с VPN-сервером c помощью утилиты pptp. Основные опции pppd указаны в файле /etc/ppp/options.pptp (в данном случае используются настройки по умолчанию), в командной строке указаны опции defaultroute и replacedefaultroute для использования туннеля в качестве шлюза по умолчанию и перезаписи, если необходимо, текущего шлюза по умолчанию, опция name — имя пользователя, remotename — имя vpn-подключения.
В скрипте также включается функция пересылки и создается правило для трансляции запросов узлов локальной сети в адрес, установленный на ppp-интерфейсе.
# apt-get install dnsmasq-base
Далее создадим файл конфигурации /etc/dnsmasq.conf:
# cat /etc/dnsmasq.conf listen-address=192.168.1.1 no-dhcp-interface=eth0,ppp0 no-resolv server=10.10.10.10 dhcp-range=192.168.1.10,192.168.1.253,24h cache-size=300 dhcp-leasefile=/var/lib/misc/dnsmasq.leases
Опция listen-address указывает на каком интерфейсе слушать клиентские dns-запросы, no-resolv — не использовать файл /etc/resolv.conf для настройки родительского DNS-сервера, server — указать DNS-сервер провайдера.
# cat /etc/network/interfaces | grep eth0 auto eth0 iface eth0 inet dhcp
После инициализации сетевой подсистемы на клиенте можно проверить доступ в сети Интернет.
Виртуальные частные сети (VPN, Virtual Private Network) - обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети.
xDSL - семейство технологий, использующих абонентские линии DSL (Digital Subscriber Line), "x" cлужит обозначением конкретной технологии.
Трансляция сетевых адресов (NAT, Network Address Translation) - механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса пакетов.
PPPoE (Point-to-point protocol over Ethernet) — сетевой протокол канального уровня передачи кадров PPP через Ethernet. В основном используется xDSL-сервисами. Предоставляет дополнительные возможности (аутентификация, сжатие данных, шифрование).
3G (технологии мобильной связи 3 поколения) — набор услуг, который объединяет как высокоскоростной мобильный доступ с услугами сети Интернет, так и технологию радиосвязи.
PPTP (Point-to-Point Tunneling Protocol) — туннельный протокол типа точка-точка, позволяющий компьютеру устанавливать защищённое соединение с сервером за счёт создания специального туннеля в стандартной, незащищённой сети. PPTP помещает (инкапсулирует) кадры PPP в IP-пакеты для передачи IP-сети.