Перейти к содержимому
Калькуляторы

правильное перенаправление исходящего трафика в pf

Добрый день. Имеется маршрутизатор с 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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я с таблицами не работал но:

set skip on $int_if

похоже лишнее.

nat on $isp1_if from <ch1> to any -> 1.1.1.1

Натить ты должен в адрес на локальном интерфейсе.

У тебя должно быть три правила для нат.

 

И вообще, раз у тебя ничего не пересекается то вроде и таблицы машрутизации не нужны: на выход ты гонишь правилами, на вход у тебя таблица нат+маршрутизации.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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 других канала принадлежат мне.

Изменено пользователем ytil

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, не внимательно читал, один нат.

Тогда там есть rdr и может route-to, нужно документацию читать, я бы через них как то указывал. (параллельно вместо ещё двух натов)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.