iptables для внутренней и внешней сети

asfadel
На сайте с 29.12.2009
Offline
40
873

Настроил сеть приватную для KVM-виртуалок, поставил в эту сеть nginx-прокси, 10.10.11.99,

который расхаживает по машинам, разрешая доменные имена в реальные порты виртуальных

машин 10.10.11.2-98

Все это выглядит следующим образом:

auto lo

iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address 175.19.59.209
gateway 175.19.59.193
netmask 255.255.255.224
post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
## for single IPs
#auto vmbr0
#iface vmbr0 inet static
# address 10.10.11.1
# netmask 255.255.0.0
# bridge_ports none
# bridge_stp off
# bridge_fd 0
# post-up ip route add 10.10.11.1/24 dev vmbr0 #

## for a subnet
auto vmbr1
iface vmbr1 inet static
address 10.10.11.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.11.0/24' -o vmbr1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.11.0/24' -o vmbr1 -j MASQUERADE

Сейчас работает сеть, но, как видно по настройке, из этой сети машина не может взять что-либо из Интернета

(wget/curl/yum/apg-get и т.д. - пока)

Если раскомментить vmbr0 и закомментировать vmbr1 - замечательно ходим в Интернет, но всякий запрос

внутри сети к адресам 10.10.Х.Х - улетает наружу в Интернет и ни о каком внутрисетевом взаимодействии

машин говорить не приходится.

На сколько понимаю, нужно волшебное правило роутинга для 10.10.Х.Х адресов, которое не выпустит пакеты

дальше шлюза 10.10.11.1 (если использовать первый vmbr0) или обратное правило, что бы все, что не 10.10.Х.Х —

проследовало с масками на eth0 (в конфигурации c vmbr1).

Не знаю, как это написать. Подскажите, пожалуйста.

Уже развлекал вас своим невежеством, настраивая Proxmox. Очень помогли! Спасибо @madoff @Pilat.

---------- Post added 10-09-2012 at 06:35 ----------

Если я вот так вот сделаю:

iptables -t nat -A POSTROUTING ! -d '10.10.11.0/24' -j SNAT --to-source '175.219.59.209'

что в этом плохого и как это делают большие дяди?

Andreyka
На сайте с 19.02.2005
Offline
822
#1

Поднимите на ноде алиас с приватным адресом из подсети и сделайте с него пинг

Если ответ придет - проблема в виртуалке. Если нет - проблема в ноде.

Не стоит плодить сущности без необходимости
asfadel
На сайте с 29.12.2009
Offline
40
#2

У меня на 80-м порту ноды еще висит proxy во внутреннюю сеть.

post-up iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.11.2:80

И по любому wget я получаю какой-то мусорный файл от панели управления (Plesk) с машины, с которой пытаюсь "wget что угодно".

Сейчас пойду почитаю, что такое алиасы и как их поднять, и не зарубит ли меня Hetzner с такой мудрой схемою, но скажу сразу, что я слушал устройства tcpdump-ом в обеих схемах. В первой - все ломятся наружу, если ищу соседнюю машину, а во второй - не доходит до eth0.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий