Проброс трафика ipfw fwd ip

Иногда требуется пробросить трафик и/или порт внутри сервера или локальной сети. Это требуется например тогда, когда в локальной сети сервера находится 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
Готово! Теперь весь трафик, приходящий на 80 порт $IP будет уходить на 80 порт 127.0.0.1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *