Здравствуйте. Имею проблему с 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