Интернет сервер на OS/2
Илфат Кутдусов, Russian/2 projectOS/2.ru
Хотелось бы мне рассказать про Интернет сервер, собранный под OS/2.
Может быть, опыт моей работы кому-то поможет собрать полноценный сервер.
Через эту машину больше 100 человек выходят в интернет, забирают почту по
POP3; ведется Primary DNS .
Конфигурация машины:
Процессор: 2*PII-233
Память: 128Mb
SCSI: Adaptec 7880 на борту матери
Video: Не особо важно. Все равно режим 640x480x16.
Вроде S3Trio64V+ стоит.
HDD: Seagate Chitah 4.3 Gb
Ethernet: 3Com905 (не путать с 3Com905B - это еще то глюкало под ось)
MultiPorts: Какая-то беспородная на 8 портов и с одни IRQ
OS/2 Warp Server RUS Advanced без единого фикса. Просто в свое время я сильно
устал от экспериментов с фиксами. Главное - чтобы работало.
Установленный софт:
OS/2 v3.0 Warp Server Advanced RUS v4.0 rev 8.234
Perl: 5.005_53
Fossil: SIO v1.60c 16 ports
Шедулер: Rsched v.1.5.beta
Internet:
EMX: v0.9c
DNS: BIND 8.1.1
Proxy: Squid v1.1.15
SMTP: SendMail 1.3.14 (т.е. родной от оси)
POP3: OS2Pops v2.02
HTTP: Apache_1.3.3ruspl27.3-php-3.0.5-mysql
SQL: Mini SQL Version 2.0.4.1
FTP: FtpServer (Peter Moylan's FTP daemon) v0.60
TFTP: TFTP Server 24/10/95 (родной от оси)
SNTP: Time Server, Revision: 1.8
SysLogD: SysLog демон от 03/06/95 (с хоббесов)
TelnetD: Родной от оси. Для авторизации используется APLogin v1.00с
NNTP: SQ2NN (too raw, ver. 0.1) (правда глубокая альфа, но на чтение
работает)
Сбор статистики:
Proxy: cache-stats-1.4 (Perl)
Daily usage statistics for Netscape Proxy &
Squid Cache - v1.4 961006
SNMP: Сбор статистики с маршрутизаторов Cisco MRTG v2.5.3
Теперь как все это работает:
CONFIG.SYS: То что отличает от родного конфига REM *********************************************
AUTOFAIL=YES
SUPPRESSPOPUPS=C
REIPL=ON
PROTECTONLY=YES
REM TimeSlice=32,256
REM TRAPDUMP=ON,E:
REM TRAPDUMP=RO,E:
REM DUMPPROCESS=E
SET STARTUP=C:
REM *********************************************
SET TZ=EKB-5UTC,3,-1,0,7200,10,-1,0,7200,3600
SET HOSTNAME=STATION
SET USE_HOSTS_FIRST=1
SET RESTARTOBJECTS=STARTUPFOLDERSONLY
SET EMXOPT=-h1536
SET PERL5LIB=C:/Utility/perl5/lib
SET SHELLHANDLESINC=5
Остальное согласно документациям программ.
StartUp Folder: OS2Pops;
StartUp.CMD: :: ============= Подключение сетевых дисков и старт сервера
:: старт Варп-сервера
NET START SERVER
@if errorlevel 2 C:IBMLANNETPROGlserr.exe
logon userid /p:password /v:d
:: Логин в Novel-дерево
C:netwarenwtools.exe C:netwareposter.nws autoexit
:: ============== Запуск серверов и сервисов
:: Это старт SysLogD-демона
detach c:UtilitySysLogDsyslogd.exe -d -f C:UtilitySysLogDsyslog.cnf
:: ============== старт DNS-сервера
d:
cd Bindbin
detach named -cC:MPTNETCnamed.conf
:: ============== Старт Mini SQL сервера (он нужен для WWW-сервера
start /c D:PublicmSQL2BINdbstart.cmd
:: ============== Telnet-сервер на нестандартном порту 3333 для
:: ============== удаленного доступа до сервера
SET ATLPAC_PASSWD_FILE=C:TCPIPAPLOGINPASSWD
SET ATLPAC_GREETING_FILE=C:TCPIPAPLOGINGREETING.TXT
SET ATLPAC_WELCOME_FILE=C:TCPIPAPLOGINWELCOME.TXT
SET ATLPAC_BADLOGIN_FILE=C:TCPIPAPLOGINBADLOGIN.TXT
SET ATLPAC_LOG_FILE=c:TCPIPAPLOGINMYLOG.TXT
start /c "Telnet by port 3333" telnetd -p 3333
:: ============== Синхронизация времени с тайм-сервером в интернете
detach daytime.exe -s -u -c 3600 128.173.14.71
:: ============== Запуск TimeServer-а.
:: Чтобы другие могли по мои часам синхронизироваться.
detach c:utilitydaytimed -S
:: ============== Запуск TFTP-сервера
cd TFTP_Server
detach tftpd
:: ============== FTP-server
cd FTPServer
Detach ftpd D3 F10000 L1
:: ============== NNTP-сервер
cd bbs.os2s2n
detach sq2nn
:: ============== Mail-server
Detach sendmail -bd -q30m -CC:MPTNETCsendmail.cf
:: ============== Proxy-сервер
cd Squid
Detach squid.exe
:: ============== Запуск шедулера.
:: Он создает полы на адреса, создает флаги для сбора статистики
:: и многое другое. Возможности его довольно широки.
cd bbs.os2rsched
start /c "Shuduler" RSched.exe
Настройки фидошного софта приводить здесь не имеет смысла. Мои настройки
никому, кроме меня, не интересны.
Так что загрузка достаточно большая. Правда на сегодняшний день работает
только одна модемная линия, остальные забрали :(
Настройка Internet-софта.
Стек TCPIP
Эта машина имеет адрес 10.2.3.200 (внутренний), во внешнем мире (за
файрволом) она видна под адресом 212.220.26.71
Вообщем-то ничего оригинального.
Файл MPTNBINSETUP.CMD выглядит примерно так: route -fh
arp -f
ifconfig lo 127.0.0.1
ifconfig lan0 10.2.3.200 netmask 255.255.255.0
route add default 10.2.3.4 1
route add net 10 10.2.3.4 1
ipgate off
Т.е. ничего экзотического. Разве что запушен LoopBack интерфейс. Он необходим
для многих програм.
DNS
В качестве DNS-сервера у меня работает Bind. Он держит одну
сеть Класса А (10.0.0.0) и одну сеть класса C (интернетскую 212.220.26.0). Также
является Secondary DNS-ом для еще одной сетки класса А (15.0.0.0). Работает он
практически сразу и никаких проблем не создает. Пробежимся по настройкам: =================== Named.conf =================================
options {
directory "c:/MPTN/etc/namedb";
pid-file "c:/MPTN/etc/PID/named.pid";
dump-file "c:/MPTN/etc/namedb/named.dump";
statistics-file "c:/MPTN/etc/namedb/named.stats";
forwarders { 195.38.32.2 ; 195.38.33.2 ; 195.58.1.145 ; 193.124.176.158 ; };
check-names master fail;
datasize 2M;
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
query-source address * port 53;
};
zone "localhost." IN {
type master;
file "localhost.zone";
check-names fail;
allow-update { none; };
allow-transfer { any; };
};
zone "0.0.127.in-addr.arpa." IN {
type master;
file "localhost.rev";
check-names fail;
allow-update { none; };
allow-transfer { any; };
};
zone "." IN {
type hint;
file "root.hint";
};
zone "ukib." IN {
type master;
file "sgb.dom";
};
zone "10.in-addr.arpa." IN {
type master;
file "10.in-addr.arpa";
};
zone "15.in-addr.arpa." IN {
type slave;
file "15.in-addr.arpa";
masters { 15.3.0.10;};
};
zone "sgb.ru." IN {
type master;
file "sgb.ru";
};
zone "26.220.212.in-addr.arpa." IN {
type master;
file "26.220.212.in-addr.arpa";
};
Остальные файлы я здесь приводить не буду, но часть, касающуюся мирового
интернета - покажу: ========================= файл sgb.ru ==========================
$ORIGIN ru.
sgb IN SOA ns.sgb.ru.
postmaster.sgb.ru. (
19990210 ; Serial number for this data (yyyymmdd)
28800 ; Refresh value for secondary name servers
7200 ; Retry value for secondary name servers
604800 ; Expire value for secondary name servers
86400 ; Minimum TTL value
)
IN NS ns.sgb.ru.
IN NS ns.etel.ru.
IN NS ns1.etel.ru.
IN A 212.220.26.71
IN MX 20 mail.sgb.ru.
IN MX 30 ns.etel.ru.
IN MX 40 ns1.etel.ru.
$ORIGIN sgb.ru.
;********************************
;* Domain Address Information *
;********************************
dark
IN A 212.220.26.76
work IN CNAME dark
ns
IN A 212.220.26.71
mail
IN CNAME ns
www
IN CNAME ns
ftp
IN CNAME ns
binkd
IN CNAME ns
bbs
IN CNAME ns
irc
IN CNAME ns
ru2
IN CNAME ns
===================== файл 26.220.212.in-addr.arpa =================
;********************************
;* Start of Authority Records *
;********************************
$ORIGIN 26.220.212.in-addr.arpa.
@ IN
SOA ns.sgb.ru. postmaster.sgb.ru. (
19990211 ; Serial number for this data (yyyymmdd)
28800 ; Refresh value for secondary name servers
7200 ; Retry value for secondary name servers
604800 ; Expire value for secondary name servers
86400 ; Minimum TTL value
)
IN
NS ns.sgb.ru.
IN NS ns.etel.ru.
IN NS ns1.etel.ru.
$ORIGIN 26.220.212.in-addr.arpa.
71 IN PTR
ns.sgb.ru.
76 IN PTR
dark.sgb.ru.
Все до ужаса просто. С такими настройками все начинает сразу
работать. Как видно из приведенного конфига - эта же машина является почтовым
сервером для домена SGB.RU. Для приема почты с внешенго мира и отправки во
внешний мир используется SendMail из комплекта поставки OS/2. Как он запускается
- видно из строчки в StartUp.CMD. Здесь я приведу только строчки с конфига
SendMail.CF, отличающиеся от конфига по умолчанию: =============================================================
# Эти строчки в самом начале конфига
Dwsgb.ru
Cwsgb.ru
# нижеследующую строчку нужно подправить в конфиге
MLocal, P=D:os2popspopsmail.exe, F=lsm, S=10, R=20, A=D:os2pops
$u $f
Mprog, P=xxx, A=Required by sendmail but unused
=============================================================
Все. Напомню, что в качестве POP3-сервера у меня работает OS2Pops,
соответственно, и последние строчки в sendmail.cf настроены для него.
POP3-сервер никаких настроек не требует и начинает работать
сразу после инсталяции. Только стоит добавить в настройках администратора для
удаленного администрирования. Для администрирования я использую его родную
програмку для удаленного администрирования, которая тоже не требует настроек.
Разве что просить ввести пароль администратора и сервер администрирования.
Прокси-сервер.
Почему-то у многих возникают проблемы при его запуске.
Единственная особенность. Должен быть поднят LoopBack интерфейс. У нас в банке
установлено два таких прокси-сервера. Они работают в паре. Так же используется
прокси-сервер провайдера. Приведу отличия от стандартных конфигов со своими
комментариями: ======================= файл Squid.Conf ===================
# Это прокси-сервер провайдера. Если нет странички ни в своем кеше,
# ни на втором прокси-сервере, то эта страничка запрашивается у №;
# провадерского прокси-сервера. Замечу, что у провайдера тоже
# установлен Squid, но под юниксом.
cache_host 195.38.32.3 parent 3128
3130
# Это дружественный прокси-сервер на другой территории
cache_host 15.3.0.10 sibling
3128 3130
# Это локальный домен. Кешировать его тоже не надо.
local_domain ukib
# Это локальные IP-адреса.
# Сервера с этими адресами кешировать не надо.
local_ip 10.0.0.0
# Указывает количество демонов для DNS-резолвинга,
# стартуемых по умолчанию
dns_children 3
# Время, в течение которого открытые сокеты будут
# держаться за клиентом после обращения. Это значение нужно
# регулировать в зависимости от количества клиентов.
# У меня установлено 20 минут.
client_lifetime 20
acl localhost src 127.0.0.1/255.255.255.255
# Этот параметр определяет ACL-запись для администраторов.
# комментарии - ниже.
acl gate src 10.2.3.201/255.255.255.255
acl gate src 10.2.3.220/255.255.255.255
http_access allow manager gate
# Эту строчку нужно сразу же закомментировать, чтобы
# все кому не лень не пользовались вашим прокси-сервером
# acl all src 0.0.0.0/0.0.0.0
# Определяет адреса, которые могут пользоваться вашим
# прокси-сервером
acl all src 10.1.0.9/255.255.255.255
acl all src 10.1.0.10/255.255.255.255
acl all src 10.1.0.11/255.255.255.255
# Определяет сервера, с которых ничего не качается
# (нафиг нам наматывать трафик абсолютно ненужными банерами ;-) )
acl badsite url_regex ^http://www.banners.ru
acl badsite url_regex ^http://www.reklama.ru
acl badsite url_regex ^http://www.exchange.centre.ru
acl badsite url_regex ^http://www1.reklama.ru
http_access deny badsite
# Разрешает всем адресам группы "all"
# пользоваться вашим сервером
http_access allow all
icp_access allow all
# Определяет права администраторов для удаленного администрирования
# и пароль "_security_" для того, чтобы выключить прокси.
cachemgr_passwd _security_ shutdown
cachemgr_passwd none all
# Определяет уровень вложенности каталогов для кеша.
# Будет создано 8 каталогов, в каждом из которых еще 8 каталогов.
swap_level1_dirs 8
swap_level2_dirs 8
================================================================
Все. Первый запуск Squid-а нужно выполнить с параметром "-z"
чтобы он создал все дерево каталогов для кеша. Если скинуть файл CacheMgr.EXE в
"cgi-bin" каталог WWW-сервера, то по запросу к этой CGI-шке можно будет смотреть
через браузер настройки и статистику прокси-сервера. Больше никаких особенностей
нет.
HTTP-сервер.
В роли HTTP-сервера работает Apache. В особенности его
настройки я не особо вдавался. Но то, что я использую, - расскажу. Apache
обслуживает 2 виртуальных сервера с именами: www.sgb.ru и ru2.sgb.ru и
внутренними адресами: www.ukib и ru2.ukib соответственно. В файле httpd.conf
имеются следующие настройки на этот счет: ===================== файл httpd.conf ===================
NameVirtualHost 10.2.3.200
<VirtualHost 10.2.3.200>
ServerName www.ukib
DocumentRoot /WWW_Server/WWW
ErrorLog log/ww.error_log
TransferLog log/www.access_log
AccessConfig etc/www.access.conf
ResourceConfig etc/www.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName ru2.ukib
DocumentRoot /WWW_Server/merlin.itep.ru/~ru2main
ErrorLog log/ru2.error_log
TransferLog log/ru2.access_log
AccessConfig etc/ru2.access.conf
ResourceConfig etc/ru2.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName ru2.sgb.ru
DocumentRoot /WWW_Server/merlin.itep.ru/~ru2main
ErrorLog log/ru2.error_log
TransferLog log/ru2.access_log
AccessConfig etc/ru2.access.conf
ResourceConfig etc/ru2.srm.conf
#Include conf/charset.conf
</VirtualHost>
<VirtualHost 10.2.3.200>
ServerName www.sgb.ru
DocumentRoot /WWW_Server/WWW
ErrorLog log/www.error_log
TransferLog log/www.access_log
AccessConfig etc/www.access.conf
ResourceConfig etc/www.srm.conf
#Include conf/charset.conf
</VirtualHost>
==================================================================
В итоге если пользователь с внешнего мира набирает http://www.sgb.ru - то
он попадает на один сервер. Если http://ru2.sgb.ru, то влетает на другой сервер.
Для реализации этой возможности нужно, чтобы в DNS были строчки примерно такого
вида: ns
IN A 212.220.26.71
www
IN CNAME ns
ru2
IN CNAME ns
Вот собственно и все по поводу настроек Apache. Замечу, что для него тоже
нужно, чтобы интерфес LoopBack был поднят.
Mini SQL.
SQL сервер для WWW-сервера особых настроек тоже, собственно, не имеет. Для
его нормальной работы я сделал следующие настройки: =========================== файл dbstart.cmd =====================
set user=kutdusov
rem set msql_debug=general:query:error:
detach D:publicmSQL2binmsql2d
==================================================================
Предварительно нужно создать базу. У меня база уже была, поэтому я ее просто
подключил примерно так: msqladmin.exe
create Euxx
msql Euxx < euxx.msql
Где Euxx - это имя базы, euxx.msql - это та база, которую мне дали. Все!
TFTP. вообще никаких настроек не требует и работает только с тем
каталогом, из которого стартовал. Я его использую для сохранения
конфигурационных файлов и IOS_ов от маршрутизаторов Cisco.
FTP-сервер. Все прозрачно до безобразия. Даже не знаю, где могут
возникнуть проблемы.
SNTP. Сервер и клиент служат для синхронизации своего времени по
интернету и предоставления возможности внутренним клиентам синхронизировать свои
часы по вашему компьютеру. Нужно установить переменную TZ в файле CONFIG.SYS: SET TZ=EKB-5UTC,3,-1,0,7200,10,-1,0,7200,3600
Здесь все можно оставить так же, только в выделенном месте
нужно указать свою разницу с гринвичем. Буквы значения не имеют. Главное, чтобы
их было три. Можете, к примеру, для Москвы, указать такое начало это переменной T=MSK-3UTC...
Остальные цифры отвечают за переход времени летнее/зимнее.
Клиент запускается такой строчкой: detach daytime.exe -s -u -c 3600 128.173.14.71
|