Прозрачный обход блокировок на шлюзе FreeBSD
В первую очередь нужно поднять OpenVPN клиента через который мы будем пускать заблокированные адреса. В конфиге клиента следует заккомментировать диррективу redirect-gateway, чтобы основной траффик у нас шел через провайдера.
Создаем скрипт который загрузит заблокированные ip в таблицу ipfw
#!/bin/sh
rm /root/bin/reestr.txt
wget -O - https://reestr.rublacklist.net/api/ips|tr ';' '\n'|tr '"' ' ' > /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}