OpenVZ Forum


Home » International » Russian » Опять iptables внутри виртуального сервера: не работает NAT
Опять iptables внутри виртуального сервера: не работает NAT [message #15227] Mon, 23 July 2007 10:15 Go to next message
eMax is currently offline  eMax
Messages: 4
Registered: May 2007
Location: Russia
Junior Member
На физическом сервере (CentOS 4.4 x86_64) запущено несколько виртуальных, в том числе виртуальный шлюз (101), который должен пропускать весь трафик через себя на остальные сервера. У него есть 2 сетевых интерфейса: venet0 (виртуальный для связи между виртуальными серверами) с адресом из локальной сети (172.16.0.a) и физический, с реальным адресом a.b.c.98.

С этого виртуального сервера (101) нормально пингуются и локальные и внешние адреса (172.16.0.х или например ya.ru). А вот iptables работать не хочет:

# ifconfig
eth1 Link encap:Ethernet HWaddr 00:00:00:00:00:03
inet addr:a.b.c.98 Bcast:a.b.c.111 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:90082 errors:0 dropped:0 overruns:0 frame:0
TX packets:2424 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:6803187 (6.4 MiB) TX bytes:209890 (204.9 KiB)
Base address:0x3000 Memory:b8920000-b8940000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:10 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1356 (1.3 KiB) TX bytes:1356 (1.3 KiB)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.1 P-t-P:127.0.0.1 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:1395 errors:0 dropped:0 overruns:0 frame:0
TX packets:1429 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:76831 (75.0 KiB) TX bytes:438334 (428.0 KiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.0.2 P-t-P:172.16.0.2 Bcast:172.16.0.2 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
a.b.c.96 * 255.255.255.240 U 0 0 0 eth1
172.16.0.0 * 255.255.255.0 U 0 0 0 venet0
192.0.2.0 * 255.255.255.0 U 0 0 0 venet0
169.254.0.0 * 255.255.0.0 U 0 0 0 venet0
default a.b.c.97 0.0.0.0 UG 0 0 0 eth1

Для упрощения ситуации я использую только те правила iptables, которые непосредственно используются при тестировании:

# iptables -t nat -A PREROUTING -p tcp -d a.b.c.98 --dport 3389 -i eth1 -j DNAT --to-destination 172.16.0.x:3389
# iptables -t nat -A POSTROUTING -s 172.16.0.2 -o eth1 -j SNAT --to a.b.c.98

А вот что происходит дальше:

# tcpdump -vv

tcpdump: WARNING: arptype 65535 not supported by libpcap - falling back to cooked socket
tcpdump: listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
12:51:02.945767 IP (tos 0x0, ttl 114, id 50348, offset 0, flags [DF], proto 6, length: 48) 195.90.159.66.2886 > 172.16.0.x.3389: S [tcp sum ok] 319135398:319135398(0) win 64240
12:51:05.915276 IP (tos 0x0, ttl 114, id 51298, offset 0, flags [DF], proto 6, length: 48) 195.90.159.66.2886 > 172.16.0.x.3389: S [tcp sum ok] 319135398:319135398(0) win 64240
12:51:11.951111 IP (tos 0x0, ttl 114, id 53196, offset 0, flags [DF], proto 6, length: 48) 195.90.159.66.2886 > 172.16.0.x.3389: S [tcp sum ok] 319135398:319135398(0) win 64240

Подскажите куда копать????
Re: Опять iptables внутри виртуального сервера: не работает [message #15259 is a reply to message #15227] Wed, 25 July 2007 07:49 Go to previous messageGo to next message
dev is currently offline  dev
Messages: 1693
Registered: September 2005
Location: Moscow
Senior Member

1. во-первых два venet вы немогли сделать. venet0:0 это просто алиас на интерфейсе с IP адресом.
Во-вторых, venet0 так устроен, что он сам роутит IP пакеты в нужные VE. Т.е. есть некоторая сложность в той конфигурации что вы хотите.
Я правильно понимаю, вы хотите, чтобы все VE ходили в инет через специальную VE в которой будете делать NAT? а чего бы NAT сразу не сделать на хосте? К чему эти усложнения?


http://static.openvz.org/userbars/openvz-developer.png
Re: Опять iptables внутри виртуального сервера: не работает [message #15262 is a reply to message #15259] Wed, 25 July 2007 08:32 Go to previous messageGo to next message
eMax is currently offline  eMax
Messages: 4
Registered: May 2007
Location: Russia
Junior Member
"Усложнения" связаны с тем что все это крутится на кластере, и при миграции сервера на другую ноду возникнут проблемы с NAT'ом на ней.
Re: Опять iptables внутри виртуального сервера: не работает [message #15344 is a reply to message #15262] Fri, 27 July 2007 10:04 Go to previous message
khorenko is currently offline  khorenko
Messages: 533
Registered: January 2006
Location: Moscow, Russia
Senior Member
Может, использование veth вместо venet на этом виртуальном сервере поможет?
P.S. но в этом случае при миграции снова нужны будут дополнительные перенастройки.


If your problem is solved - please, report it!
It's even more important than reporting the problem itself...
Previous Topic: venet
Next Topic: 2.6.18-8.1.4.el5.028stab035.1 x86_64 проблемы kswapd0/io
Goto Forum:
  


Current Time: Mon Nov 04 08:16:52 GMT 2024

Total time taken to generate the page: 0.03537 seconds