Помогите разобраться с роутингом, добавил второй интернет.

Здравствуйте!

Есть комп на gentoo в качестве роутера. На одну сетевую входит интернет от onlime, комп (роутер) раздает его двум компам. Решил завести свою почту, и так как onlime блокирует на вход 25 порт, взял тариф от мгтс (gpon) со статическим ip и подключил на другую сетевую.

Из сети сервер с почтой (192.168.0.80) пустил в инет через gpon.

ip route add default via 192.168.1.1 table mgts
ip rule add from 192.168.0.80 table mgts

iptables -t nat -A POSTROUTING -o ${WAN02} -s 192.168.0.80 -j MASQUERADE

Инет работает.

Но входящие соединения с сетевухи-адреса этого провайдера (gpon) не устанавливаются.

Проброс портов есть:

iptables -t nat -A PREROUTING -p tcp --dport 25 -i ${WAN02} -j DNAT --to 192.168.0.80:25

Ip роутера gpon 192.168.1.1, ip подключеной сетевой 192.168.1.10. (На роутере mgts проброс портов работает.)

Не могу понять что я забыл.

http://pastebin.com/mTq2sAkv

micbal написал(а): ...Не могу

micbal написал(а):
...Не могу понять что я забыл.

SNAT

Спасибо за подсказку, не

