Страница 1 из 1
PF route-to
Добавлено: 2010-01-14 21:58:30
TITANius
Имеем: Локальную сеть (stge0) за роутером (192.168.0.1) который должен получать инет от другого роутера (192.168.2.111) по другой локальной сети (rl0) используя route-to (в дальнейшем, если разберусь, прикручу этим способом 3 инета)
конфиг роутера (упрощенно):
Код: Выделить всё
## macros
local_if="stge0"
dlan_if="rl0"
## hosts
RouterD = "192.168.2.111"
hosts = "{ 192.168.0.2 192.168.0.3 192.168.0.4 }"
## options
set block-policy drop
set skip on lo0
set timeout { frag 10, tcp.established 3600 }
scrub in all no-df fragment reassemble
scrub out all random-id max-mss 1400
## NAT
nat on $dlan_if from $hosts to !(self) -> ($dlan_if)
## filter rules
pass in all
pass out all
## allow NAT connection
pass in on $local_if route-to ($dlan_if $RouterD) from $local_if:network to any
два дня гугл тормошу, маны перечитываю, кучу вариантов испробовал и всё тчетно
Код: Выделить всё
ping ya.ru
PING ya.ru (213.180.204.8): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
Люди добрые, помогите кто чем может

Re: PF route-to
Добавлено: 2010-01-14 22:26:30
_Гагарин
схему нарисуй плиз, я старался но ничего не понял как утебя там выглядит все
Re: PF route-to
Добавлено: 2010-01-14 22:49:34
TITANius
_Гагарин писал(а):схему нарисуй плиз, я старался но ничего не понял как утебя там выглядит все
Сказано - сделано. Это текущее решение (на неделе будет переделано).

Re: PF route-to
Добавлено: 2010-01-14 23:05:38
_FreeBSD
на Router T:
1. ставишь в rc.conf
defaultrouter="192.168.2.111"
2. в pf.conf
Код: Выделить всё
local_if="stge0"
dlan_if="rl0"
nat on $dlan_if from any to any -> ($dlan_if)
block all
pass in on $local_if from any to any
pass out on $dlan_if from $dlan_if to any
пакеты должны занатироваться и выйти в направлении дефаултроутера 192.168.2.111. А дальше уже надо 192.168.2.111 настроить и будет у тебя инет с работы.
Re: PF route-to
Добавлено: 2010-01-14 23:15:07
TITANius
_FreeBSD писал(а):на Router T:
1. ставишь в rc.conf
defaultrouter="192.168.2.111"
2. в pf.conf
ок, теперь представим что в РоутерТ заходит ещё одна сеть, через которую выдаётся ng0 ... +1 инет.
Как тогда реализовать round-robin роутинг в 2 инета ?
Re: PF route-to
Добавлено: 2010-01-14 23:22:57
_FreeBSD
Адресные пулы NATвроде понятно написано
Re: PF route-to
Добавлено: 2010-01-14 23:27:56
TITANius
хоть убей, но у меня не получался работоспособный конфиг

может быть из-за того что пробовал без
Код: Выделить всё
1. ставишь в rc.conf
defaultrouter="192.168.2.111"
?
Re: PF route-to
Добавлено: 2010-01-14 23:51:51
_FreeBSD
не ну я не знал что у тебя впн еще
ты скорее всего прав что надо делать через
route-to
как видишь по ссылке выше сделать эту балансировку не трудно
вот только все ослажняется динамически создаваемым(и) интерфейсами ng*
вопрос:
1) мпд в качестве звонилки?
2) какую цель приследует весь этот гемор?
Re: PF route-to
Добавлено: 2010-01-15 0:14:23
TITANius
_FreeBSD писал(а):как видишь по ссылке выше сделать эту балансировку не трудно
я этот (и похожие) мануалы прочитал раз 20 ... пока безрезультатно
_FreeBSD писал(а):вот только все ослажняется динамически создаваемым(и) интерфейсами ng*
в этом проблемы нет ... если будет работать со статикой напишу скрипт создающий правила PF посде соединения/разрыва каждого из интерфейсов
_FreeBSD писал(а):
вопрос:
1) мпд в качестве звонилки?
2) какую цель приследует весь этот гемор?
1. да, mpd5.4
2. стабильный и широкий канал в инет
завтра уже продолжу мучения ... надеюсь на вашу помощь

