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

NAT и прозрачный прокси на pf (FreeBSD)

Есть сервер с двумя интерфейсами, $if_int и $if_wifi. На $if_int есть интернет, на $if_wifi подключены клиенты, <hotspot> — IP-адреса клиентов.

Нужно http-подключения клиентов пускать через прокси-сервер (на том же сервере, на порту 3128), а https-подключения натить.

Сделал так:

...
svc_nat_tcp = "{ 443 }"
svc_proxy_tcp = "{ 80 }"
svc_proxy_udp = "{ 53 }"
...
nat on $if_wifi proto tcp from <hotspot> to !$if_wifi port $svc_nat_tcp -> $if_int:0
rdr on $if_wifi proto tcp from <hotspot> to !$if_wifi port $port_www -> $if_wifi port 3128
pass out on $if_wifi from $if_wifi to 10.10.0.0/24
pass in on $if_wifi proto udp from 10.10.0.0/24 to $if_wifi port 1812
pass in on $if_wifi proto tcp from <hotspot> to $if_wifi port $svc_proxy_tcp
pass in on $if_wifi proto udp from <hotspot> to $if_wifi port $svc_proxy_udp

но что-то не работает. Где ошибся?

Share this post


Link to post
Share on other sites

На порт 3128 тоже нужно разрешать входящие подключения.

"$if_int:0" - тоже как то странно выглядит.

 

Share this post


Link to post
Share on other sites

На 3128 зачем? Всегда без этого работало.

И вообще прозрачный прокси работает нормально. Почему-то не работает NAT.

$if_int:0 это из документации, раскрывается в первый ip интерфейса.

Share this post


Link to post
Share on other sites
Почему-то не работает NAT

либо добавьте модификатор 'pass' в правило nat, либо добавьте фильтрующее правило, разрешающие проход из <hotspot> по tcp/443

Share this post


Link to post
Share on other sites

Надо же, невнимательно читал доку, про модификатор pass не знал.

Попробую.

Но разрешающее правило на tcp/443 было (в листинг забыл его добавить), с ним NAT тоже не работал.

Share this post


Link to post
Share on other sites
Но разрешающее правило на tcp/443 было (в листинг забыл его добавить), с ним NAT тоже не работал.

покажите правило. еще хорошо помогает tcpdump -npi pflog0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this