LINUX.ORG.RU
ФорумAdmin

Проброс 2 внешних IP в 2 локальных подсети

 , , ,


0

1

Дано:
VPS Debian
#ifconfig
lo ip=127.0.0.1
venet0 ip=127.0.0.2
venet0:0 ip=213.180.193.1
venet0:1 ip=213.180.204.22


Цель -
2 chroot
chroot#1 nginx listen 127.0.0.4:80
chroot#2 nginx listen 127.0.0.6:80


такое ТЗ, тут ничего непопишешь - домены должны быть разделены по разным интерфейсам и чрутам.

Что сделано:
iptables -t nat -A POSTROUTING -p tcp --dst 127.0.0.4 --dport 80 -j SNAT --to-source 213.180.204.22
iptables -t nat -A POSTROUTING -p tcp --dst 127.0.0.6 --dport 80 -j SNAT --to-source 213.180.193.1
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.4:80
iptables -t nat -A PREROUTING -i venet0:1 -p tcp --dport 80 -j DNAT --to-destination 127.0.0.6:80
iptables -A FORWARD -d 127.0.0.4 -i venet0:0 -j ACCEPT
iptables -A FORWARD -d 127.0.0.6 -i venet0:1 -j ACCEPT


Захожу на домены в браузере - нет никакого признака жизни (пакеты вообще недоходят или неприходят) На одном из внешних ип работает ssh, тут вопросов нет.
Возникла мысль может вообще такая архитектура строится нетак?
МАСКАРАДИНГ тоже нехочу, читал о высоких нагрузках на систему.
Хоть ткните носом в какой-нибудь ман (на худой конец man iproute2) как правильно строить маршруты в таких подсетях и чрутах
Наверное в идеале хотелось бы получить реальные независимые подсети
Тогда задача сводится к такому:
chroot#1 nginx listen 127.0.1.1:80
chroot#2 nginx listen 127.0.2.1:80
Но как такое реализовать чтобы оно нормально работало пока непредставляю



Последнее исправление: xakepx (всего исправлений: 3)

Ответ на: комментарий от alozovskoy

Спасибо за отклик.
Весь tcpdump неуместился) привожу только цитаты


# tcpdump -n -i venet0 -s 0 dst port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes 12:38:05.966771 IP .52388 > 213.180.193.3.80: Flags , seq 1734456675, win 14600, options [mss 1460,sackOK,TS val 575104415 ecr 0,nop,wscale 3], length 0 12:38:07.230989 IP .52502 > 213.180.193.3.80: Flags , seq 1951330281, win 14600, options [mss 1460,sackOK,TS val 575104730 ecr 0,nop,wscale 3], length 0 12:38:08.715106 IP .52641 > 213.180.193.3.80: Flags , seq 1842985393, win 14600, options [mss 1460,sackOK,TS val 575105102 ecr 0,nop,wscale 3], length 0 12:38:10.043122 IP .52710 > 213.180.193.3.80: Flags , seq 3378697447, win 14600, options [mss 1460,sackOK,TS val 575105434 ecr 0,nop,wscale 3], length 0 12:38:11.573235 IP .52824 > 213.180.193.3.80: Flags , seq 917105121, win 14600, options [mss 1460,sackOK,TS val 575105816 ecr 0,nop,wscale 3], length 0 ^C 5 packets captured 5 packets received by filter 0 packets dropped by kernel # tcpdump -n -i lo -s 0 dst port 80
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes ^C 0 packets captured 0 packets received by filter 0 packets dropped by kernel

xakepx
() автор топика

Прочитал по диагонали, но пакеты со 127.x.x.x на другие ip-адреса признаются марсианскими. Включите логирование марсианских пакетов и убедитесь в этом. Лучше назначьте какой-нибудь 192.168.x.x или ещё какой и ip-адрес и делайте ″nginx listen″ и DNAT/SNAT с ним.

mky ★★★★★
()
Ответ на: комментарий от mky

Буду признателен если поправите мои мысли
edit /etc/network/interfaces
... lo
iface eth0 (?) физически драйвера в системе нет


iface eth0:0 inet static
address 192.168.1.1
netmask 255.255.255.0
gateway 192.168.1.254
auto eth0:0


iface eth0:1 inet static
address 192.168.2.1
netmask 255.255.255.0
gateway 192.168.2.254
auto eth0:1

Далее по списку:
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.1.1 --dport 80 -j SNAT --to-source 213.180.204.22
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.2.1 --dport 80 -j SNAT --to-source 213.180.193.1
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
iptables -t nat -A PREROUTING -i venet0:1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.1:80
iptables -A FORWARD -d 127.0.0.4 -i eth0:0 -j ACCEPT
iptables -A FORWARD -d 127.0.0.6 -i eth0:1 -j ACCEPT
chroot#1 nginx listen 127.0.1.1:80
chroot#2 nginx listen 127.0.2.1:80

