Итак, цель: Запустить веб-сервер, на железяке, которая находится в локальносй сети. При этом, сам веб-сервер должен быть доступен из вне, для других пользователей сети.
Задачи, дабы было проще достигать цели:
1) Поднимаем сам веб-сервер;
2) Позволяем железяке выходить в интернет через ноутбук, который к интернету подключен.
3) Так как IP у нас динамический, нам потребуется поднятие доменного имени и динамических DNS.
4) Так как наш сервер покдючен к сети через другой компьютер, на это компьютере нам нужно настроить перенаправление трафика на сервер.
Окружение:* Интернет - USB модем от SkyLink.
* Компьютер, который подключен к интернету и локальной сети. OS Fedora 13.
* Сервер, который подкючен к Компьютеру по локальной сети. OS Fedora 8.
1) Поднимаем веб-сервер.Сложного здесь ничего, так как затеяли мы всё это just for fun, то не заморачиваясь мы поставим всё из репозиториев. Но перед тем, как мы начнём всё устанавливать, я предлагаю выключить на второй машине фаервол. Ведь трафик будет фильтроаться у нас ещё на компьютере, с которого будет на наш веб-сервер перенаправляться, а значит на второй железяке iptables можно выключить. Управляем этим сервисом при помощи команд:
/sbin/service iptables stop
/sbin/service iptables start
/sbin/service iptables restart
а) Ставим апач:
yum install httpd
В дальнейшем, апачем управляем при помощи команд:
/sbin/service httpd start
/sbin/service httpd stop
/sbin/service httpd restart
Если хотим поставить апач в автозапуск, то выполняем команду:
/sbin/chkconfig httpd on
б) Ставим мускуль:
yum install mysql mysql-server
Опять же, в дальнейшем, запуском\перезапуском\остановкой mysql управляем при помощи команд:
/sbin/service mysqld start
/sbin/service mysqld stop
/sbin/service mysqld restart
Если требуется, для добавления мускуля в автозапуск выполняем команду:
/sbin/chkconfig mysqld on
в) Поставим, пожалуй, ещё и PHPMyAdmin для управления нашими базами.
yum install phpmyadmin
г) Ставим поддержку PHP, Python и Perl.
yum install php php-mysql
yum install mod_python MySQL-python
yum install perl mod_perl perl-DBD-mysql
После установки каждого компонента, не помешает перезапускать апач.
/sbin/service httpd restart
Собственно, для начала хватит. Будем считать что "веб-сервер на коленке" для запуска одного сайта готов.
2) Позволяем железяке выходить в интернет через ноутбук, который к интернету подключен.По другому эту главу можно назвать "Расшариваем интернет в локальную сеть при помощи iptables". Звучит страшно, на деле - проще простого. Нам нужно настроить Маскарад в iptables. Пользоваться, кстати, будем гуем, ибо до написания своих скриптов и грамотного описания правил для iptables автор пока что не дорос.
а) На компьютере, который соединён с интернетом, настраиваем подключение по локальной сети:
Сетевой адрес: 192.168.0.1
Маска подсети: 255.255.255.0
Каким образом будут сделаны эти настройки - не важно, кто-то привык изменять всё консолью, а кто-то networkmanager'ом.
б) На этом же компьютере, открываем межсетевой кран
(у меня в гноме это Система - Администрирование - Межсетевой экран), вводим рут пароль, если потребуется. В открывшемся окне выбираем пункт Маскарад и выбираем нужный нам интерфейс, тот что мы хотим расшарить по локальной сети. В моём случае это ppp0. После внесения изменений нажимаем кнопку Применить.
в) На сервере - том компьютере, для которого мы расшариваем доступ настраиваем подключение по локальной сети следующим образом:
Сетевой адрес: 192.168.0.2
Маска подсети: 255.255.255.0
Шлюз: 192.168.0.1
Сохраняем изменения. Активируем сетевые подключения на обоих железяках. Если всё сделано правильно, то обе железяки теперь могут выходить в интернет, одна напрямую, вторая через первую.
(О как сказал.)3) Так как IP у нас динамический, нам потребуется поднятие доменного имени и динамических DNS.Динамический IP, не помеха для организации доступа на наш сервер из вне. Как выяснилось, фокус очень прост.
а) Для начала, зарегистрируемся вот на
этом сервисе. Активируем учётную запись, логинимся и переходим вот по
этой ссылке.
Hostname - вводим доменное имя, его сервис предоставляет нам бесплатно.
Service Type - Host with IP address.
IP Address - вводим тот IP адрес, который провайдер выдал нам сейчас. По идее, система сама определит его и предложит ввести.
Mail Routing - перенаправление почты. Я не включал, оно мне не нужно, потому я не ставил эту галку.
What do you want to use this host for? - Тут поставим web page. Ибо размещать хотим веб-страничку.
Жмём кнопку Add to cart. На следующей странице нам предложат добавить какие-либо платные услуги, нам оно не надо, поэтому мы сразу тыкнем Next. На открывшейся странице жмём Activate Service.
б) Переходим к компьютеру, который подключен к интернету напрямую. Открываем консоль и ставим клиент для dyndns:
yum install ddclient
nano /etc/ddclient.conf
Открываем файл ddclient.conf и вносим нужные нам изменения. Я без зазарения совести выкинул из этого файла всё, кроме:
daemon=300 # check every 300 seconds
syslog=yes # log update msgs to syslog
mail=root # mail all msgs to root
mail-failure=root # mail failed update msgs to root
pid=/var/run/ddclient.pid # record PID in file.
server=members.dyndns.org
protocol=dyndns2
use=web,web=dyndns
wildcard=yes
login=LOGIN # тут пишем логин на dyndns.com
password=PASSW # тут пишем пароль на dyndns.com
seeerver.dyndns.org # тут пишем домен, который мы зарегистрировали на dyndns.com, домен не обязательно *.dyndns.org
Сохраняем внесённые изменения и запускаем dyndns клиент.
/usr/sbin/ddclient start
Если всё сделано верно, то пинги, до выбранного нами домена будут доходить, при этом, в качестве IP адреса домена будет отображаться тот адрес, который мы получили в момент подключения к интернету.
4) Так как наш сервер покдючен к сети через другой компьютер, на это компьютере нам нужно настроить перенаправление трафика на сервер.Последнее, что нам осталось - это пропустить входящих из интернета пользователей через компьютер подключенный к интернету напрямую и перенаправить их на веб-сервер нашей локальной сети.
а) Для этого, откроем наш редактор межсетевого экрана
(у меня в гноме это Система - Администрирование - Межсетевой экран), там в разделе Доверенные службы, выберем WWW (HTTP), если нужно, Безопасный WWW (HTTPS), если такой используется и SSH, если хотим иметь удалённый ssh доступ на наш сервер. Жмём кнопку применить.
б) Для осуществления перенаправления, в уже открытом редакторе межсетевого экрана, переходим в раздел Перенаправление портов, жмём кнопку Добавить. Источником у нас будет интерфейс подключения к интернету
(у меня это ppp0), протокол - tcp, порт - 80.
В качестве Цели для перенаправления, выбираем Направление другому порту
(ставим галку), в поле Адрес IP, вбиваем адрес подключенного к локальной сети сервера, в поле Порт выбираем 80. Жмём ОК.
80 - для HTTP, для HTTPS, SSH и т. д. нужно будет настраивать перенаправления отдельно, но сама по себе настройка проходит так же.Итак, если всё сделано верно, если на второй машине
(сервере) отключен iptables, правильно указаны перенаправления, правильно настроен dyndns, на сервере запущен апач и залит сайт, то при обращении по адресу
(заведённому после регистрации на dyndns.com) у нас этот самый сайт должен открыться.
Сервер поднят, сайт работает и доступен для пользователей из интернета. Всем спасибо за внимание.
P. S. Я не ручаюсь за то что, то что сработало у меня, так же сработает и у вас.
P. P. S. Я мог что-то забыть, если подобное выяснится, пост будет дополнен.