Home
Записки домашнего админа
Как настроить Хостинг на домашнем сервере    
Автор:
 
Создано: 15.09.2015 11:23  
  Печать   E-mail  

     У нас есть сервер который обслуживает домашнюю сетку, почему бы не добавить на него хостинг.Первое что мы начнем делать это - попробуем настроить бриджи для хостинга , сервак наш должен через сетевую провайдера отдавать веб контент, причем для каждого пользователя хостинга надо обеспечить возможность работать на независимом виртуальном сервере, Сразу напрашивается демилитаризованная сеть (ДМЗ) которую мы будем делать через бридж br-dmz, еще понадобится бридж на сетевуху провайдера br-int, и ко всему прочему сервер должен обслуживать локальную сеть.И так

     Наши сетевые:

eth0 - сетевая к провайдеру . eth1 - сетевая локалки.

     Будем делать бриджи:

br-int без IP на eth0, br-loc IP статический IP на eth1 , br-dmz бридж для демилитаризованной зоны (виртуальные сервера пользователей хостинга).

    Установим нужные для этого пакеты.

yum install bridge-utils tunctl -y

     Если ваша система с графическим интерфейсом, надо отключить NetworkManager

  • chkconfig NetworkManager off
  • chkconfig network on
  • service NetworkManager stop
  • service network start

      Предполагается, что ваши сетевые работают и настроены, теперь создаем бриджи и правим сетевые.

nano /etc/sysconfig/network-scripts/ifcfg-br-int

DEVICE=br-int
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br-int"

nano /etc/sysconfig/network-scripts/ifcfg-eth0    

приводим к виду

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
HWADDR=XX:XX:XX:XX:XX:XX     # мак адрес сетевой
NAME="System eth0"
BRIDGE=br-int

IPV6INIT=no

    Тоже само со второй сетевой

nano /etc/sysconfig/network-scripts/ifcfg-br-loc     

DEVICE=br-loc
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=ххх.ххх.ххх.ххх      # IP бриджа
PREFIX=24
GATEWAY=ххх.ххх.ххх.ххх  # ставим свой
DNS1=ххх.ххх.ххх.ххх          # ставим свой
DOMAIN=название вашего домена
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br-loc"

nano /etc/sysconfig/network-scripts/ifcfg-eth1    

приводим к виду

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
HWADDR=XX:XX:XX:XX:XX:XX     # мак адрес сетевой
NAME="System eth1"
BRIDGE=br-loc

     И еще  для зоны ДМЗ

nano /etc/sysconfig/network-scripts/ifcfg-br-dmz

EVICE=br-dmz
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
NAME="System br-dmz"

Перезапускаем сеть

service network restart

На хосте приведем iptables к такому виду

nano /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-I INPUT -p tcp --dport 3389 -m state --state NEW -j ACCEPT     #-- это только в том случае если ставили KDE или GNOME и делали удаленный доступ по RDP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Перезапускаем iptables

service iptables restart

Посмотрим, что у нас получилось с бриджами

brctl show

Должны увидеть что то подобное

bridge name     bridge id                          STP enabled     interfaces
br-dmz                8000.000000000000       no
br-int                   8000.d027880416d7        no                      eth0
br-loc                  8000.6805ca06ecd9        no                       eth1

     Конфигурация нашего домашнего хотинг сервера выглядит так:

host

По цветам:

Зеленый - уровень сервера.

Желтый  - уровень гипервизора

Розовый - уровень виртуальных машин.

     Концепция сервера следующая , виртуалка Firewall (роутер) - по названию, весь трафик будем рулить через него, на нем же будет стоять проксирующий Nginx для разруливания веб контента пользователей хостинга на веб сервере, веб сервер в отдельной сети (ДМЗ) и локальная часть , что бы дома тоже было замечательно.

     Теперь можно ставить KVM смотрим тут (опуская настройку бриджа , так как мы его уже настроили)  можно также поставить графическую оболочку GNOME или KDE конфигурить виртуалки будем через "менеджер виртуальных машин".

    Поехали ставить Роутер (Firewall) и отдадим ему все наши бриджи br-int, br-dmz, br-loc, он будет работать под управлением CentOs на текущий момент версия 6.7. После установки мы получим 3 сетевые eth0 ,eth1 и eth2 через которые мы пустим весь трафик.

     Правим файлы сетевых /etc/sysconfig/network-scripts/

ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
HWADDR=у вас свой
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

