## deunicodize -- KEEP THIS PLEASE = Как я настраиваю ALS4.0 = (см. также [http://wiki.fosscenter.ru/moin/Portal проект "Портал МПГУ"]) == Установка == /!\ вроде замечаний нет? == Дисциплина создания сервисов == * VEID: системные -- по номеру порта службы, которая на них работает (dns: 53, ftp: 21 и т. п.), остальные -- любой (лучше < 255 :) ) * VEIP: 192.168.''некий_IP''.''VEID'' * проброс ssh: host:20VEID -> guest:22 (например, host:2053 -> 192.168..53:22) * Проброс средствами alterator на двух и более сетевых интерфейсах сделать нельзя * /!\ описать `.ssh/config` * Имя VE (поле name) -- значащее * Используется [http://git.altlinux.ru/people/george/private/?p=rcs.git;a=blob;f=bin/iptables-gen скриптом для автоматического проброса портов] * скрипт использует [http://git.altlinux.ru/people/george/private/?p=rcs.git;a=blob;f=bin/functions bin/functions] * Формат имени VE (поле name): `<имя>[-<параметр>[-<параметр>...]]` * Желательно, чтобы `<имя>` совпадало с именем во внутреннем DNS * Формат параметра: `<свойство>[_<значение>[_<значение>...]]` * `internal` -- запретить проброс портов (и SSH, и службы) * `void` или `nofwd` -- запретить проброс порта службы * `port_<порт>[_<порт>...]` -- порт службы не совпадает с VEID, равен `<порт>` * `paste` -- VEID не совпадает с IP (последним байтом VEIP), порт службы вычисляется как `` * `proto_<протокол>[_<протокол>...]` -- пробрасываются порты указанных протоколов * Например, `named-proto_tcp_udp` (VEID=53) приведёт к пробросу трёх портов: 22 (наружный 2053), 53/TCP и 53/UDP. * По умолчанию пробрасвается 22 порт и TCP-порт, равный младшему байту VEIP. * Получившуюся выдачу можно вставить в `/etc/sysconfig/iptables` * `/etc/resolv.conf` смотрит на внутренний DNS-сервер (см. ниже) * `/etc/apt/sources.list` смотрит на внутренний FTP-сервер (см. ниже) == Хост-сервер == === Обратное проксирование для внутренних HTTP-серверов === Идея в том, чтобы принимать HTTP-запросы на любой FQDN из числа хостящихся на внутреннем сервере (скажем, `vhost.other.domain`) и перенаправлять на внутренний сервер (скажем, `VENAME.server.domain.name`) * Устанавливается apache2 * Включаются mod-ы: proxy, proxy_http * Каждый vhost на каждом внутреннем сервере настраивается в каталоге `/etc/httpd2/conf/sites-available` (и затем включается с помощью `a2ensite`) * Удобнее всего именовать файлы настроек по FQDN vhost-а (`vhost.other.domain`) * Файл `vhost.other.domain.conf`: {{{ Include "conf/sites-available/vhost.other.domain.include" Include "conf/sites-available/vhost.other.domain.include" Include "conf/sites-available/ssl.include" SSLProxyEngine On SSLCertificateFile /etc/httpd2/conf/ssl.crt/vhost.other.domain.crt SSLCertificateKeyFile /etc/httpd2/conf/ssl.key/vhost.other.domain.key }}} * Файл `vhost.other.domain.include`: {{{ ServerName vhost.other.domain . . . ProxyRequests Off Order deny,allow Allow from all ProxyPreserveHost On ProxyPass / http://VENAME.server.domain.name/ ProxyPassReverse / http://VENAME.server.domain.name/ }}} * Файл `ssl.include` содержит общие для всех настройки, например: {{{ # Provide default template for virtual hosts SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLOptions +StdEnvVars SSLOptions +StdEnvVars CustomLog /var/log/httpd2/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" }}} Обратите внимание, что ssl-ключи vhost-ов лежат на хост-сервере. /!\ Хранение различных ключей (вида `vhost.other.domain.crt` пока не тестировалось) === Проксирование для FTP-сервера === Из-под внешнего NAT будет работать только active FTP со всеми вытекающими. Можно воспользоваться 2 и 3 вариантами, тогда заработает и passive FTP. В некоторых случаях ftp helper и/или ядро подглукивают, в результате чего пакеты не скачиваются и dist-upgrade на машинах в сети, например, не проходит :( . Скорее всего, на быстрых машинах и сетях придётся увеличивать допустимые beancounter-ы сетевых буферов. Возможные варианты обхода: 1. (не проверено) Насильственное ограничение количества соединений в `xinetd.conf` в FTP VE 1. Присваивание FTP VE адреса из ''внешнего'' диапазона 1. Расвёртывание FTP-архива на хост-сервере ==== Использование iptables ftp helper ==== * В файле `/etc/sysconfig/iptables` {{{ . . . -A PREROUTING -d -i eth0 -p tcp -m helper --helper "ftp" -j DNAT --to-destination 192.168..21 }}} * В файле `/etc/sysconfig/iptables_modules` {{{ . . . ip_conntrack_ftp }}} === Доступ администраторов виртуальных серверов к контенту === /!\ придумать === Курица или яйцо? === * `sources.list` правится вручную после запуска FTP-сервера {{{ rpm [alt] ftp://ftp.server.domain.name/ALTLinux/branch x86_64 classic rpm [alt] ftp://ftp.server.domain.name/ALTLinux/branch noarch classic }}} * `resolv.conf` правится вручную после запуска DNS-сервера {{{ search server.domain.name nameserver 192.168..53 }}} == Системные серверы == 1.#21 FTP-сервер * Содержит дистрибутив * Собственный `sources.list` состоит из "`rpm: file:/....`" * Указан в `/etc/apt/sources.list` всех других серверов * (''необязательно'') установлен `sisyphus-mirror` для обновления {{{ . . . SRCROOT=rsync://rsync.altlinux.org/ALTLinux/4.0 DESTROOT=/var/ftp/ALTLinux LIST="branch" . . . }}} ----- 1.#53 DNS-сервер * Обеспечивает зону для всех внутренних серверов * Для генерации зон используется [http://git.altlinux.ru/people/george/private/?p=rcs.git;a=blob;f=bin/simpleDNS скрипт simpleDNS] (+[http://git.altlinux.ru/people/george/private/?p=rcs.git;a=blob;f=bin/simpleDNS.awk simpleDNS.awk]) * /!\ Документация на simpleDNS {{{ ## zone_name is unique, no split horizont provided # "[" zone_name "]" # "NS:" Name_server_spec ## MX priorities are calculated automatically by increasing # "MX:" Mail_xchanger_spec # name [cname1 cndme2 ...] {ip | partial_ip} # "IP:" Network_IP }}} * Пример `/var/lib/bind/zone/simpleDNS.profile`: {{{ [server.domain.name] IP: 192.168. NS: 192.168..53. server.domain.name. named 53 www 80 moin 81 trac 82 ftp 21 }}}