[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

nat не натит сеть, которая недоступна напрямую



Здравствуйте.
Имею проблему с nat - правило есть, преобразования не происходит.
Свежеустановленный debian wheezy.
~# uname -a
Linux klon-hn0 3.2.0-4-amd64 #1 SMP Debian 3.2.41-2+deb7u2 x86_64 GNU/Linux
~# iptables --version
iptables v1.4.14


Есть железная машина [HN], на которой запускаются виртуалки.
~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br1
state UP qlen 1000
    link/ether 88:51:fb:28:fa:2c brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
qlen 1000
    link/ether 88:51:fb:28:fa:2d brd ff:ff:ff:ff:ff:ff
    inet 172.16.2.44/24 brd 172.16.2.255 scope global eth1
    inet6 2001:67c:2158:a039:8a51:fbff:fe28:fa2d/64 scope global dynamic
       valid_lft 86248sec preferred_lft 14248sec
    inet6 fe80::8a51:fbff:fe28:fa2d/64 scope link
       valid_lft forever preferred_lft forever
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether fe:54:00:00:d2:81 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/28 brd 172.17.0.15 scope global br0
    inet6 fe80::6c53:b6ff:fef6:a74c/64 scope link
       valid_lft forever preferred_lft forever
5: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 88:51:fb:28:fa:2c brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.17/28 brd 172.17.0.31 scope global br1
    inet6 fe80::8a51:fbff:fe28:fa2c/64 scope link
       valid_lft forever preferred_lft forever
6: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br0 state UNKNOWN qlen 500
    link/ether fe:54:00:00:d2:81 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe00:d281/64 scope link
       valid_lft forever preferred_lft forever
7: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
master br1 state UNKNOWN qlen 500
    link/ether fe:54:00:12:84:dc brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe12:84dc/64 scope link
       valid_lft forever preferred_lft forever

Вот так выглядят бриджи:
~# brctl show
bridge name    bridge id        STP enabled    interfaces
br0        8000.fe540000d281    no        vnet0
br1        8000.8851fb28fa2c    no        eth0
                            vnet1
Таблица маршрутизации:
~# ip r
default via 172.16.2.1 dev eth1
172.16.2.0/24 dev eth1  proto kernel  scope link  src 172.16.2.44
172.17.0.0/28 dev br0  proto kernel  scope link  src 172.17.0.1
172.17.0.16/28 dev br1  proto kernel  scope link  src 172.17.0.17
172.17.1.0/24 via 172.17.0.2 dev br0

Собсно правило NAT:

~# iptables-save -t nat
# Generated by iptables-save v1.4.14 on Tue May 28 20:42:38 2013
*nat
:PREROUTING ACCEPT [1066:99540]
:INPUT ACCEPT [5:339]
:OUTPUT ACCEPT [1:80]
:POSTROUTING ACCEPT [864:77910]
-A POSTROUTING ! -d 172.16.2.44/32 -o eth1 -j SNAT --to-source 172.16.2.44
COMMIT
# Completed on Tue May 28 20:42:38 2013

Т.е. схематично сеть выглядит так:
[(eth1:172.16.2.44)-HN-(br0:172.17.0.1)]~~~[(eth0:172.17.0.2)-GW-(eth1:172.17.1.1)]===[(eth0:172.17.1.2)-USER]

Трафик с GW, проходящий через HN - натится
а вот трафик от USER (обычная машина, включённая в eth0 на HN) - не натится
т.е. tcpdump -pni eth1 на HN показывает трафик с IP-адресом от USER,
хотя должен был понатить

GW является kvm-вируалкой, которая физически живёт на машине HN
её eth0 сбриждован с br0, который в реальные eth не смотрит
eth1 от GW сбриджован с br1, который физически уходит на eth0 HN
Пересечений по интерфейсам (физическим и логическим) я не наблюдаю

Вот адреса на GW:
~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
    link/ether 52:54:00:00:d2:81 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/28 brd 172.17.0.15 scope global eth0
    inet6 fe80::5054:ff:fe00:d281/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
state UP qlen 1000
    link/ether 52:54:00:12:84:dc brd ff:ff:ff:ff:ff:ff
    inet 172.17.1.1/24 brd 172.17.1.255 scope global eth1
    inet 192.168.15.205/24 scope global eth1
    inet6 fe80::5054:ff:fe12:84dc/64 scope link
       valid_lft forever preferred_lft forever

Трафик самой GW уходящий в интернет через HN нормально натится.
Трафик из сети 172.17.1.0/24 (которая напрямую HN не видит) до
172.17.0.1 (адрес HN) ходит, но дальше - не натится.
Имею довольно большое количество установок где натить надо и сети,
доступные напрямую, и сети, которые так же зароучены через другие машины
- и там всё работает.

Физически на машине HN на eth0 висит локалка и iLO от самой машины.
Если на eth0 (т.е. на br1) повесить IP из 172.17.1.0/24 и iLO поставить
адрес из той же сети, то трафик не пойдёт через машину GW.
На GW планируется поставить прозрачную проксю для офиса и возможно
трафикосчиталку. На железную машину, которая занимается запуском
виртуалок, проксю ставить не хочу. Ставить непонятную трафикосчиталку -
желания ещё меньше.

Я понимаю что правильно было бы завернуть iLO в отдельный vlan, натилку
вынести на пограничную железку, но бюджет сильно ограничен.
Есть идеи что это и почему оно работает не так, как предполагается?
Заранее спасибо.

-- 
Best regards,
Mikhail
-
WWW: http://www.antmix.ru/
XMPP: antmix@stopicq.ru

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: