<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Аникин: заметки с тегом ipfw</title>
<link>https://anikin.pw/tags/ipfw/</link>
<description>Блог об администрировании Linux, BSD и не только</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Блог об администрировании Linux, BSD и не только</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Прозрачный nat нескольких сетей на шлюзе FreeBSD через setfib</title>
<guid isPermaLink="false">105</guid>
<link>https://anikin.pw/all/prozrachny-nat-na-shlyuze-freebsd-cherez-setfib/</link>
<pubDate>Sat, 03 Jul 2021 17:46:27 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/prozrachny-nat-na-shlyuze-freebsd-cherez-setfib/</comments>
<description>
&lt;p&gt;Скрипт создания таблицы с адресами&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/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 '&amp;quot;'|tr -d ']'|tr -d '[' &amp;gt; /tmp/reestr.txt
grep -E -o &amp;quot;([0-9]{1,3}[\.]){3}[0-9]{1,3}&amp;quot; /tmp/reestr.txt &amp;gt; /tmp/reestrbsd.txt

file=&amp;quot;/tmp/reestrbsd.txt&amp;quot;
ipfw table 1 flush
while read line
do
ipfw table 1 add $line
done &amp;lt; $file&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Фаервол:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/sh -

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

fwcmd=&amp;quot;/sbin/ipfw&amp;quot;
${fwcmd} -f flush
${fwcmd} -f pipe flush
${fwcmd} nat 1 delete
${fwcmd} nat 2 delete

if_local1=&amp;quot;re0&amp;quot; # локалка
if_inet1=&amp;quot;ng0&amp;quot; # интерфейс интернета
if_rkn=&amp;quot;tun1&amp;quot;  # интерфейс 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&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Прозрачный nat нескольких сетей FreeBSD</title>
<guid isPermaLink="false">90</guid>
<link>https://anikin.pw/all/prozrachny-nat-na-shlyuze-freebsd/</link>
<pubDate>Tue, 15 Jan 2019 13:07:12 +0300</pubDate>
<author></author>
<comments>https://anikin.pw/all/prozrachny-nat-na-shlyuze-freebsd/</comments>
<description>
&lt;p&gt;&lt;b&gt;Этот способ устарел. Лучше делать &lt;a href="https://anikin.pw/all/prozrachny-obhod-blokirovok-na-shlyuze-freebsd-cherez-setfib/"&gt;вот так&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;В первую очередь нужно поднять OpenVPN клиента через который мы будем пускать адреса в обход. В конфиге клиента следует закомментировать диррективу redirect-gateway, чтобы основной траффик у нас шел через провайдера.&lt;br /&gt;
Создаем скрипт который загрузит заблокированные ip в таблицу ipfw&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/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 '&amp;quot;'|tr -d ']'|tr -d '['  &amp;gt; /root/bin/reestr.txt
file=&amp;quot;/root/bin/reestr.txt&amp;quot;

ipfw table 1 flush
while read line
do
ipfw table 1 add $line
done &amp;lt; $file

file=&amp;quot;/root/bin/useriplist&amp;quot; # В этот файл можно вписать свои ip которые тоже нужно пустить через VPN
while read line
do
ipfw table 1 add $line
done &amp;lt; $file&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Запустим natd на порту 8673&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;/sbin/natd -a 10.8.1.6 -p 8673&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Зарулим все ip из таблицы 1 в VPN&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;lan=&amp;quot;192.168.0.0/24&amp;quot; #локалка
vpnip=&amp;quot;10.8.1.6&amp;quot; #ip vpn интерфейса
vpngw=&amp;quot;10.8.1.7&amp;quot; #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}&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>