У меня есть 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