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

FreeBSD+mpd policy based routing

Добрый день.

Имеется:

 

# uname -a

FreeBSD vpn11.xxx.ru 7.3-STABLE-201011 FreeBSD 7.3-STABLE-201011 #0: Wed Dec 1 15:28:18 MSK 2010 root@vpn.xxx.ru:/usr/obj/usr/src/sys/VPN11 amd64

 

# mpd5 -v

Version 5.5 (root@vpn11.xxx.ru 16:54 1-Dec-2010)

 

 

# ifconfig em0

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500

options=219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>

ether 00:1c:c0:a3:3f:8b

inet 11.11.11.32 netmask 0xfffff800 broadcast 11.11.18.255

inet 22.22.22.32 netmask 0xfffff800 broadcast 22.22.29.255

inet 33.33.33.32 netmask 0xfffff800 broadcast 33.33.40.255

media: Ethernet autoselect (1000baseTX <full-duplex>)

status: active

 

 

 

mpd5+radius выдает юзерам белые адреса из разных подсетей - 11.11.11.0/21, 22.22.22.0/21, 33.33.33.0/21 (почему? потому что такие белые адреса :) )

 

В каждой подсети есть свой default route (т.к. разные провайдеры) - 11.11.11.1, 22.22.22.1, 33.33.33.1 соответственно

Сам ВПН сидит с default route=33.33.33.1.

 

Пример: юзер на ВПН сидит на ng0 (ip 11.11.15.50). Инет у юзера работает. Но пакеты уходят через шлюз ВПН, т.е. 33.33.33.1. А должны уходить через 11.11.11.1

 

Как это реализовать? В линухе делал через iproute2 (ip route table xxx / ip rule xxx)

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


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

Пример: юзер на ВПН сидит на ng0 (ip 11.11.15.50). Инет у юзера работает. Но пакеты уходят через шлюз ВПН, т.е. 33.33.33.1. А должны уходить через 11.11.11.1

 

Как это реализовать? В линухе делал через iproute2 (ip route table xxx / ip rule xxx)

iface up-script
${fwcmd} table 10 add $4
rc.firewall
${fwcmd} add fwd 11.11.11.1 ip from table\(10\) to any

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


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

Кроме правил fwd для ipfw и route-to для pf можно посмотреть в сторону man setfib.

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


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

кто-нибудь может, как такое с помощью pf реализовать?

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


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

как-то так

pass out quick route-to (vlan123 11.11.11.1) inet from <table10> to !<table10> flags any no state

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


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

У меня пока так.

 

ext_if="em0"
ext_gw1="11.11.11.11"
ext_gw2="22.22.22.11"
ext_gw3="33.33.33.11"
int_if="sk0"
nn_lan="{10.0.0.0/8 172.16.0.0/16}"
nn_inet1="11.11.11.0/21"
nn_inet2="22.22.22.0/21"
nn_inet3="33.33.33.0/21"


scrub in all fragment reassemble



pass out route-to ($ext_if $ext_gw1) from $nn_inet1 to any keep state
pass out route-to ($ext_if $ext_gw2) from $nn_inet2 to any keep state
pass out route-to ($ext_if $ext_gw3) from $nn_inet3 to any keep state

 

так работает только для самой фряхи (например traceroute -s 11.11.11.32 ya.ru отличается от traceroute -s 33.33.33.32 ya.ru). ВПН клиенты же вообще тогда не могут прорваться в сеть.

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


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

Почему мне всё это кажется какими-то костылями? Не изящнее ли BGP? Или это не PI-адреса?..

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


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

Join the conversation

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

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

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

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

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

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

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