_INF_ Posted December 1, 2009 Posted December 1, 2009 (edited) ОС: CentOS 5 Имеется 3 сетевых интерфейса. 1 - Локальная сеть 172.16.0.0/16 интерфейс eth0 2. Провайдер 1 выдал сеть 10.0.0.0/24 интерфейс eth1 3. Провайдер 2 выдал сеть 10.0.1.0/24 интерфейс eth2 Хочется часть сети 172.16.0.0/17 NAT-ить через провайдера 1, а вторую часть сети 172.16.128.0/17 через провайдера 2 что сделал ip rule add from 172.16.0.0/17 to 0/0 table 100 pref 100 ip rule add from 172.16.128.0/17 to 0/0 table 200 pref 200 ip route add default dev eth1 table 100 ip route add default dev eth2 table 200 ip route flush cache Все работает (пакеты идут в оба канала, NAT-ятся своими адресами), НО на обоих интерфейсах наблюдаю (tcpdump -i eth1 -nn arp) шквал ARP запрососв от моего роутера к шлюзам провайдеров, этот шквал ARP валит оборудование обоих провайдеров. arp реквесты идут от имени моего роутера для всех адресов в инете. Что я настроил не так ? Почему роутер пытается узнавать ARP адреса всего инета вместо того, чтобы просто пихать пакеты в нужный интерфейс объявленный как default gateway для нужной сети ? Edited December 1, 2009 by _INF_ Вставить ник Quote
pliskinsad Posted December 1, 2009 Posted December 1, 2009 (edited) покажите как сделан NAT уверен что в интерфейс. Edited December 1, 2009 by pliskinsad Вставить ник Quote
_INF_ Posted December 1, 2009 Author Posted December 1, 2009 -A POSTROUTING -o eth1 -s 172.16.0.0/17 -j SNAT --to 10.0.0.1-254 -A POSTROUTING -o eth2 -s 172.16.128.0/17 -j SNAT --to 10.0.1.1-254 Вставить ник Quote
a_andry Posted December 1, 2009 Posted December 1, 2009 ip addr ls dev eth2 ip addr ls dev eth1 ? Вставить ник Quote
pliskinsad Posted December 1, 2009 Posted December 1, 2009 (edited) Попробуйте оставить на интерфейсе один адрес, и занатить всю свою подсеть на него. Edited December 1, 2009 by pliskinsad Вставить ник Quote
_INF_ Posted December 1, 2009 Author Posted December 1, 2009 А если поробывать сделать NAT средствами ip route? Как бы логика подсказывает, что способ организации NAT здесь не при чем. 1. объявляем 10.0.0.1 default gw в таблице main, затем создаем правила на вторую половину диапазона 172.16.128.0/17 ip rule add from 172.16.128.0/17 to 0/0 table 200 pref 200 ip route add default dev eth2 table 200 и шквал ARP идет только в провайдера 2. я предполагаю, что ARP вызван использованием source routing . Есть люди которые используют подобную схему ? Вставить ник Quote
_INF_ Posted December 1, 2009 Author Posted December 1, 2009 ip addr ls dev eth2ip addr ls dev eth1 ? eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 10000 link/ether 00:1b:21:3e:ae:28 brd ff:ff:ff:ff:ff:ff inet 10.10.10.0/30 brd 10.10.10.3 scope global eth1 eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 10000 link/ether 00:1b:21:3e:ae:28 brd ff:ff:ff:ff:ff:ff inet 10.10.20.0/30 brd 10.10.20.3 scope global eth2 Подсети 10.10.10.0/30 и 10.10.20.0/30 выдали провайдеры и сказали что через них они роутят 10.0.0.0/24 и 10.0.1.0/24 соответственно. Вставить ник Quote
_INF_ Posted December 1, 2009 Author Posted December 1, 2009 ip route add via 10.10.10.2 dev eth1 table 100 ip route add via 10.10.20.2 dev eth2 table 200 где 10.10.10.2 и 10.10.20.2 шлюзы провайдеров вместо ip route add default dev eth1 table 100 ip route add default dev eth2 table 200 помогло. Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.