Назад | Перейти на главную страницу

IPTables с общедоступного IP-адреса и порта на LAN-IP

У меня есть 3 общедоступных IP-адреса для моего сервера, и у меня есть несколько виртуальных машин, у которых есть собственная «работа». На сервере 1 сетевая карта. Публичные IP-адреса:

IP-адреса LAN:

и так далее и тому подобное.

Пример: запрос исходит от XX.XX.21.141: 80. Запрос будет отправлен на 10.10.0.20:80. Vserver отправляет пакет обратно через XX.XX.21.141.

Почему я так делаю? Потому что я хочу сдать в аренду несколько серверов.

Я знаю, как добиться этого с помощью IPTables на одном общедоступном IP-адресе, но понятия не имею, как это сделать с несколькими общедоступными IP-адресами.

Надеюсь, вы можете мне помочь.

Приветствую

Если вы хотите перенаправить только http / https, лучше использовать nginx (но вы можете apache). В зависимости от того, какой у вас веб-сервер (Apache, NGinx), вам следует рассмотреть возможность использования HTTP-прокси на своем интерфейсном сервере:

Вы можете использовать мосты для предоставления некоторых выделенных IP-адресов виртуальных машин.

Решение iptables

                                 iptables
                                     |                   .---------------.
    .-,(  ),-.                       v               port 80             |
 .-(          )-.        port 80  ________               |               |
(    internet    )------------>[_...__...°]------------->|      VM       |
 '-(          ).-'    XX.XX.9.247    ^   10.10.0.10      |               |
     '-.( ).-'                       |                   |               |
                                     |                   '---------------'
                                     |
                                     |
                                   __  _ 
                                  [__]|=|
                                  /::/|_|

Это сценарий

#!/bin/sh
# eth1 is WAN
WAN=eth1
MAIN_IP=XX.XX.9.247
MAIN_PORT=80
BACK_END_IP=10.10.0.10
BACK_END_PORT=80

echo 1 > /proc/sys/net/ipv4/ip_forward
# it's clean all tables
iptables -F
iptables -t nat -F
iptables -X

iptables -t nat -A PREROUTING -i ${WAN} -d ${MAIN_IP} --dport ${MAIN_PORT} -j DNAT --to-destination ${BACK_END_IP}:${BACK_END_PORT}
iptables -A FORWARD -d ${MAIN_IP} --dport ${MAIN_PORT} -j ACCEPT
#maybe this# iptables -A FORWARD -i ${WAN} -j ACCEPT

iptables -t nat -A POSTROUTING -j MASQUERADE