Иногда требуется пробросить трафик и/или порт внутри сервера или локальной сети. Это требуется например тогда, когда в локальной сети сервера находится web-сервер или высунуть windows RDP 3389 локального сервера наружу
Итак, имеется FreeBSD сервер с установленным для теста nginx, который слушает только localhost (127.0.0.1) . При этом в конфиге nginx присутствуют следующие строки:
listen 127.0.0.1:80; server_name localhost; location / { root /usr/local/www/nginx; index index.html index.htm; try_files $uri $uri/ /index.html; } |
В этом конфиге nginx присутствует редирект всех страниц на страницу index.html
Для работы проброса (forward) в ipfw необходимо выполнить команду sysctl net.inet.ip.forwarding=1
#!/bin/sh N='igb0' IP='195.154.95.95' F='/sbin/ipfw -q' $F -f flush $F add pass all from any to any via lo0 $F add deny all from any to 127.0.0.0/8 $F add deny all from 127.0.0.0/8 to any $F add accept tcp from any to any established $F add check-state $F add accept ip from me to any keep-state $F add accept icmp from any to me in via $N keep-state $F add deny all from any to any frag $F add fwd 127.0.0.1,80 tcp from any to $IP 80 keep-state $F add fwd 127.0.0.1,443 tcp from any to $IP 443 keep-state ipfw add allow in ipfw add allow out ipfw add deny log logamount 3 tcp from any to any |