ifcfg-eth1

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=IP вашей ДМЗ
PREFIX=8
GATEWAY=ваш шлюз
DNS1=ваш DNS
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth1"
HWADDR=у вас свой

ifcfg-eth2

DEVICE=eth2
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=у вас свой
IPADDR=IP вашей локалки
PREFIX=24
GATEWAY=ваш шлюз
DNS1=ваш DNS
DOMAIN=ваш домен
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth2"

 Расшифровка:

      eth0 (ifcfg-eth0) - настраиваем на получение IP по DHCP от провайдера, на нее будет приходить весь трафик из интернета.

      eth1 (ifcfg-eth1) - это наша ДМЗ у нее своя сеть (и статический IP) не пересекающаяся с локальной (незачем пользователям хостинга лазать в нашу локалку).

      eth2 (ifcfg-eth2) - это ваша локалка , тоже присвойте ей статический IP локальной сети.

На Роутере (Firewall) приведем iptables к такому виду

nano /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT           # это SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT           # тут будет отвечать nginx который мы поставим позже
-A INPUT -s локальная сеть -j ACCEPT                                                      # тут разрешаем локальной сети шарахаться
-A INPUT -s ДМЗ -j ACCEPT                                                                          # тут ДМЗ
-A INPUT -j REJECT --reject-with icmp-host-prohibited

-P FORWARD DROP
-A FORWARD -i lo -o lo -j ACCEPT
-A FORWARD -i eth2 -o eth0 -j ACCEPT                                                       # разрешаем проходить локальным пакетам

-A FORWARD -i eth1 -o eth0 -j ACCEPT                                                       # разрешаем проходить ДМЗ пакетам (как правило не включают по сообр. безопасности)
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE                                                 # разрешаем ходить в интернет
COMMIT

Перезапускаем iptables

service iptables restart

     Теперь поставим на Роутер (Firewall) Nginx, как описано тут.

Теоретически с Роутером (Firewall) мы закончили, позже может для домашней сетке я расскажу как пробросить мультикаст внутрь сети , чтоб ТВ каналы смотреть, можно переходить к настройке Веб сервака.

На веб сервер ставим так же как и для роутера, CentOs 6.7, только отдаем ему один бридж br-dmz. После установки у нас в распоряжении будет сетевая eth0 , думаю проще будет установить статический IP (помним, что сетка ДМЗ)  так как с роутера проще будет рулить трафиком.Скрипт:

nano /etc/sysconfig/network-scripts/ifcfg-eth0 будет выглядеть так:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
HWADDR=ваш адрес сетевой
IPADDR= ваш IP
PREFIX=8
GATEWAY=тут IP шлюза в роутере это eth1
DNS1=тут DNS это будет днс который мы возможно поставим на роутере позже
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

Crtl+O , Ctrl+X

На Веб серваке (Web Server) приведем iptables к такому виду

nano /etc/sysconfig/iptables

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT     #заход по SSH
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT     #тут апач будет отвечать
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

Crtl+O , Ctrl+X

Еще надо отключить SELinux.

Выполним команду (Если влом изучать  SELinux , повторите это на всех виртуалках) :

nano /etc/selinux/config

И заменим значение переменной на SELINUX=disabled, должно получиться так

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Жмем Ctrl+O и Ctrl+X, в принципе не плохо бы ребутнуться (перезагрузить комп).

Приступаем к установке остального фарша, ка то Apache,PHP 5.4 , MySQL !?!? есть подозрение что его лучше наверно вынести на отдельную виртуалку.

Установка php 5.4 на Centos 6.7  ИЛИ Установка PHP 5.5 и MySQL 5.5 на домашний сервер

И

Установка веб сервера Apache

 Вот так.

 
Яндекс.Метрика
   
 
 
  Top