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

bgp+nat+2 uplink

bgp+nat+2 uplink

 

Уже голову сломал:

Есть сервер (gentoo) с 3 сетевыми:

eth0 - uplink1 основной

eth1 - uplink2 резерв и перегруз 1 линка

eth3 - local

Поднят BGP и маршруты получаются.

 

Мысль тупит на моменте: есть нат и обычное правило:

-A POSTROUTING -s x.x.x.x/y -o iface -j SNAT --to-source z.z.z.z

но т.к. интерфейсов 2 или более - что указывать в качестве iface?

Share this post


Link to post
Share on other sites

Сделать два таких правила, для каждого из аплинковых интерфейсов, -o просто указывает выходной интерфейс, а он будет зависеть от текущей таблицы маршрутов.

Share this post


Link to post
Share on other sites

мысль интересная, но ведь надо поднять z.z.z.z на каком-либо интерфейсе...

Share this post


Link to post
Share on other sites

Ну а сейчас ведь на них какие-то адреса уже есть?

 

-o - это просто критерий мэтчинга пакета, не аргумент цели SNAT.

Share this post


Link to post
Share on other sites
надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

Share this post


Link to post
Share on other sites
надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас.

Share this post


Link to post
Share on other sites
Ну а сейчас ведь на них какие-то адреса уже есть?
адреса есть, но адреса прова из сетки 30 для связи с ним...

вопрос больше на каком интерфейсе поднимать адреса своей автономки.

 

-o - это просто критерий мэтчинга пакета, не аргумент цели SNAT.
A POSTROUTING -s x.x.x.x/y ! -o local_iface -j SNAT --to-source z.z.z.z

 

Share this post


Link to post
Share on other sites
Ну а сейчас ведь на них какие-то адреса уже есть?
Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками.

 

надо поднять z.z.z.z на каком-либо интерфейсе...
Если это адрес из анонсируемой AS, то необязательно.

Всё равно аплинк пришлёт ответ на BGP-бордер.

Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас.

Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

Share this post


Link to post
Share on other sites
Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

Таки да, логично. Не задумывался, ибо у нас border и NAT - два разных роутера. Почему-то думал, что в нелокальные адреса Linux NAT-ить не захочет, проверил - таки да, работает (:

Share this post


Link to post
Share on other sites
Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками.
Именно!

 

Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответах

сначала пройдёт через обратный NAT в postrouting'e, превратится в приватный,

и уже после этого попадёт в маршрутизацию.

Так понимаю - мне эти адреса вообще поднимать не надо?

Share this post


Link to post
Share on other sites
Так понимаю - мне эти адреса вообще поднимать не надо?
Для того, чтобы работал SNAT, это не требуется.

Для чего-то другого - может быть.

Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс,

то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели.

Share this post


Link to post
Share on other sites
Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс,

то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели.

В этом и тупил - поднимал IP на ifb|dummy|lo и NAT не работал... но до IP извне доступ был.

Share this post


Link to post
Share on other sites

У меня такая конфигурация uplink'ов и пирингов:

eth0.10--\ 
eth0.20------>BGP+NAT -eth0.100<------>FastEth 0/0.100 - BRAS<--->Много-серых-IP
eth0.30--/

 

eth0.10 uplink, адрес на интерфейсе 1.1.1.1/29

eth0.20 uplink, адрес на интерфейсе 2.2.2.2/29

eth0.30 пиринг, адрес на интерфейсе 3.3.3.3/24

eth0.100 VLAN между Border и BRAS, адрес на интерфейсе x.x.x.1/24

FastEth 0/0.100 VLAN между Border и BRAS, адрес на интерфейсе x.x.x.254/24

x.x.x.x/24, y.y.y.y/24, z.z.z.z/24 сети белых IP из моей AS.

 

Каждому uplink'у и в пиринг анонсирую свой набор подсетей белых IP, поэтому NAT зависит от выходного интерфейса.

В iptables это разруливается так, как писали выше:

$IPT -t nat -A POSTROUTING -o eth0.10 -s 10.0.0.0/24 -j SNAT --to-source x.x.x.1
$IPT -t nat -A POSTROUTING -o eth0.20 -s 10.0.0.0/24 -j SNAT --to-source y.y.y.1
$IPT -t nat -A POSTROUTING -o eth0.30 -s 10.0.0.0/24 -j SNAT --to-source z.z.z.1

 

Чтобы NAT на linux нормально работал нужно, чтобы в качестве адресов для SNAT, использовались адреса из непосредственно подключенных сетей ( C - connected - в терминологии cisco ).

Я выполнил это условие, написав все мои белые подсети как alias'ы на eth0.100.

Сейчас суммарный трафик ~200 Мбит в максимуме, работает хорошо.

Edited by Diatel

Share this post


Link to post
Share on other sites

А еще нужно не забыть маршрутик с border на фейковые адреса через BRAS добавить:

ip route add 10.0.0.0/8  via  x.x.x.254  dev eth0.100

Share this post


Link to post
Share on other sites

речь шла о бордере и брасе на одной машине.

с двумя даже и вопросов не возникает.

Share this post


Link to post
Share on other sites

Если убрать брас, то мало что изменится:

eth0.10--\ 
eth0.20------>BGP+NAT -eth0.xxxx<--->Много-серых-IP
eth0.30--/

Для нормальной работы NAT на любом из локальных интерфейсоф напишите Ваши белые IP в качестве alias'ов , можно оставить на каком-то из eth, можно попробовать на lo.

И маршрутиков никаких дополнительных не надо, если конечно с софтом BRAS всё правильно и он сам при поднятии итерфейса добавляет на него маршрут.

Share this post


Link to post
Share on other sites

Да не надо никаких алиасов прописывать, у меня замечательно работает НАТ, причем натится в адреса которых в системе нет, и находятся они за 2 хопа, т.е. к connected тоже не относятся. Главное, чтобы трафик на адреса ната приходил на эту машину.

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