ytil Опубликовано 5 июля, 2018 · Жалоба Добрый день. Имеется маршрутизатор с FreeBSD на борту. Ядро собрано с поддержкой множественных таблиц маршрутизации. Задача состоит в том, чтобы одновременно работало 3 разных канала, для разных пулов адресов свои вот конфиг pf пояснения. с пула <ch1> мы натируем соединение к первому провайдеру и всё работает в первой таблице маршрутизации с пула <ch2> всё идет на шлюз по умолчанию 192.168.0.4 (от другого провайдера) и тоже все работает c пула <ch3> тоже всё идет на шлюз по умолчанию 10.100.201.1 (этот шлюз назначен на другом маршрутизаторе ежели 192.168.0.4). Но почему-то исходящий траффик идет через <ch2>, а входящий как надо. Поясните, что же тут не так, и как мне заставить всё это работать) /etc/pf.rules isp1_if = "em0" isp2_if = "bce0" isp3_if = "bce1" int_if = "em1" table <ch1> {172.16.14.0/24} table <ch2> {172.16.15.0/24} table <ch3> {172.16.16.0/24} set limit { states 10000000, frags 15000 } set skip on lo0 set skip on $int_if scrub in all fragment reassemble nat on $isp1_if from <ch1> to any -> 1.1.1.1 pass all pass in from <ch1> to any rtable 0 pass in from <ch2> to any rtable 1 pass in from <ch3> to any rtable 2 netstat -rn | grep default default 1.1.1.1 UGS em0 setfib 1 netstat -rn | grep default default 192.168.0.4 UGS bce0 setfib 2 netstat -rn | grep default default 10.201.1.1 UGS bce1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 5 июля, 2018 · Жалоба Я с таблицами не работал но: set skip on $int_if похоже лишнее. nat on $isp1_if from <ch1> to any -> 1.1.1.1 Натить ты должен в адрес на локальном интерфейсе. У тебя должно быть три правила для нат. И вообще, раз у тебя ничего не пересекается то вроде и таблицы машрутизации не нужны: на выход ты гонишь правилами, на вход у тебя таблица нат+маршрутизации. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ytil Опубликовано 5 июля, 2018 (изменено) · Жалоба 33 минуты назад, Ivan_83 сказал: Я с таблицами не работал но: set skip on $int_if похоже лишнее. nat on $isp1_if from <ch1> to any -> 1.1.1.1 Натить ты должен в адрес на локальном интерфейсе. У тебя должно быть три правила для нат. И вообще, раз у тебя ничего не пересекается то вроде и таблицы машрутизации не нужны: на выход ты гонишь правилами, на вход у тебя таблица нат+маршрутизации. да, бред немного написал, натирую я на локальный интерфейс. т.е. на 1.1.1.2, а шлюз у меня 1.1.1.1. Очепятка почему у меня должно быть 3 правила для ната? 2 других канала у меня натируются на других маршрутизаторах, а на этом я просто указываю к ним default route. Я просто не знаю, как без таблиц маршрутизации загонять трафик с какого-то пула, на нужный шлюз по умолчанию. Не знаю считается это, что каналы пересекаются или нет но маршрутизаторы для второго и третьего канала в одной ospf зоне и вставлены в один свитч. 1 канал мне приходит от Провадера Х, а 2 других канала принадлежат мне. Изменено 5 июля, 2018 пользователем ytil Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 5 июля, 2018 · Жалоба Да, не внимательно читал, один нат. Тогда там есть rdr и может route-to, нужно документацию читать, я бы через них как то указывал. (параллельно вместо ещё двух натов) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...