Страница 1 из 1
PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-05-31 13:11:15
krendelek007
Сервер на ОС FreeBSD 8. Фаервол PF.
На одной из сетевых карт имеется 2 ip
1) 192.168.222.2
2) 10.1.7.205
Оба адреса (192.168.222.2 и 10.1.7.205) висят на одном интерфейсе vr1.
Провайдер локальной сети по адресу 10.1.7.205 даёт доступ к своим локальным ресурсам, но чтоб к ним добраться, надо натить адреса компов из локальной сети 192.168.222.0/28
В принципе проблем зайти на эти ресурсы нет, если добавить статические адреса в таблицу маршрутизации. Но я хочу сделать это же при помощи route-to на pf и нифига не получается
.
Код: Выделить всё
local_if = “vr1”
table <table> const { 10.1.0.0/20, 93.204.61.0/24 }
nat on $local_if from 192.168.222.0/28 to <table> -> 10.1.7.205
pass out quick on $local_if route-to ( 10.1.7.205 10.1.0.6 ) inet from any to <table>
Код: Выделить всё
# traceroute somedomen.ru
… и трасса идет через внешние каналы интернета :(
где somedomen.ru имеет IP из диапазона 93.204.61.0/24
Опять таки, если вписать маршруты статикой, то все работает как надо.
Большое спасибо за помощь.
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-01 9:55:09
Al
Возможно, стоит повесить на разные сетевые карты, т.к. исходящий адрес берется с нее. Возможно, в данном случае некорректно отрабатываются алиасы.
ЗЫ. а роут-ту не синтаксис (интерфейс, шлюз)? Где интерфейс - имя ифа, а не его адрес?
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-01 14:42:08
krendelek007
Al писал(а):Возможно, стоит повесить на разные сетевые карты, т.к. исходящий адрес берется с нее. Возможно, в данном случае некорректно отрабатываются алиасы.
ЗЫ. а роут-ту не синтаксис (интерфейс, шлюз)? Где интерфейс - имя ифа, а не его адрес?
Спасибо за ответ.
Поставил имя интерфейса, а не адрес - не изменилось ничего.
Попробую повесить на разные интерфейсы. Потом отпишусь о результатах.
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-03 22:39:12
krendelek007
Разбросал по разным сетевым картам ... не помогло (
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-04 7:13:02
Al
Конфиг целиком давай тогда. И netstat -rn
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-04 7:16:48
Al
Код: Выделить всё
pass out quick on $local_if route-to ( 10.1.7.205 10.1.0.6 ) inet from any to <table>
Где route-to ( $if $gate )
Если маска на интерфейсе /24, то шлюз и интерфейс в разных сетях.
Статикой как маршрут добавляли?
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 9:32:43
krendelek007
Al писал(а):Конфиг целиком давай тогда. И netstat -rn
netstat -rn
Код: Выделить всё
Destination Gateway Flags Refs Use Netif Expire
default 109.56.12.254 UGS 54 15759 rl0
10.1.0.0/20 link#1 U 0 2 vr0
10.1.7.205 link#1 UHS 0 0 lo0
109.56.12.0/24 link#2 U 0 0 rl0
109.56.12.14 link#2 UHS 0 0 lo0
127.0.0.1 link#5 UH 0 95 lo0
192.168.111.0/24 link#3 U 0 32 rl1
192.168.111.10 link#3 UHS 0 0 lo0
192.168.222.0/28 link#4 U 2 7384 vr1
192.168.222.2 link#4 UHS 0 0 lo0
pf.conf
Код: Выделить всё
## MACROS
local_if = "rl1"
dlan_if = "vr1"
prov_if = "rl0"
provaider_if = "vr0"
## HOSTS
lhosts = "192.168.111.0/28"
dhosts = "192.168.222.0/28"
## ping requests
icmp_types = "{ echoreq, unreach }"
## tables
table <table> const { 10.1.0.0/20, 93.204.61.0/24, 93.204.62.0/24, 93.204.63.0/24 }
## options
set block-policy drop
set skip on lo0
#########
## NAT ##
#########################
nat on $prov_if from { $dhosts, $lhosts } to any -> $prov_if
nat on $local_if from $dhosts to any -> $local_if
pass out quick on $provaider_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 9:35:28
krendelek007
Al писал(а):Код: Выделить всё
pass out quick on $local_if route-to ( 10.1.7.205 10.1.0.6 ) inet from any to <table>
Где route-to ( $if $gate )
Если маска на интерфейсе /24, то шлюз и интерфейс в разных сетях.
Статикой как маршрут добавляли?
Код: Выделить всё
#!/bin/sh
/sbin/route add 10.1.0.0/20 10.1.0.6
/sbin/route add 93.204.61.0/24 10.1.0.6
/sbin/route add 93.204.62.0/24 10.1.0.6
/sbin/route add 93.204.63.0/24 10.1.0.6
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 11:02:36
Al
Ты не понял синтаксиса.
и
не одно и тоже. Похожи только слова.
Я ж тебе написал.
route-to ( $if $gate ), где
$if - интерфейс, с которого выплевывать пакеты
$gate - новый шлюз для них. Следующий некст-хоп.
еквивалентно
Код: Выделить всё
pass out on $ext_if1 from any to {10.1.0.0/20} route-to ($ext_if2 $ext_gw2)
,где
$ext_if1 - интерфейс,через который выходят пакеты по умолчанию (дефолт роут)
$ext_if2 - интерфейс,через который ты хочешь плюнуть пакеты в сеть 10.1.0.0/20
$ext_gw2 - шлюз в сеть 10.1.0.0/20. В воем случае 10.1.0.6. В этой же сети находится $ext_if2
Логика такая.
Выпускаем пакеты на $ext_if1 (сюда они идут по дефолтроуту), от всех к сети 10.1.0.0/20, перебрасываем их на сетевуху $ext_if2 и даем шлюз (некст хоп) $ext_gw2
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 11:07:48
Al
krendelek007 писал(а):
Код: Выделить всё
pass out quick on $provaider_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
Не работает, т.к. ни один пакет у тебя не попадает на $provaider_if и правило не срабатывает.
Все пакеты идут по дефолтному шлюзу через $prov_if.
Должно быть
Код: Выделить всё
pass out quick on $prov_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 17:07:47
krendelek007
Al писал(а):krendelek007 писал(а):
Код: Выделить всё
pass out quick on $provaider_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
Не работает, т.к. ни один пакет у тебя не попадает на $provaider_if и правило не срабатывает.
Все пакеты идут по дефолтному шлюзу через $prov_if.
Должно быть
Код: Выделить всё
pass out quick on $prov_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
Спасибо большое, без вашей помощи не разобрался бы.
В общем то:
Код: Выделить всё
pass out quick on $prov_if route-to ( $provaider_if 10.1.0.6 ) inet from any to <table>
работает верно, за исключением того, что перебрасывает пакеты на $provaider_if, но присваивает адрес источника - IP сетевой карты $prov_if.
Натами этот вопрос решил, сейчас все работает нормально.
Но теперь вернусь к самому началу. Возможно ли реализовать тоже самое, но когда IP адреса:
1) 192.168.222.2
2) 10.1.7.205
висят на одном интерфейсе, а не на разных?
Re: PF + route-to (тема избитая, но не могу разобраться)
Добавлено: 2010-06-05 17:28:24
Al
Ну, попробуй. Заодно расскажешь)