get_dnat_port() ... echo "$tmp" | sed -e "s/.*dpt:\([0-9][0-9][0-9][0-9]\)\ .*/\1/g" Это приводит к следующим забавным эффектам (101 = openntpd, 102 = caching-nameserver): # iptables -t nat -nL PREROUTING Chain PREROUTING (policy ACCEPT) target prot opt source destination DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 # alterator-cmdline /ovz-ve/101/ports action list (("/ovz-ve/101/ports/httpd2" name "httpd2" lport "8080" rport "DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 " forward #t) ("/ovz-ve/101/ports/sshd" name "sshd" lport "22" rport "DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 " forward #t)) # alterator-cmdline /ovz-ve/102/ports action list (("/ovz-ve/102/ports/httpd2" name "httpd2" lport "8080" rport "DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 " forward #t) ("/ovz-ve/102/ports/named" name "named" lport "53" rport "DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 " forward #t) ("/ovz-ve/102/ports/sshd" name "sshd" lport "22" rport "DNAT tcp -- 0.0.0.0/0 10.0.0.50 tcp dpt:65080 to:192.0.2.101:8080 " forward #t))
Забавный артефакт номер два (я заменил \d\d\d\d на \d+): # alterator-cmdline /ovz-ve/101/ports action list (("/ovz-ve/101/ports/httpd2" name "httpd2" lport "8080" rport "65080" forward #t) ("/ovz-ve/101/ports/sshd" name "sshd" lport "22" rport "65080" forward #t)) Причина: # ip a sh dev eth0 | grep inet inet 10.0.0.50/8 brd 10.255.255.255 scope global eth0 inet 194.x.x.x/32 scope global eth0
на мантейнера
(In reply to comment #1) > Забавный артефакт номер два (я заменил \d\d\d\d на \d+): > > # alterator-cmdline /ovz-ve/101/ports action list > (("/ovz-ve/101/ports/httpd2" name "httpd2" lport "8080" rport "65080" forward > #t) ("/ovz-ve/101/ports/sshd" name "sshd" lport "22" rport "65080" forward #t)) > > Причина: > > # ip a sh dev eth0 | grep inet > inet 10.0.0.50/8 brd 10.255.255.255 scope global eth0 > inet 194.x.x.x/32 scope global eth0 т.е. там alias'ы висят на одном интерфейсе? Придется тогда ручку приделать для выбора ip, на который делать SNAT.
Есть мнение, что в этом модуле подобный функционал просто лишний. 1. жёстко привязан к 192.0.2.0/24 2. поддерживает только TCP сервисы (по опыту использования ntpd и named) 3. пересекается с (будущим?) alterator-firewall и другими средствами настройки iptables 4. не удаляет запись при изменении внешнего порта (unconfirmed) Если это чинить и расширять - будет очередной монстр, проще написать отдельный модуль или использовать уже существующие. Максимум что тут можно оставить - проброс ssh и httpd-alterator наружу при условии использования конфигурации по умолчанию.
Спасибо Стасу, httpd-alterator пробрасывать уже не нужно.
Частично данный баг исправлен в 0.3-alt2, как он теперь воспроизводится?
ping
В 0.4-alt1 многое изменилось, просьба перепроверить.
Между прочим, вычислить udp-порт совсем непросто. Сейчас в ntp и bind-контейнерах udp-форвардинг не работает.
I'm going to close remaining bugs on alterator-ovz which is no more in Sisyphus; please look whether this one might pop up in alterator-mkve (or whatever related) too.
OK
done