Re: PF route-to
Добавлено: 2010-01-15 1:13:06
_Гагарин
закомменть в rc.conf
defaultroute, типо мы же будем слать куда хотим сами
давай пока простопопробуем послать пакеты хотябы в одну сторону, че-то я сосредоточился, поробуй такие правила:
Код: Выделить всё
int_if="stge0"
ext_if1="rl0"
ext_gw1 = "192.168.2.111"
# правила nat для исходящих соединений
nat on $ext_if1 from any to any -> ($ext_if1)
block all
# пропускаем все исходящие пакеты на внутреннем итерфейсе
pass out on $int_if from any to any
# пропускаем (quick) пакеты, входящие во внутр. интерфейс
pass in quick on $int_if from any to any
# всё из внутренней сети должно идти через шлюз $ext_gw1
pass in on $int_if route-to ($ext_if1 $ext_gw1) from any to any
# основные "выпускаюшие" правила на внешнем интерфейсе
pass out on $ext_if1 from any to any
# маршрутизация пакетов идущих с любого IP на $ext_if1 через $ext_gw1
pass out on $ext_if1 route-to ($ext_if1 $ext_gw1) from any to any
как бы идея в том что из локалки пакеты должны уйти в сторону второго роутера
Re: PF route-to
Добавлено: 2010-01-15 13:14:56
TITANius
_Гагарин писал(а):давай пока просто попробуем послать пакеты хотя бы в одну сторону, че-то я сосредоточился, попробуй такие правила:
Код: Выделить всё
$ pfctl -sr
block drop all
pass out on stge0 all flags S/SA keep state
pass in quick on stge0 all flags S/SA keep state
pass in on stge0 route-to (rl0 192.168.2.111) inet all flags S/SA keep state
pass out on rl0 all flags S/SA keep state
pass out on rl0 route-to (rl0 192.168.2.111) inet all flags S/SA keep state
pass quick inet proto udp from any port = bootps to any port = bootps keep state
pass quick inet proto udp from any port = bootps to any port = bootpc keep state
pass quick inet proto udp from any port = bootpc to any port = bootps keep state
pass quick inet proto udp from any port = bootpc to any port = bootpc keep state
pass in inet proto icmp all icmp-type echoreq keep state
pass in inet proto icmp all icmp-type unreach keep state
Код: Выделить всё
$ ping ya.ru
ping: cannot resolve ya.ru: Host name lookup failure
Смутные сомнения терзают меня ...
На роутере стоит dnsmasq-2.51,1 в качетве DNS + DHCP ... может это как-то влиять на ход экспериментов ?
UPD.: добавил в resolv.conf
Код: Выделить всё
$ ping ya.ru
PING ya.ru (93.158.134.8): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
UPD2: добавил в в rc.conf
с теми же правилами
Код: Выделить всё
$ traceroute ya.ru
traceroute: Warning: ya.ru has multiple addresses; using 213.180.204.8
traceroute to ya.ru (213.180.204.8), 64 hops max, 40 byte packets
1 192.168.2.111 (192.168.2.111) 0.255 ms 0.237 ms 0.185 ms
2 94.27.125.132 (94.27.125.132) 1.098 ms 0.981 ms 0.804 ms
3 94.27.125.177 (94.27.125.177) 5.271 ms 10.593 ms 5.361 ms
4 94.27.125.165 (94.27.125.165) 2.126 ms 2.053 ms 1.598 ms
5 94.27.127.106 (94.27.127.106) 8.590 ms 8.422 ms 8.669 ms
6 94.27.127.106 (94.27.127.106) 8.460 ms 8.499 ms 8.579 ms
7 85.223.129.29 (85.223.129.29) 9.596 ms 9.031 ms 9.963 ms
8 85.223.129.25 (85.223.129.25) 9.024 ms 9.933 ms 9.227 ms
9 te-6-1-ar1-co10.kv.sovam.net.ua (94.27.18.37) 9.433 ms 9.746 ms 9.350 ms
10 te-1-2-br0-co15.kv.sovam.net.ua (85.223.228.182) 111.686 ms 19.297 ms 20.384 ms
11 yandex-gw.ix.net.ua (195.35.65.88) 9.404 ms 9.493 ms 9.610 ms
12 titanium-vlan904.yandex.net (213.180.208.94) 34.310 ms 34.482 ms 37.732 ms
13 ya.ru (213.180.204.8) 31.832 ms 31.767 ms 31.608 ms
Заработало ... нужно было добавить роут ? а как же route-to в PF ?
в простыми правилами ната для инета ng0 всё равно ходит через 192.168.2.111

Re: PF route-to
Добавлено: 2010-01-15 22:25:03
TITANius
Сегодня пол дня с
ban'ом потратил на возню с правилами (за что ему огромнейшее спасибо). Пришли к таким правилам:
Код: Выделить всё
int_if="stge0"
ext_if1="rl0"
ext_gw1 = "192.168.2.111"
# правила nat для исходящих соединений
nat on $ext_if1 from any to any -> ($ext_if1)
block all
# пропускаем все исходящие пакеты на внутреннем итерфейсе
pass out on $int_if from any to any
# всё из внутренней сети должно идти через шлюз $ext_gw1
pass in on $int_if route-to ($ext_if1 $ext_gw1) from any to any
pass out on $ext_if1 from any to any
pass in inet proto icmp all icmp-type echoreq
pass out inet proto icmp all icmp-type echoreq
в итоге ходят локальные машины через РоутерД, но ping и tracert не проходят

Может у кого есть какие мысли ? буду рад выслушать
