Rose debug info
---------------

Прозрачный nat нескольких сетей на шлюзе FreeBSD через setfib

Скрипт создания таблицы с адресами

#!/bin/sh

rm /tmp/reestr.txt
rm /tmp/reestrbsd.txt
/usr/local/bin/wget -O - https://reestr.rublacklist.net/api/v2/ips/json|tr ',' '\n'|tr -d '"'|tr -d ']'|tr -d '[' > /tmp/reestr.txt
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /tmp/reestr.txt > /tmp/reestrbsd.txt

file="/tmp/reestrbsd.txt"
ipfw table 1 flush
while read line
do
ipfw table 1 add $line
done < $file

Фаервол:

#!/bin/sh -

# прописываем роут для setfib 1
setfib 1 route del default
setfib 1 route add default -interface tun1

fwcmd="/sbin/ipfw"
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} nat 1 delete
${fwcmd} nat 2 delete

if_local1="re0" # локалка
if_inet1="ng0" # интерфейс интернета
if_rkn="tun1"  # интерфейс openvpn

       # заруливаем все обращения к ip из таблицы в setfib 1
       ${fwcmd} add setfib 1 ip from any to table\(1\) recv ${if_local1}

       # основной нат
       ${fwcmd} nat 1 config if ${if_inet1} same_ports
       ${fwcmd} add nat 1 ip from any to any via ${if_inet1}

       # нат для ip из таблицы
       ${fwcmd} nat 2 config if ${if_rkn} same_ports
       ${fwcmd} add nat 2 ip from any to any via ${if_rkn}

       ${fwcmd} add allow all from any to any
Поделиться
Отправить
2021   Freebsd   ipfw   setfib