Войти

Показать полную графическую версию : [OpenVz] Проброс порта.


falcon92
23-04-2011, 01:46
Доброго времени суток.
Не выходит зафорвардить порт..

Столкнулся с проблемой.
Стоит Ubuntu Lucid (10.04.2 LTS)
Стоит 2.6.32.28-openvz
Стоит Openvz.
Имею Хардварную Ноду с внешним ip адресом (допустим $ExtIp).
Имею виртуальную машину, висящую по адресу 192.168.0.101
Имею 1 Хардварный интерфейс eth0 с $ExtIp
Имею интерфес venet0 (как понимаю интерфейс для openvz)

Виртульную машину выпускаю в интернет через на HardwNode
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Пинги на виртуалке проходят.

На виртуалке стоит apache на 80 порту. С Хардварной Ноды по адресу 192.168.0.101:80 заходит в апач нормально.
Не могу пробросить порт так, чтобы заходя по $ExtIp:80, заходило на 192.168.0.101:80
То есть нужно поднять несколько виртуалок, и пробросить им порты, допустим 3 виртуалки, 3 вебсервера, порты 80, 81, 82.
Заходим по $ExtIP:80 - попадаем на http 1ой виртуалки, Заходим по $ExtIP:81 - попадаем на http 2ой виртуалки, ...
Хоть убейте.. часа 3 прыгаю с бубном.

Пробовал так -
# iptables -t nat -A PREROUTING -p tcp -d $ExtIp --dport 80 -i eth0 -j DNAT --to-destination 192.168.0.101:80
# iptables -t nat -A POSTROUTING -s 192.168.0.101 -o eth0 -j SNAT --to $ExtIp

В чем проблема? Я туго шарю в айпитэйблах.. Но уже столько вариантов пропробовал.. Кто шарит - помогите.. Курсовик встал :/
Надеюсь более-менее понятно изложил свою мысль.


UPDATE1:
Сейчас заюзал скрипт http://wiki.openvz.org/Setting_up_an_iptables_firewall
Запускаю.
# service firewall start

root@sysadmin:~# service firewall start
Starting firewall...
Firewall: Purging and allowing all traffic...success
Firewall: Setting default policies to DROP...success
Firewall: Allowing access to HN
port 53...success
port 80...success
port 443...success
port 8080...success
DMZ 12.34.56.78...success
DMZ $ExtIp...success
DMZ 127.0.0.1...success
DMZ localhost...success


Делаю вывод
# service firewall status
Выводит

root@sysadmin:~# service firewall status
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT all -- $ExtIp 0.0.0.0/0
ACCEPT all -- 12.34.56.78 0.0.0.0/0
ACCEPT udp -- 192.168.0.0/24 $ExtIp udp dpt:8080
ACCEPT tcp -- 192.168.0.0/24 $ExtIp tcp dpt:8080
ACCEPT udp -- 192.168.0.0/24 $ExtIp udp dpt:443
ACCEPT tcp -- 192.168.0.0/24 $ExtIp tcp dpt:443
ACCEPT udp -- 192.168.0.0/24 $ExtIp udp dpt:80
ACCEPT tcp -- 192.168.0.0/24 $ExtIp tcp dpt:80
ACCEPT udp -- 192.168.0.0/24 $ExtIp udp dpt:53
ACCEPT tcp -- 192.168.0.0/24 $ExtIp tcp dpt:53
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT all -- 127.0.0.1 0.0.0.0/0
ACCEPT all -- $ExtIp 0.0.0.0/0
ACCEPT all -- 12.34.56.78 0.0.0.0/0
ACCEPT all -- 192.168.0.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target prot opt source destination


Но по 127.0.0.1:80; $ExtIp:80 - Ошибка ;/
Всё пахать по идее должно ..
localhost - вводил для теста. Без него тоже не валит..
Запарился.

Alan85
23-04-2011, 22:35
Форвандинг включен ?
смотри в /etc/sysctl.conf строку net.ipv4.ip_forward = 1

falcon92
24-04-2011, 08:20
Да. Включен на ноде.
Т.к. без нее не пускает интернет на VM
Куда еще копнуть?
Думал разместиться на форуме опенвз. Накатал длиннющий пост.. А там с премодерацией.. Уже сутки прошли - топика там не вижу.. :(

Вот sysctl мой.

#
# /etc/sysctl.conf - Configuration file for setting system variables
# See /etc/sysctl.d/ for additional system variables.
# See sysctl.conf (5) for information.
#

#kernel.domainname = example.com

# Uncomment the following to stop low-level messages on console
#kernel.printk = 4 4 1 7

##############################################################3
# Functions previously found in netbase
#

# Uncomment the next two lines to enable Spoof protection (reverse-path filter)
# Turn on Source Address Verification in all interfaces to
# prevent some spoofing attacks
#net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1

# Uncomment the next line to enable TCP/IP SYN cookies
#net.ipv4.tcp_syncookies=1

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

# Uncomment the next line to enable packet forwarding for IPv6
#net.ipv6.conf.all.forwarding=1


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through
# redirection. Some network environments, however, require that these
# settings are disabled so review and enable them as needed.
#
# Ignore ICMP broadcasts
#net.ipv4.icmp_echo_ignore_broadcasts = 1
#
# Ignore bogus ICMP errors
#net.ipv4.icmp_ignore_bogus_error_responses = 1
#
# Do not accept ICMP redirects (prevent MITM attacks)
#net.ipv4.conf.all.accept_redirects = 0
#net.ipv6.conf.all.accept_redirects = 0
# _or_
# Accept ICMP redirects only for gateways listed in our default
# gateway list (enabled by default)
# net.ipv4.conf.all.secure_redirects = 1
#
# Do not send ICMP redirects (we are not a router)
net.ipv4.conf.all.send_redirects = 0
#
# Do not accept IP source route packets (we are not a router)
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv6.conf.all.accept_source_route = 0
#
# Log Martian Packets
#net.ipv4.conf.all.log_martians = 1

#####################################
### Hetzner Online AG installimage
# sysctl config

net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.forwarding=1

# Enables source route verification
net.ipv4.conf.all.rp_filter = 1

# Enables the magic-sysrq key
kernel.sysrq = 1

# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0

# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
########################################

vm.swappiness = 20
vm.dirty_writeback_centisecs = 15000
########################################

Alan85
24-04-2011, 16:27
нужен вывод iptables на хостовой и виртуальной машинке. ну и уточнить параметры сетевые - выводы route и ifconfig. В первом посту есть адреса 192.168.0.1 и 192.168.0.101 - какой куда ?

falcon92
24-04-2011, 18:02
Так опечатка. VM на 101 висит.
Вечером будет вывод.

Alan85
24-04-2011, 18:56
http://www.opennet.ru/base/net/nat_redirect.txt.html
если по сути - локальный адрес должен быть destination в правилах цепочки форварда, т.е. надо
iptables -A FORWARD -d 192.168.0.101 -j ACCEPT
ну если есть желание то можно и порт еще добавить




© OSzone.net 2001-2012