Здравствуйте.
У меня возникла проблема с настройкой pf не могу понять в чем причина.
Если есть кто разбирается в теме - буду очень благодарен.Итак есть внешний интерфейс ed0 - подсоединен к ADSL (рутеру)
Внутренний интерфейс dc0
Поднят mpd, где ng0 - внешний интерфейс, через PPPoE в интернет.
Внутренние интерфейсы ng1 по ng5 - входящие VPN каналы.
По мере подключения (VPN)IP пользователей добавляются в таблицу.Содержимое /etc/pf.conf
ext_if = "ed0"
int_str_if = "ng0"
table <users_str_if> persist
int_if = "dc0"priv_nets = "{ 127.0.0.0/8 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8 }"
scrub in all
nat on $int_str_if from { <users_str_if> lo0 } to any -> ($int_str_if)
#-------------------------------------------------------
# blochim vse
block all# razreshaem loopback
pass quick on lo0 all# antispoof
block drop in quick on $int_str_if from $priv_nets to any
block drop out quick on $int_str_if from any to $priv_nets# allow icmp
pass in inet proto icmp all keep state
pass out inet proto icmp all keep state#allow local net
pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state# allow external
pass out on $int_str_if inet from { <users_str_if> lo0 } to any modulate state flags S/SApass out on $int_chret_if inet proto { udp icmp } from { <users_chret_if> lo0 } to any keep state
pass on $ext_if all
#-------------------------------------------
Возможно какие-то излишества (например lo0) возможно еще что-то не так, подскажите ПЛЗ.
Таблица <users_chret_if> содержит IP подключенных в данный момент людей.
Задача - натить входящие VPN соединения на внешний интерфейс.
ICMP - бегает нормально, а вот зателнетиться хотя бы на 80 порт яндекса - не выходит.
Работает лишь если добавить
pass in all
pass out all
но вы сами видите что это не вариант...Первый раз pf настраиваю, возможно чего-то недопонял...направьте на путь истиный.
напишите block log all и слушайте pflog0 чтоб видеть что блокируется
tcpdump -envi pflog0хотя странно оно у вас как то... если раздаёте инет то почему нет ната?
nat on $ext_if from <users_chret_if> to any -> ($ext_if)
>хотя странно оно у вас как то... если раздаёте инет то почему
>нет ната?
>nat on $ext_if from <users_chret_if> to any -> ($ext_if)если это так, то не забудь включить маршрутизацию между интерфейсами...
>>nat on $ext_if from <users_chret_if> to any -> ($ext_if)
есть такое
nat on $int_str_if from { <users_str_if> lo0 } to any -> ($int_str_if)
>если это так, то не забудь включить маршрутизацию между интерфейсами...
Включена