Jump to content
Калькуляторы

NAT два диапазона адресов Шквал ARP запросов

ОС: 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 by _INF_

Share this post


Link to post
Share on other sites

покажите как сделан NAT уверен что в интерфейс.

Edited by pliskinsad

Share this post


Link to post
Share on other sites

-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

Share this post


Link to post
Share on other sites

ip addr ls dev eth2

ip addr ls dev eth1

?

 

Share this post


Link to post
Share on other sites

Попробуйте оставить на интерфейсе один адрес, и занатить всю свою подсеть на него.

Edited by pliskinsad

Share this post


Link to post
Share on other sites
А если поробывать сделать 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 .

 

Есть люди которые используют подобную схему ?

Share this post


Link to post
Share on other sites
ip addr ls dev eth2

ip 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 соответственно.

 

Share this post


Link to post
Share on other sites

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

 

помогло.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this