AlexBorcat Posted December 2, 2010 Posted December 2, 2010 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? Вставить ник Quote
GFORGX Posted December 2, 2010 Posted December 2, 2010 Сделать два таких правила, для каждого из аплинковых интерфейсов, -o просто указывает выходной интерфейс, а он будет зависеть от текущей таблицы маршрутов. Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 мысль интересная, но ведь надо поднять z.z.z.z на каком-либо интерфейсе... Вставить ник Quote
GFORGX Posted December 2, 2010 Posted December 2, 2010 Ну а сейчас ведь на них какие-то адреса уже есть? -o - это просто критерий мэтчинга пакета, не аргумент цели SNAT. Вставить ник Quote
Ilya Evseev Posted December 2, 2010 Posted December 2, 2010 надо поднять z.z.z.z на каком-либо интерфейсе...Если это адрес из анонсируемой AS, то необязательно.Всё равно аплинк пришлёт ответ на BGP-бордер. Вставить ник Quote
GFORGX Posted December 2, 2010 Posted December 2, 2010 надо поднять z.z.z.z на каком-либо интерфейсе...Если это адрес из анонсируемой AS, то необязательно.Всё равно аплинк пришлёт ответ на BGP-бордер. Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас. Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 Ну а сейчас ведь на них какие-то адреса уже есть?адреса есть, но адреса прова из сетки 30 для связи с ним...вопрос больше на каком интерфейсе поднимать адреса своей автономки. -o - это просто критерий мэтчинга пакета, не аргумент цели SNAT.A POSTROUTING -s x.x.x.x/y ! -o local_iface -j SNAT --to-source z.z.z.z Вставить ник Quote
Ilya Evseev Posted December 2, 2010 Posted December 2, 2010 Ну а сейчас ведь на них какие-то адреса уже есть?Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками. надо поднять z.z.z.z на каком-либо интерфейсе...Если это адрес из анонсируемой AS, то необязательно.Всё равно аплинк пришлёт ответ на BGP-бордер. Насколько мне кажется, Linux в таком случае просто не будет знать, куда его роутить дальше. Можно просто поднять алиас. Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответахсначала пройдёт через обратный NAT в postrouting'e, превратится в приватный, и уже после этого попадёт в маршрутизацию. Вставить ник Quote
GFORGX Posted December 2, 2010 Posted December 2, 2010 Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответахсначала пройдёт через обратный NAT в postrouting'e, превратится в приватный, и уже после этого попадёт в маршрутизацию. Таки да, логично. Не задумывался, ибо у нас border и NAT - два разных роутера. Почему-то думал, что в нелокальные адреса Linux NAT-ить не захочет, проверил - таки да, работает (: Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 Скорее всего, у товарища на них адреса не из AS, а из двухточечных сетей взаимодействия, выданных аплинками.Именно! Linux и не будет его маршрутизировать, т.к. IP-адрес назначения в ответахсначала пройдёт через обратный NAT в postrouting'e, превратится в приватный, и уже после этого попадёт в маршрутизацию. Так понимаю - мне эти адреса вообще поднимать не надо? Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 однакож... работает! Вставить ник Quote
Ilya Evseev Posted December 2, 2010 Posted December 2, 2010 Так понимаю - мне эти адреса вообще поднимать не надо?Для того, чтобы работал SNAT, это не требуется.Для чего-то другого - может быть. Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс, то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели. Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 Например, если повесить публичник с маской /32 алиасом на внутренний интерфейс,то можно будет трассировать бордер из Интернета, указывая данный IP в качестве цели. В этом и тупил - поднимал IP на ifb|dummy|lo и NAT не работал... но до IP извне доступ был. Вставить ник Quote
Diatel Posted December 2, 2010 Posted December 2, 2010 (edited) У меня такая конфигурация 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 December 2, 2010 by Diatel Вставить ник Quote
Diatel Posted December 2, 2010 Posted December 2, 2010 А еще нужно не забыть маршрутик с border на фейковые адреса через BRAS добавить: ip route add 10.0.0.0/8 via x.x.x.254 dev eth0.100 Вставить ник Quote
AlexBorcat Posted December 2, 2010 Author Posted December 2, 2010 речь шла о бордере и брасе на одной машине. с двумя даже и вопросов не возникает. Вставить ник Quote
Diatel Posted December 2, 2010 Posted December 2, 2010 Если убрать брас, то мало что изменится: eth0.10--\ eth0.20------>BGP+NAT -eth0.xxxx<--->Много-серых-IP eth0.30--/ Для нормальной работы NAT на любом из локальных интерфейсоф напишите Ваши белые IP в качестве alias'ов , можно оставить на каком-то из eth, можно попробовать на lo. И маршрутиков никаких дополнительных не надо, если конечно с софтом BRAS всё правильно и он сам при поднятии итерфейса добавляет на него маршрут. Вставить ник Quote
[-Alt-] Posted December 3, 2010 Posted December 3, 2010 Да не надо никаких алиасов прописывать, у меня замечательно работает НАТ, причем натится в адреса которых в системе нет, и находятся они за 2 хопа, т.е. к connected тоже не относятся. Главное, чтобы трафик на адреса ната приходил на эту машину. Вставить ник 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.