Как я настраиваю ALS4.0
(см. также проект "Портал МПГУ")
Установка
вроде замечаний нет?
Дисциплина создания сервисов
VEID: системные -- по номеру порта службы, которая на них работает (dns: 53, ftp: 21 и т. п.), остальные -- любой (лучше < 255 )
VEIP: 192.168.некий_IP.VEID
проброс ssh: host:20VEID -> guest:22 (например, host:2053 -> 192.168.<IP>.53:22)
Проброс средствами alterator на двух и более сетевых интерфейсах сделать нельзя
описать .ssh/config
- Имя VE (поле name) -- значащее
Используется скриптом для автоматического проброса портов
скрипт использует bin/functions
Формат имени VE (поле name): <имя>[-<параметр>[-<параметр>...]]
Желательно, чтобы <имя> совпадало с именем во внутреннем DNS
Формат параметра: <свойство>[_<значение>[_<значение>...]]
internal -- запретить проброс портов (и SSH, и службы)
void или nofwd -- запретить проброс порта службы
port_<порт>[_<порт>...] -- порт службы не совпадает с VEID, равен <порт>
paste -- VEID не совпадает с IP (последним байтом VEIP), порт службы вычисляется как <VEID><IP>
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:
<VirtualHost *:80> Include "conf/sites-available/vhost.other.domain.include" </VirtualHost> <IfModule ssl_module> <VirtualHost *:443> 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 </VirtualHost> </IfModule>
Файл vhost.other.domain.include:
ServerName vhost.other.domain . . . ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> 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 <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/var/www/apache2/cgi-bin"> SSLOptions +StdEnvVars </Directory> <IfModule log_config_module> CustomLog /var/log/httpd2/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </IfModule>
Обратите внимание, что ssl-ключи vhost-ов лежат на хост-сервере. Хранение различных ключей (вида vhost.other.domain.crt пока не тестировалось)
Проксирование для FTP-сервера
Из-под внешнего NAT будет работать только active FTP со всеми вытекающими. Можно воспользоваться 2 и 3 вариантами, тогда заработает и passive FTP.
В некоторых случаях ftp helper и/или ядро подглукивают, в результате чего пакеты не скачиваются и dist-upgrade на машинах в сети, например, не проходит .
Скорее всего, на быстрых машинах и сетях придётся увеличивать допустимые beancounter-ы сетевых буферов.
Возможные варианты обхода:
(не проверено) Насильственное ограничение количества соединений в xinetd.conf в FTP VE
Присваивание FTP VE адреса из внешнего диапазона
- Расвёртывание FTP-архива на хост-сервере
Использование iptables ftp helper
В файле /etc/sysconfig/iptables
. . . -A PREROUTING -d <IP.AD.DR.ES> -i eth0 -p tcp -m helper --helper "ftp" -j DNAT --to-destination 192.168.<IP>.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.<IP>.53
Системные серверы
- 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" . . .
- DNS-сервер
- Обеспечивает зону для всех внутренних серверов
Для генерации зон используется скрипт simpleDNS (+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.<IP> NS: 192.168.<IP>.53. server.domain.name. named 53 www 80 moin 81 trac 82 ftp 21