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

правильное перенаправление исходящего трафика в 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

 

Share this post


Link to post
Share on other sites

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

set skip on $int_if

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

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

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

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

 

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

 

Share this post


Link to post
Share on other sites

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

Edited by ytil

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.