This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | Last revisionBoth sides next revision | ||
software:freebsd:tcpproxy_on_pf [2022/02/04 18:32] – removed - external edit (Unknown date) 127.0.0.1 | software:freebsd:tcpproxy_on_pf [2022/02/04 18:32] – ↷ Page moved from ru:software:freebsd:tcpproxy_on_pf to software:freebsd:tcpproxy_on_pf root | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== TCP proxy on PF ====== | ||
+ | Обычно, | ||
+ | Однако это не работает, | ||
+ | * фильтрует все адреса не принадлежащие локальной сети; | ||
+ | * не прописал шлюз вообще; | ||
+ | * прописал шлюз отличный от того, через который мы подключаемся. | ||
+ | |||
+ | Некоторые в такой ситуации запускают простенькую софтину, | ||
+ | Минусом то что программа должна быть запущена, | ||
+ | |||
+ | ===== Шаблон ===== | ||
+ | < | ||
+ | nat on $int_if inet proto tcp from any to $host_addr port $host_port -> ($int_if) | ||
+ | nat on $ext_if inet proto tcp from $host_addr port $host_port to any -> ($ext_if) | ||
+ | |||
+ | pass in quick on $ext_if proto tcp from any to (self) port $host_port_ext keep state | ||
+ | pass quick proto tcp from any to $host_addr port $host_port keep state</ | ||
+ | |||
+ | **$int_if** - внутренний интерфейс; | ||
+ | **$ext_if** - внешний интерфейс; | ||
+ | **$host_port_ext** - порт на " | ||
+ | **$host_addr** - адрес хоста в локалке к которому нужно подключится извне | ||
+ | **$host_port** - порт хоста в локалке к которому нужно подключится извне | ||
+ | |||
+ | - Перенаправляем трафик адресованный компьютеру - " | ||
+ | - Заменяем в пакете из интернета адресованному для внутреннего хоста адрес источника на адрес нашего " | ||
+ | - В пакете от внутреннего хоста заменяем его адрес внешним адресом нашего " | ||
+ | |||
+ | |||
+ | ===== Пример ===== | ||
+ | < | ||
+ | nat on rl0 inet proto tcp from any to 192.168.1.7 port 22 -> 192.168.1.239 | ||
+ | nat on rl0 inet proto tcp from 192.168.1.7 port 22 to any -> 1.3.8.1 | ||
+ | |||
+ | pass quick proto tcp from any to (self) port 9999 keep state | ||
+ | pass quick proto tcp from any to 192.168.1.7 port 22 keep state</ | ||
+ | |||
+ | Машина с фряхой была подключена к локалке, | ||
+ | В итоге подключаясь в инете на адрес **1.3.8.1: | ||
+ | Всего то 3 строчки правил заменили целую софтину. Три - потому как они делают всю работу, |