У нас є сервер який обслуговує домашню сітку, чому б не додати на нього хостінг.Первое що ми почнемо робити це - спробуємо налаштувати бриджі для хостингу, сервак наш повинен через мережеву провайдера віддавати веб контент, причому для кожного користувача хостингу треба забезпечити можливість працювати на незалежному віртуальному сервері, Відразу напрошується демілітаризована мережу (ДМЗ) яку ми будемо робити через бридж 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 на домашній сервер
И
Ось так.