И все мои проблемы сразу исчезнут?

xakepx
() автор топика
Ответ на: комментарий от vel

Если так -
modprobe dummy0
ip l set dev dummy0 name eth0:0
Спасибо и о результатах отпишусь. И думаю что поднять дум это не единственные мои грабли). Меня просто волновало в ту-ли сторону я иду

xakepx
() автор топика
Ответ на: комментарий от xakepx

и ещё под тупо-роутингом я обычно понимаю как route add -net gw ip, что-то в этом роде. Если же у Вас готовый рецепт можете поделиться, я в маршрутах честно сильно пока плаваю

xakepx
() автор топика
Ответ на: комментарий от xakepx

да, только про route не нужно использовать. «ip ro» наше все!

На промежуточных маршрутизаторах:

ip ro add <ext_ip> via <gw>

на машинке где этот адрес на dummy присвоен маршрут по-умолчанию нужно будет устанавливать через

ip ro add default via <local_net_gw> scope link src <EXT_IP>
если нужно делать исходящие коннекты с внешнего адреса.

vel ★★★★★
()
Ответ на: комментарий от vel

а если честно чем Вам нат и файрвалл неугодил?) Хотя по-правде люблю красивые решения - Ваше одно из таких, но надо как-то настроить таблицу маршрутизации. Боюсь огрести кучу проблем, но я готов)

xakepx
() автор топика
Ответ на: комментарий от xakepx

Настройку файрвола все равно никто не отменял.

Если нужен честный IP с кучей сервисов плохо работающих через нат, то пробросить роутингом проще. А для доступа к веб-серверу - dnat конечно проще.

vel ★★★★★
()
Ответ на: комментарий от xakepx

Не могу сказать, исчезнут ли проблемы, так как вобще не понял задание.

домены должны быть разделены по разным интерфейсам и чрутам.

Chroot понятно, интерфейсы не понятно, у вас там eth0 (или venet0), lo и всё. Есть два «белых» ip-адреса. Откуда взялись адреса 127.x.x.x? Почему нельзя слушать «белые» адреса в чруте, а нужно что-то изобретать с NAT-ом?

По поводу марсианских пакетов пишу ещё раз. Как только в системе возникает пакет «127.x.x.x» <-> «что угодно, кроме 127.x.x.x» он уничтожается, потому, если ″nginx listen 127.0.1.1″, то к нему можно подключится только с localhost.

На интерфейс дополнительные ip адреса назначаются командой ″ip addr add ... dev ...″, и алиасы не создаются. Если вам ″dummy″ не нужен, то вешайте адреса на ″lo″, ЕМНИП, описать такое в /etc/network/interfaces нельзя, прописывайте там вызов скрипта на поднятие ″lo″ интерфейса.

Ещё замечу, что алиасы это фикция, их не существет нигде, кроме вывода ifconfig, для iptables ″-i venet0:0″ и ″-i venet0:1″ едины, поэтому я не могу понять замысел ваших правил.

mky ★★★★★
()
Ответ на: комментарий от mky

если ″nginx listen 127.0.1.1″, то к нему можно подключится только с localhost - вот это и требуется. Сервер-веб недолжен светиться из внешнего мира. Просто меня интересовало, те правила нат что я вымучил они пригодны для решения данной задачи, и если нет то что нужно дописать-изменить.
потому-что в таком чистом виде они неработают (сужу по вызову паркованного домена из браузера)
Пока пробую методом белого IP (ip ro) засел читать маны

xakepx
() автор топика
Ответ на: комментарий от xakepx

Так, случайно так обнаружил что ядро системы 2.6 а это значит приплыли. После апа системы на 3ядро думаю всё уже само заработает)

xakepx
() автор топика
Ответ на: комментарий от xakepx

если ″nginx listen 127.0.1.1″, то к нему можно подключится только с localhost - вот это и требуется.

Вот это вы и получили, подключится невозможно.

Сервер-веб недолжен светиться из внешнего мира.

Ходите на сервер через lynx в терминале или через squid?

те правила нат что я вымучил они пригодны для решения данной задачи

Какой задачи? Невозможности подключения?

mky ★★★★★
()
Ответ на: комментарий от expelled

#imho каждый хакер должен быть спецом по безопасности. Да, делал echo (forward)> 1 Но тут выплыла проблема со старым ядром. Сейчас снёс всю конфу на впс и пытаюсь взлететь на 3-м ядре

xakepx
() автор топика
Ответ на: комментарий от mky

Я понимаю, что может слишком мутно описал ТЗ, но я сейчас на пути просветления ядра)

xakepx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.