У нас есть сервер который обслуживает домашнюю сетку, почему бы не добавить на него хостинг.Первое что мы начнем делать это - попробуем настроить бриджи для хостинга , сервак наш должен через сетевую провайдера отдавать веб контент, причем для каждого пользователя хостинга надо обеспечить возможность работать на независимом виртуальном сервере, Сразу напрашивается демилитаризованная сеть (ДМЗ) которую мы будем делать через бридж 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
Конфигурация нашего домашнего хотинг сервера выглядит так:
По цветам:
Зеленый - уровень сервера.
Желтый - уровень гипервизора
Розовый - уровень виртуальных машин.
Концепция сервера следующая , виртуалка 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 |
ifcfg-eth1 DEVICE=eth1 |
ifcfg-eth2 DEVICE=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 на домашний сервер
И
Вот так.