Спасибо за подсказку, не помогло. :(

iptables -t nat -A POSTROUTING -s 192.168.1.10/32 -o ${LAN} -j SNAT --to-source "static ip"

Не идет пинг по интерфейсу с gpon. На роутере.
ping -I eth2 ya.ru

а по интерфейсу первого инета идет. И с 192.168.0.80 идет через gpon.

Не чего не понял. :(((

дефолтный гейт то какой?

дефолтный гейт то какой? через него видимо и идет, метить пакеты пробывал? если память не подводит то метки работают только на пакетах, соединения метить безполезно - не отсеивается.

Чего там метить-то?!

Когда я говорил SNAT, то имел ввиду source based routing тоже...

micbal написал(а): Не могу

micbal написал(а):
Не могу понять что я забыл.

ip_forward==1 ?
и что показывает фильтр пакетов iptables -L -n -v ?

Спасибо все за помощь! Пока

Спасибо все за помощь!

Пока не получилось запустить. На даный момент что делаю:

export IP_ON=xx.xx.xx.xx
export IP_GP=192.168.1.10
export GATE_ON=yy.yy.yy.yy
export GATE_GP=192.168.1.1
export IF_ON=eth0
export IF_GP=eth2
export IP_DIAP_ON=yy.yy.yy.yy/23
export IP_DIAP_GP=192.168.1.0/24

ip route add ${IP_DIAP_ON} dev ${IF_ON} src ${IP_ON} table onlime
ip route add ${IP_DIAP_GP} dev ${IF_GP} src ${IP_GP} table mgts

ip route add default via ${GATE_ON} table onlime
ip route add default via ${GATE_GP} table mgts

ip route add default via ${GATE_ON}

ip rule add from ${IP_ON} table onlime
ip rule add from ${IP_GP} table mgts

ip rule add from 192.168.0.80 table mgts

Из вне сервер видится и отвечает.

ping -I eth2 ya.ru по прежнему не идет, хотя вроде путь для интерфейса понятен. :(

/

micbal написал(а):
ping -I eth2 ya.ru по прежнему не идет, хотя вроде путь для интерфейса понятен. :(

А что говорит traceroute?

:wq
--
Live free or die

Еще раз все спасибо!Спасибо

Еще раз всем спасибо!

Спасибо за идею с traceroute, весь прикол в том что traceroute идет. :)

И traceroute -i eth0 ya.ru, и traceroute -i eth2 ya.ru.

А ping -I eth2 не идет. :) совсем не чего не понял. Получается все кроме пинга работает.

Посмотри tracepath - он

Посмотри tracepath - он покажет прямой и обратный маршруты.
ВОзможно твоя проблема в том, что кривые/несимметричные маршруты, а некоторые маршрутизаторы/провайдеры этого не любят.

Tracepath показывает

Tracepath показывает корректный маршрут через провайдера прописанного дефолтом. Не нашёл возможность принудительно на интерфейс его натравить.

Правильно! Он показывает

Правильно!
Он показывает только реальный (не обязательно дефолтовый) маршрут на хост, как он определен на данный момент.

.

Цитата:
А ping -I eth2 не идет. :)

Был у меня опыт подобной схемы, помогал делать как-то товарищу хорошему. Была та же проблема, ping -I не работал.

Если учесть, что маршрутизация и правила source routing построены правильно, то есть одно решение, которое мне тогда помогло. Нужно установить параметр source route verification в sysctl: net.ipv4.conf.default.rp_filter=0 net.ipv4.conf.all.rp_filter=0. Если не поможет, тогда эти же параметры =2. В том случае первоначально пинг пошел со значением 0. После один из двух провайдеров изменился, и все сломалось. Помогла установка параметра 2. Давно это было, уже не помню, где я вычитал про 2, но помню, что гуглил долго и упорно. Раньше я считал, что вышеупомянутый параметр может быть только 1 или 0.

/

alexpro написал(а):
Раньше я считал, что вышеупомянутый параметр может быть только 1 или 0.

А что об этом параметре говорит документация ядра (в смысле /usr/src/linux/Documentation/*)?

:wq
--
Live free or die

.

Я всего лишь рассказал об удачном опыте. Поскольку делалось это по просьбе, я не вникал особо. Я в курсе, зачем нужен обсуждаемый параметр, но в данном случае его применение, и связанный с этим успех относится скорее к "пляскам с бубном". Я _на тот момент_ был не в курсе, что есть еще и 2, кроме 0 и 1.

Документация говорит о том, что 2 - это называется "свободный режим" (loose mode). 1 - это strict mode, когда любой пакет, пришедший не оттуда, куда должен уходить, фильтруется. При 2 дополнительно проверяется еще и адрес источника. При 0 не проверяется ничего, и пропускается как еть.

Однако, практика говорит об обратном. Хотя при 0 фильтр должен пропускать все пакеты как есть, иногда не пропускает даже в случае, когда пакет возвращается на тот же интерфейс, с которого должен уходить. В некоторых случаях работает только при rp_filter=2, и никак иначе. На данный момент я не смог определить признака, который бы четко определял, что фильтр будет отбрасывать пакеты даже при установленном rp_filter=0.

Я использовал ping -I для определения доступности конкретного адреса через конкретный канал связи. В этом случае никакой асимметрии быть не может. Если мы имеем два маршрута по умолчанию, или второй маршрут по умолчанию задан правилами с помощью iproute2, ping -I без плясок с rp_filter через второстепенный маршрут не работает никогда, исходя из моего опыта. А через основной default параметр -I вообще не нужен, и без него все будет правильно.

alexpro написал(а): ...Я

alexpro написал(а):
...Я использовал ping -I для определения доступности конкретного адреса через конкретный канал связи. В этом случае никакой асимметрии быть не может...

Еще как может! :) Вы же, обычно, не можете управлять трафиком за пределами своей сети. А там всяко бывает...

.

У меня лично есть несколько каналов, и я могу гарантировать, куда и что уйдет, а вот откуда оно потом придет, само собой, не могу. Но мой случай это несколько не то. У меня есть мои блоки адресов, они не меняются. И, если я использую для ping -I только свои адреса, то асимметрия очень вероятна.

В случае с "двумя интернетами" ситуация в корне меняется. Например, у меня есть два подключения к разным провайдерам, обычные клиентские, безо всяких там собственных адресов и прочих BGP. Cоответственно, я имею как минимум два IP-адреса, по одному от каждого. Если я правильно настроил исходящую маршрутизацию (от IP провайдера А пакеты уходят в default канала А, от IP провайдера Б пакеты уходят в default канала Б), то никакой асимметрии быть не может: возвращаться пакеты будут туда, откуда они ушли.

Есть конечно, вариант, что в некоторой точке, в которой траффик обоих провайдеров пересекается, кто-то настроит маршруты так, что траффик провайдера А пойдет в канал провайдера Б. Но это уже какой-то наркоманский бред :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".