Прозрачный nat нескольких сетей FreeBSD
Этот способ устарел. Лучше делать вот так
В первую очередь нужно поднять OpenVPN клиента через который мы будем пускать адреса в обход. В конфиге клиента следует закомментировать диррективу redirect-gateway, чтобы основной траффик у нас шел через провайдера.
Создаем скрипт который загрузит заблокированные ip в таблицу ipfw
#!/bin/sh
rm /root/bin/reestr.txt
/usr/local/bin/wget -O - https://api.reserve-rbl.ru/api/v2/ips/json|tr ',' '\n'|tr -d '"'|tr -d ']'|tr -d '[' > /root/bin/reestr.txt
file="/root/bin/reestr.txt"
ipfw table 1 flush
while read line
do
ipfw table 1 add $line
done < $file
file="/root/bin/useriplist" # В этот файл можно вписать свои ip которые тоже нужно пустить через VPN
while read line
do
ipfw table 1 add $line
done < $file
Запустим natd на порту 8673
/sbin/natd -a 10.8.1.6 -p 8673
Зарулим все ip из таблицы 1 в VPN
lan="192.168.0.0/24" #локалка
vpnip="10.8.1.6" #ip vpn интерфейса
vpngw="10.8.1.7" #vpn шлюз
ipfw add divert 8673 ip from ${lan},${vpnip} to table\(1\)
ipfw add fwd ${vpngw} ip from ${vpnip} to table\(1\)
ipfw add divert 8673 ip from table\(1\) to ${vpnip}