PadavanおよびKeenetic OSファームウェアを使用したルーターのロックの選択的バイパス

インターネットリソースのブロックをバイパスするためのさまざまなオプションを備えた膨大な数の手順が公開されています。 ただし、トピックの関連性は失われません。 さらに多くの場合、ロックをバイパスする方法に関する記事をブロックするための立法レベルでの取り組みが聞かれています。 そして、Roskomnadzorが「より良い」ロックのために納税者のお金の別のパックを受け取るといううわさがありました。 経験豊富なユーザーは、この記事から新しいことや有用なことを学ぶことはありません。 しかし、PadavanおよびKeeneticファームウェアを搭載した一般的なルーターで、ロックを簡単かつ効果的に選択的にバイパスするための既製の段階的な手順を入手できる人もいます。



内容



はじめに


約2年間、 Zolg ロックバイパス オプションを使用しました 。 ネットワーク上の多くの指示はそれに基づいています。 私を含む。

すべてが良かったが、「最高は常に善の敵である」。 まず、いくつかの新しいプログラムは「スマート」になりすぎており、ルーターのDNSサーバーをバイパスして、独自の方法を使用してドメインを解決します。 これにより、ルーター上のdnsmasqがロック解除のためにipsetセットにアドレスを追加できなくなり、論理的な結果が得られます-リソースはロックされたままです。 Android 9では、DNS-over-TLSのネイティブサポート、つまり ロックをバイパスするこの方法は、動作を停止します(他のデバイスが以前にdnsmasqにアクセスしたことがない場合)。 次に、ドメインのリスト全体をantizapretから更新すると、毎回予測できない結果が生じます。 リストには、実際にブロックされていないドメインが含まれている場合があり、そのドメインの操作はメインチャネルを通じて重要です。 常に注意を払い、生成されたファイルを手で編集する必要があります。 第三に、何万ものカジノなどの膨大なドメインのリストを「持ち歩く」ことに飽き飽きしています。 時間が経つにつれて、ブロックされたリソースの小さな特定のリストだけが必要であることに気付きました。

だから1年間、私は少し修正されたロック解除方法を使用してきましたが、私は完全に満足しています:


私のオプションは、数百および数千のドメインのロックを解除する必要がある場合を想定していないことに注意することが重要です。 ルーターが起動すると、指定されたリストの各ドメインが解決されるためです。 リスト内のドメインが多いほど、ロック解除する多くのipsetの初期化が長くなります。

ロックをバイパスするための基本は同じです-Torネットワーク。 その使用は2つの単純な要因によるものです-無料、およびVPNサービスとは異なり、ロシアでTorがブロックされる可能性はゼロに近いです。 Torは、ロシアの麻薬密売の基盤であり、中部から最下部に至るまでです。 Torロックは、市場向けの新しいツールの検索と匿名性の低下につながり、その結果、地元の法執行機関の活動が正常に活性化されます。 最終的に、これはウイルスのように、上位リンクに悪影響を及ぼし始めます。 政府高官とロシアへの世界的な麻薬密輸との関係に関する最新の驚くべきニュースを考えると、ロシアでのTorの妨害は些細なことであるにも関わらず、単なるタブーです。 Roskomnadzorも、この部門に何十億が割り当てられていても、ロシアの単一の裁判所はTorをブロックする許可を「上から」持っていません。 そして、ロシアは単に麻薬にownれているにも関わらず、誰も驚かしたり、怖がらせたりしません(小学生は何をしようとしているのかを知っています。どんな量でも-人生のそのような邪悪な真実)。 現在のモードでは、Torネットワークをブロックする確率は、エルミタージュ美術館サイトをブロックする確率よりも低くなっています。

記載されている手順は、OpenWrtを使用したルーターに簡単に適応できます。 また、小さな変更により、TorをOpenVPNに簡単に置き換えることができます。

構成後にロックをバイパスするにはどうすればよいですか?


すべてが非常に簡単です。 ファイル/opt/etc/unblock.txtがあります-ロックを解除する簡単なリストです。 ドメイン、IPアドレス、アドレス範囲、またはCIDRのロックを解除できます。 1行-1要素。 空の行は許可されますが、行の先頭に#文字を使用して無視できます。

これが私の個人用ファイルの例です
###- rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru ###    rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ### lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ### telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ### 7-zip.org edem.tv 4pna.com 2019.vote ### Tor check.torproject.org ###   IP ( #   ) #195.82.146.214 ###   CIDR ( #   ) #103.21.244.0/22 ###    ( #   ) #100.100.100.200-100.100.100.210 


このファイルを編集したら、コマンドを実行して新しい構成を適用するだけです。

 unblock_update.sh 

unblock.txtのすべてのリソースは、ルーターを再起動することなくロック解除されます。

動作原理



Padavanルーターの構成


Padavanファームウェアがインストールされたルーターと、構成済みのEntwareパッケージマネージャーが必要です。 Windowsでは、 PuTTYクライアントを使用して、SSH経由でルーターに接続できます。

古いEntware-ngではなく、Entwareを使用していることを確認してください。 / opt / var / opkg-listsフォルダーの内容を表示します。 entwareまたはentware-ngファイルがあります。 2番目のケースでは、ルーターのPadavanファームウェアを最新バージョンに更新し、Entwareパッケージマネージャーを再インストールする必要があります。 その後、ステップバイステップの手順に進みます。

レビューが示したように、主にルーターの内部メモリで初期設定が正しくない(つまり、init.dからのスクリプトがロードされていない)人々。 Xiaomi Mi Router 3または3Gをお持ちで、内部メモリのEntwareが正しく動作するかどうか不明な場合(自動起動)、すべてを再度セットアップします。 プロメテウスを取ります。 スクリプトを更新します(1)。 ソースコードを更新します(2)。 最新のファームウェアを収集してフラッシュします(4)。 ファームウェア設定をリセットします(NVRAMおよびファイルストレージ)-[詳細設定]> [管理]> [設定]。 ルーターでインターネットアクセスを構成し、SSHを有効にします。 PROMETHEUS Firmware> RWFS Formattingで実行します。 「詳細」>「管理」>「設定」>「R / Wセクションでファイルシステムをマウント」>「UBIFS」を選択します。 ルーターを再起動します。 内部メモリからの現在のEntware起動スクリプトはすべて自動的に登録され、すべてが時計のように機能します。

テストのために、最新のファームウェア-32a93dbを備えた一般的なXiaomi Mi Router 3G(Entwareは内部メモリにインストールされています)を使用しました。 伝説の赤ちゃんWT3020 AD / F / Hでも10ドルですべてが機能します。



1.ルーターに必要なソフトウェアをインストールする


 opkg update opkg install mc tor tor-geoip bind-dig cron 

mc-真夜中の司令官ファイルマネージャー。 便利なmceditエディターのためだけに必要です。 別のテキストエディタの使用に慣れている場合は、mcをインストールできません。
tor -Torサービス。
tor-geoip -Torのgeo-IPデータベース。
bind-dig -DNSクライアント(nslookupとホストのアナログ)。
cron-タスクスケジューラ。

2. ipsetを初期化し、複数のブロック解除IPアドレスを作成します(start_script.sh)


必要なモジュールを接続し、ルーターの起動時にunblockという名前の空のアドレスセットを作成します。 これを行うには、エディターで/etc/storage/start_script.shファイルを開きます。

 mcedit /etc/storage/start_script.sh 

最後に追加:

 modprobe ip_set modprobe ip_set_hash_ip modprobe ip_set_hash_net modprobe ip_set_bitmap_ip modprobe ip_set_list_set modprobe xt_set ipset create unblock hash:net 

バッファから貼り付けるには、Shift + Insertを使用し、保存-F2、終了-F10を使用します。



必要に応じて、ルーターのWebインターフェイスからstart_script.shファイルを編集できます-「詳細設定」>「カスタマイズ」>「スクリプト」>「ルーターを初期化する前に実行」 編集後、「適用」をクリックします。



3. Torのセットアップ


Tor構成ファイルの内容を削除します。

 cat /dev/null > /opt/etc/tor/torrc 

Tor構成ファイルを開きます。

 mcedit /opt/etc/tor/torrc 

内容を貼り付け(Shift + Insert):

 User admin PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor 

必要に応じて、 192.168.0.1をルーター(LAN)の内部アドレスに置き換えます。 簡単な構成の説明:


4.ロックをバイパスするためのドメインのリスト(だけでなく)(unblock.txt)


unblock.txtはロックを解除する簡単なリストです。 ドメイン、IPアドレス、範囲、またはCIDRのロックを解除できます。 1行-1要素。 空行(スペースとタブを含む)は無視されます。 行の先頭に#文字を使用して、無視することができます。

ファイル/opt/etc/unblock.txtを作成します。

 mcedit /opt/etc/unblock.txt 

各行には、ドメイン名、IPアドレス、範囲、またはCIDRを含めることができます。 #文字を使用して、行にコメントを付けることができます。

これが私の個人用ファイルの例です
 ###- rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru ###    rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ### lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ### telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ### 7-zip.org edem.tv 4pna.com 2019.vote ### Tor check.torproject.org ###   IP ( #   ) #195.82.146.214 ###   CIDR ( #   ) #103.21.244.0/22 ###    ( #   ) #100.100.100.200-100.100.100.210 


5.ドメインの特定のリストのブロック解除IPアドレスのセットを入力するスクリプト(unblock_ipset.sh)


スクリプト/opt/bin/unblock_ipset.shを作成します。

 mcedit /opt/bin/unblock_ipset.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}') if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi dig +short $line @localhost | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}' done < /opt/etc/unblock.txt 

実行権を与える:

 chmod +x /opt/bin/unblock_ipset.sh 

スクリプトは非常にシンプルで、それが作業の本質です... google.comドメイン解決が機能するのを待っています(これが行われない場合、ルーターがまだ初期化のプロセスにあるため、ルーターの起動時に多くのブロック解除が行われません)。 unblock.txtファイルの行を読み取ります。 読み取り行は、先頭と末尾のスペースとタブを自動的に削除します。 空の行をスキップします。 #文字で始まる行をスキップします。 CIDRのラインを探しています。 CIDRが見つかったら、それをブロック解除に追加します。 文字列の範囲を探しています。 見つかった場合は、ブロック解除に追加します。 文字列でIPアドレスを探しています。 IPが見つかった場合、それをブロック解除に追加します。 掘って行を解決しましょう。 結果のすべてのIPアドレスがブロック解除に追加されます。

6.ドメインの特定のリストから追加のdnsmasq構成ファイルを生成するためのスクリプト(unblock_dnsmasq.sh)


スクリプト/opt/bin/unblock_dnsmasq.shを作成します。

 mcedit /opt/bin/unblock_dnsmasq.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq done < /opt/etc/unblock.txt 

実行権を与える:

 chmod +x /opt/bin/unblock_dnsmasq.sh 

スクリプトは非常にシンプルで、それが作業の本質です... /opt/etc/unblock.txtから順番に行を読み取ります。 読み取り行は、先頭と末尾のスペースとタブを自動的に削除します。 空の行をスキップします。 #で始まる行をスキップします。 IPアドレス(IP、範囲、CIDR)を含む行、つまり ドメイン名を持つ文字列のみに関心があります。 ファイル/opt/etc/unblock.dnsmasqに、「ipset = / domain_name / unblock」という形式の行を追加します。 これは、特定のドメインのIPアドレスを決定した後、ブロック解除セットに自動的に追加されることを意味します。

必ずスクリプトを実行して、unblock.dnsmasqファイルを生成してください。

 unblock_dnsmasq.sh 

unblock.dnsmasqファイルが作成されたことを確認します。

 cat /opt/etc/unblock.dnsmasq 

7.ドメインのリストを編集した後のシステムの手動強制更新用スクリプト(unblock_update.sh)


スクリプト/opt/bin/unblock_update.shを作成します。

 mcedit /opt/bin/unblock_update.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh ipset flush unblock /opt/bin/unblock_dnsmasq.sh restart_dhcpd sleep 3 /opt/bin/unblock_ipset.sh & 

実行権を与える:

 chmod +x /opt/bin/unblock_update.sh 

8.ルーターの起動時に一連のブロック解除を自動的に設定するスクリプト(S99unblock)


スクリプト/opt/etc/init.d/S99unblockを作成します。

 mcedit /opt/etc/init.d/S99unblock 

内容を貼り付け(Shift + Insert):

 #!/bin/sh [ "$1" != "start" ] && exit 0 /opt/bin/unblock_ipset.sh & 

実行権を与える:

 chmod +x /opt/etc/init.d/S99unblock 

9.宛先がunblockからTorへのパケットの転送(post_iptables_script.sh)


エディターでファイル/etc/storage/post_iptables_script.shを開きます。

 mcedit /etc/storage/post_iptables_script.sh 

最後に追加:

 iptables -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141 



必要に応じて、ルーターのウェブインターフェースでpost_iptables_script.shファイルを編集できます-「詳細設定」>「カスタマイズ」>「スクリプト」>「ファイアウォールルールの再起動後に実行」。 編集後、「適用」をクリックします。



同じファイルに(これはオプションです)を追加して、外部ポート53へのすべての要求を自分にリダイレクトできます。 これは、ローカルネットワーク上のクライアントがサードパーティのDNSサービスを使用しないようにするために必要です。 要求は通常のDNSサーバーを通過します。

 iptables -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 iptables -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1 

必要に応じて、 192.168.0.1をルーター(LAN)の内部アドレスに置き換えます。

10.追加の構成ファイルをdnsmasqに接続する


作成したunblock.dnsmasqファイルをdnsmasqに接続する必要があります。 これを行うには、エディターでファイル/etc/storage/dnsmasq/dnsmasq.confを開きます。

 mcedit /etc/storage/dnsmasq/dnsmasq.conf 

最後に追加:

 conf-file=/opt/etc/unblock.dnsmasq 

必要に応じて(これはオプションです)、解像度と信頼性のためにサーバーを追加できます。

 server=8.8.8.8 

必要に応じて、ルーターのウェブインターフェースで「詳細」>「LAN」>「DHCPサーバー」>「ユーザーdnsmasq.conf構成ファイル」のdnsmasq.confファイルを編集できます。 編集後、「適用」をクリックします。



11.ブロック解除セットの内容を定期的に更新するタスクをcronに追加します


これは、プログラム/デバイスが独自の解決方法を使用し、ドメインIPアドレスが変更された場合の追加保険です。 必要なことは、必要な頻度でunblock_ipset.shスクリプトを実行することだけです。 たとえば、午前6時に毎日起動します。

cron構成ファイルのルート名をadminに置き換えます。

 sed -i 's/root/admin/g' /opt/etc/crontab 

エディターでファイル/ opt / etc / crontabを開きます。

 mcedit /opt/etc/crontab 

最後に追加:

 00 06 * * * admin /opt/bin/unblock_ipset.sh 

必要に応じて、他のすべてのテンプレートタスクをコメント化できます。 crontabファイルは次のようになります。



12.ルーターの再起動


コマンドを実行します:

 reboot 

再起動後、ブラウザでcheck.torproject.org Webサイトを開きます(unblock.txtに追加する必要があります)。 すべてを正しく行った場合、「おめでとうございます。」という碑文が表示されます。 このブラウザーはTorを使用するように構成されています。 ":




Keenetic OSを使用したルーターの構成


Entware Package Manager(OPKG)がすでに構成されているKeenetic / Zyxelルーターが必要です。 たとえば、以下はEntwareをサポートするルーターのリストです。KeneticII、Kenetic III、Extra、Extra II、Giga II、Giga III、Omni、Omni II、Viva、Ultra、Ultra II、Omni(KN-1410)、Extra(KN -1710)、Giga(KN-1010)、Ultra(KN-1810)、Viva(KN-1910)、DSL(KN-2010)、Duo(KN-2110)。 Entwareを構成する手順は、 ここにあります (最大10ポイント)。

以前のバージョン(2.07未満のファームウェア)で既にEntwareサポートを追加した場合は、古いEntware-ngを使用していることを確認してください。

「Netfilterサブシステムカーネルモジュール」-[一般設定]> [コンポーネントセットの変更]を有効にしてください。 使用可能なリストにない場合は、最初にIPv6プロトコルコンポーネントをインストールしてください。 これが表示されない場合は、それなしで試してください。ただし、範囲とCIDRでロック解除できない可能性が高くなります(hash:net setがサポートされないため)。



テストでは、最新のファームウェア2.14.C.0.0-4を備えたKeenetic Ultra(KN-1810)を使用しました。

重要なお知らせ。 システムの通常のDNSサーバーを無効にする必要があります。代わりにdnsmasqを使用します。 DNSサービス(Yandex.DNS / SkyDNS / AdGuard DNS)をクライアントに個別に割り当てる機能は失われますが、必要に応じてdnsmasq設定でグローバルに使用できます。

1.ルーターに必要なソフトウェアをインストールする


 opkg update opkg install mc tor tor-geoip bind-dig cron dnsmasq-full ipset iptables 

mc-真夜中の司令官ファイルマネージャー。 便利なmceditエディターのためだけに必要です。 別のテキストエディタの使用に慣れている場合は、mcをインストールできません。
tor -Torサービス。
tor-geoip -Torのgeo-IPデータベース。
bind-dig -DNSクライアント(nslookupとホストのアナログ)。
cron-タスクスケジューラ。
dnsmasq-full -DNSサーバー。
ipsetおよびiptablesipsetおよびiptablesコンソールユーティリティです(おそらくシステム上にすでに存在し、必要ではないので、セキュリティのために追加しました)。

2. ipsetの初期化、複数のブロック解除IPアドレスの作成(100-ipset.sh)


ルーターシステムが多くのハッシュをサポートしていることを確認します:net

 ipset create test hash:net 

チームがエラーやメッセージを出さなかった場合、サポートがあり、さらに指示に従ってください。 それ以外の場合(エラーがある)、次のスクリプトでは、 hash:nethash:ipに置き換える必要があります。 この場合、範囲とCIDRのロックを解除する機能が失われます。

ルータの起動時にブロック解除と呼ばれる空のアドレスセットを作成します。 これを行うには、ファイル/opt/etc/ndm/fs.d/100-ipset.shを作成します。

 mcedit /opt/etc/ndm/fs.d/100-ipset.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh [ "$1" != "start" ] && exit 0 ipset create unblock hash:net -exist exit 0 

バッファから貼り付けるには、Shift + Insertを使用し、保存-F2、終了-F10を使用します。

実行権を与える:

 chmod +x /opt/etc/ndm/fs.d/100-ipset.sh 

3. Torのセットアップ


Tor構成ファイルの内容を削除します。

 cat /dev/null > /opt/etc/tor/torrc 

Tor構成ファイルを開きます。

 mcedit /opt/etc/tor/torrc 

内容を貼り付け(Shift + Insert):

 User root PidFile /opt/var/run/tor.pid ExcludeExitNodes {RU},{UA},{AM},{KG},{BY} StrictNodes 1 TransPort 192.168.0.1:9141 ExitRelay 0 ExitPolicy reject *:* ExitPolicy reject6 *:* GeoIPFile /opt/share/tor/geoip GeoIPv6File /opt/share/tor/geoip6 DataDirectory /opt/var/lib/tor 

必要に応じて、 192.168.0.1をルーター(LAN)の内部アドレスに置き換えます。 簡単な構成の説明:


4.ロックをバイパスするためのドメインのリスト(だけでなく)(unblock.txt)


unblock.txtはロックを解除する簡単なリストです。 ドメイン、IPアドレス、範囲、またはCIDRのロックを解除できます。 1行-1要素。 空行(スペースとタブを含む)は無視されます。 行の先頭に#文字を使用して、無視することができます。

ファイル/opt/etc/unblock.txtを作成します。

 mcedit /opt/etc/unblock.txt 

各行には、ドメイン名、IPアドレス、範囲、またはCIDRを含めることができます。 #文字を使用して、行にコメントを付けることができます。

これが私の個人用ファイルの例です
 ###- rutracker.org rutor.info rutor.is mega-tor.org kinozal.tv nnm-club.me nnm-club.ws tfile.me tfile-home.org tfile1.cc megatfile.cc megapeer.org megapeer.ru tapochek.net tparser.org tparser.me rustorka.com uniongang.tv fast-torrent.ru ###    rezka.ag hdrezka.ag hdrezka.me filmix.co filmix.cc seasonvar.ru ### lib.rus.ec flibusta.is flibs.me flisland.net flibusta.site ### telegram.org tdesktop.com tdesktop.org tdesktop.info tdesktop.net telesco.pe telegram.dog telegram.me t.me telegra.ph web.telegram.org desktop.telegram.org updates.tdesktop.com venus.web.telegram.org flora.web.telegram.org vesta.web.telegram.org pluto.web.telegram.org aurora.web.telegram.org 149.154.160.0/20 91.108.4.0/22 91.108.8.0/22 91.108.12.0/22 91.108.16.0/22 91.108.56.0/22 109.239.140.0/24 67.198.55.0/24 ### 7-zip.org edem.tv 4pna.com 2019.vote ### Tor check.torproject.org ###   IP ( #   ) #195.82.146.214 ###   CIDR ( #   ) #103.21.244.0/22 ###    ( #   ) #100.100.100.200-100.100.100.210 


5.ドメインの特定のリストのブロック解除IPアドレスのセットを入力するスクリプト(unblock_ipset.sh)


スクリプト/opt/bin/unblock_ipset.shを作成します。

 mcedit /opt/bin/unblock_ipset.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh until ADDRS=$(dig +short google.com @localhost) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}') if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi dig +short $line @localhost | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}' done < /opt/etc/unblock.txt 

実行権を与える:

 chmod +x /opt/bin/unblock_ipset.sh 

スクリプトは非常にシンプルで、それがその作業の本質です... google.comドメイン解決が機能するのを待っています(これが行われない場合、ルーターがまだ初期化処理中であるため、ルーターの起動時に多くのブロック解除が行われません)。 unblock.txtファイルの行を読み取ります。 読み取り行は、先頭と末尾のスペースとタブを自動的に削除します。 空の行をスキップします。 #文字で始まる行をスキップします。 CIDRのラインを探しています。 CIDRが見つかったら、それをブロック解除に追加します。 範囲の範囲を探しています。 見つかった場合は、ブロック解除に追加します。 文字列でIPアドレスを探しています。 IPが見つかった場合、それをブロック解除に追加します。 掘って行を解決しましょう。 結果のすべてのIPアドレスがブロック解除に追加されます。

6.ドメインの特定のリストから追加のdnsmasq構成ファイルを生成するためのスクリプト(unblock_dnsmasq.sh)


スクリプト/opt/bin/unblock_dnsmasq.shを作成します。

 mcedit /opt/bin/unblock_dnsmasq.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq done < /opt/etc/unblock.txt 

実行権を与える:

 chmod +x /opt/bin/unblock_dnsmasq.sh 

スクリプトは非常に単純です。 /opt/etc/unblock.txtから行を順番に読み取ります。 読み取り行は、先頭と末尾のスペースとタブを自動的に削除します。 空の行をスキップします。 #で始まる行をスキップします。 IPアドレス(IPまたはCIDR)を含む行をスキップします。 ドメイン名を持つ文字列のみに関心があります。 ファイル/opt/etc/unblock.dnsmasqに、「ipset = / domain_name / unblock」という形式の行を追加します。 これは、特定のドメインのIPアドレスを決定した後、それらが自動的にブロック解除セットに追加されることを意味します。

必ずスクリプトを実行して、unblock.dnsmasqファイルを生成してください。

 unblock_dnsmasq.sh 

unblock.dnsmasqファイルが作成されたことを確認します。

 cat /opt/etc/unblock.dnsmasq 

7.ドメインのリストを編集した後のシステムの手動強制更新用スクリプト(unblock_update.sh)


スクリプト/opt/bin/unblock_update.shを作成します。

 mcedit /opt/bin/unblock_update.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh ipset flush unblock /opt/bin/unblock_dnsmasq.sh /opt/etc/init.d/S56dnsmasq restart /opt/bin/unblock_ipset.sh & 

実行権を与える:

 chmod +x /opt/bin/unblock_update.sh 

8.ルーターの起動時に一連のブロック解除を自動的に設定するスクリプト(S99unblock)


スクリプト/opt/etc/init.d/S99unblockを作成します。

 mcedit /opt/etc/init.d/S99unblock 

内容を貼り付け(Shift + Insert):

 #!/bin/sh [ "$1" != "start" ] && exit 0 /opt/bin/unblock_ipset.sh & 

実行権を与える:

 chmod +x /opt/etc/init.d/S99unblock 

9.宛先がunblockからTorへのパケットの転送(100-redirect.sh)


これを行うには、ファイル/opt/etc/ndm/netfilter.d/100-redirect.shを作成します。

 mcedit /opt/etc/ndm/netfilter.d/100-redirect.sh 

内容を貼り付け(Shift + Insert):

 #!/bin/sh [ "$type" == "ip6tables" ] && exit 0 if [ -z "$(iptables-save 2>/dev/null | grep unblock)" ]; then ipset create unblock hash:net -exist iptables -w -t nat -A PREROUTING -i br0 -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141 fi exit 0 

手順2 hash:netではなくhash:ipを使用した場合、hash:netをhash:ipに置き換えます。実際、2つのステップからブロック解除のセットを作成する機能をさらに複製します。これは、fs.dからのスクリプトがまだ実行を開始しておらず、スクリプトnetfilter.dが既に実行されている場合、セキュリティのために必要です。ブロック解除が以前に作成されていても問題ありません。コマンドは単に無視されます。同じファイルに(これはオプションです)を追加して、外部ポート53へのすべての要求を自分にリダイレクトできます。これは、ローカルネットワーク上のクライアントがサードパーティのDNSサービスを使用しないようにするために必要です。要求は通常のDNSサーバーを通過します。最後の出口の前に、次を追加します。



 if [ -z "$(iptables-save 2>/dev/null | grep "udp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p udp --dport 53 -j DNAT --to 192.168.0.1 fi if [ -z "$(iptables-save 2>/dev/null | grep "tcp \-\-dport 53 \-j DNAT")" ]; then iptables -w -t nat -I PREROUTING -i br0 -p tcp --dport 53 -j DNAT --to 192.168.0.1 fi 

必要に応じて、192.168.0.1をルーター(LAN)の内部アドレスに置き換えます。

実行権を与える:

 chmod +x /opt/etc/ndm/netfilter.d/100-redirect.sh 

10. dnsmasqを構成し、dnsmasqに追加の構成ファイルを添付する


dnsmasq構成ファイルの内容を削除します。

 cat /dev/null > /opt/etc/dnsmasq.conf 

dnsmasq構成ファイルを開きます。

 mcedit /opt/etc/dnsmasq.conf 

内容を貼り付け(Shift + Insert):

 user=nobody bogus-priv no-negcache clear-on-reload bind-dynamic listen-address=192.168.0.1 listen-address=127.0.0.1 min-port=4096 cache-size=1536 expand-hosts log-async conf-file=/opt/etc/unblock.dnsmasq server=8.8.8.8 

必要に応じて、192.168.0.1をルーター(LAN)の内部アドレスに置き換えます。

11.ブロック解除セットの内容を定期的に更新するタスクをcronに追加します


これは、プログラム/デバイスが独自の解決方法を使用し、ドメインIPアドレスが変更された場合の追加保険です。必要なことは、必要な頻度でunblock_ipset.shスクリプトを実行することだけです。たとえば、午前6時に毎日起動します。

エディターでファイル/ opt / etc / crontabを開きます

 mcedit /opt/etc/crontab 

最後に追加:

 00 06 * * * root /opt/bin/unblock_ipset.sh 

必要に応じて、他のすべてのテンプレートタスクをコメント化できます。crontabファイルは次のようになります。



12.通常のDNSサーバーの無効化とルーターの再起動


Keenetic Router CLIに接続します(「SSHサーバー」コンポーネントがシステムに追加されている場合、Telnetのポート23とSSHのポート22)。

コマンドを実行します:

 opkg dns-override system configuration save system reboot 

ファームウェアに組み込まれたDNSサーバーはオフになり、代わりにEntwareのdnsmasqが使用されます。起動時のルーターは、optフォルダーがマウントされているかどうかを確認します(EntwareのUSBフラッシュドライブ/ドライブがあります)。存在する場合、通常のDNSサーバーは使用されません。そうでない場合は、使用されます。つまりフラッシュドライブを取り外してルーターを再起動すると、前と同じように(セットアップする前に)すべてが機能します。

再起動後、ブラウザでcheck.torproject.org Webサイトを開きます(unblock.txtに追加する必要があります)。すべてを正しく行った場合、「おめでとうございます。」という碑文が表示されます。このブラウザーはTorを使用するように構成されています。 ":




構成後のエラーを診断するための基本的な方法


サイトcheck.torproject.org(unblock.txtに追加する必要があります)でのチェックに合格しても、プロバイダーからのスタブが他のリソースに対して開かれている(または開かない)場合、プロバイダーはDNSトラフィックに干渉し、回答を置き換えます- DNSクエリのフィルタリングをさらにバイパスする必要があります。

構成後に何かが正常に機能しない場合は、簡単なコマンドを使用して問題のステップを特定します。

ブロック解除セットの内容を表示します。

 ipset list unblock 

システムがそのようなセットがないことを報告する場合、エラーはステップ2にありますまたはシステムのNetfilterモジュールを有効にしませんでした(Keneticの場合)。

セットが空であることが判明した場合、unblock_ipset.shスクリプトは機能していなかったため、S99unblock起動スクリプトで起動する必要があります。このunblock_ipset.shスクリプトを手動で実行します。セットがいっぱいの場合、エラーはステップ8にあります。スクリプトを実行できない場合(google.comの解決を待機している可能性が高い)、エラーはDNSサーバー側のどこかにあります。おそらくステップ10または6

です。iptablesでリダイレクトを確認します:

 iptables-save 2>/dev/null | grep unblock 

存在しない場合、エラーはステップ9に

ありますすべてのサイトがまったく機能しない場合、つまり DNSは機能せず、エラーはステージ6または10のどこかにあります。おそらく、ステージ9に

あります。unblock.txtのすべてのサイトが機能しない(タイムアウトを超過)が、他のすべてが機能する場合、問題はTor側のどこかにある、エラーステージ3で。


プロバイダーによるDNSクエリのフィルタリングの追加バイパス


プロバイダーが、ブロックされたリソースの応答を置き換えることによりDNSトラフィックに干渉する場合、これを回避するのは非常に簡単です。このために、dnscrypt-proxyを使用します。ご希望の場合は、dnscryptをスタブビー(DNS over TLS)に簡単に置き換えることができます。

dnscryptは、unblock.txtにリストされているドメインにのみ使用されます。他のすべてのクエリは、通常のDNSサーバーを通過します。

プロバイダーがDNSクエリをフィルタリングしないことが確実な場合、この追加の構成を行う必要はありません。

上記のロックバイパスを既に設定している必要があります。次の設定は、PadavanとKeenetic OSで同じです。

ルーターに追加のソフトウェアをインストールします。

 opkg update opkg install dnscrypt-proxy2 

dnscrypt-proxy構成ファイルを開きます。

 mcedit /opt/etc/dnscrypt-proxy.toml 

listen_addresses、fallback_resolverを見つけて、パラメーターをキャッシュして変更します。

 listen_addresses = ['127.0.0.1:9153'] fallback_resolver = '77.88.8.8:1253' cache = false 

77.88.8.8:1253は、非標準ポートを持つYandex DNSサーバーアドレスです。dnscrypt-proxyに問題がある場合のバックアップです。

dnscrypt-proxyを実行します。

 /opt/etc/init.d/S09dnscrypt-proxy2 start 

dnscrypt-proxyが機能していることを確認します(応答としてIPアドレスのリストが表示されます)。

 dig +short google.com @localhost -p 9153 

エディターで/opt/bin/unblock_ipset.shスクリプトを開きます

 mcedit /opt/bin/unblock_ipset.sh 

内容を次のものに置き換えます。

 #!/bin/sh until ADDRS=$(dig +short google.com @localhost -p 9153) && [ -n "$ADDRS" ] > /dev/null 2>&1; do sleep 5; done while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue cidr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/[0-9]{1,2}') if [ ! -z "$cidr" ]; then ipset -exist add unblock $cidr continue fi range=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}-[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$range" ]; then ipset -exist add unblock $range continue fi addr=$(echo $line | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}') if [ ! -z "$addr" ]; then ipset -exist add unblock $addr continue fi dig +short $line @localhost -p 9153 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | awk '{system("ipset -exist add unblock "$1)}' done < /opt/etc/unblock.txt 

小さな変更を加えました-解決のための掘りは通常のDNSサーバーを使用せず、ポート9153のdnscrypt-proxyを使用します。エディター

/opt/bin/unblock_dnsmasq.shスクリプトを開きます

 mcedit /opt/bin/unblock_dnsmasq.sh 

内容を次のものに置き換えます。

 #!/bin/sh cat /dev/null > /opt/etc/unblock.dnsmasq while read line || [ -n "$line" ]; do [ -z "$line" ] && continue [ "${line:0:1}" = "#" ] && continue echo $line | grep -Eq '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' && continue echo "ipset=/$line/unblock" >> /opt/etc/unblock.dnsmasq echo "server=/$line/127.0.0.1#9153" >> /opt/etc/unblock.dnsmasq done < /opt/etc/unblock.txt 

小さな変更を加えました-unblock.dnsmasqファイルを生成するときに、「server = / domain_name / 127.0.0.1#9153」のような行が追加されました。これは、リストからのドメインの解決がdnscrypt-proxyを介して行われることを意味します。

unblock_update.shを実行します。

 unblock_update.sh 

できた複雑な設定はすべて遅れています。ここで、必要に応じてunblock.txtリストを編集し、そこからドメインまたはIPアドレスを追加または削除してロックを解除し、unblock_update.shコマンドを使用して変更を有効にします。

更新04/01/2019多くの場合、記事には一般的な質問を含む個人的なメッセージがあります。ここで最も一般的な答えをします。

.onionドメインゾーンサイトを利用可能にする方法は?

torrcに追加:
 VirtualAddrNetwork 10.254.0.0/16 DNSPort 127.0.0.1:9053 AutomapHostsOnResolve 1 

オニオンゾーンのすべてのドメインにアクセスするには、dnsmasq.confに追加します。
 server=/onion/127.0.0.1#9053 ipset=/onion/unblock 

オニオンゾーンのすべてのドメインではなく、特定のドメインのみへのアクセスを開きたい場合は、dnsmasq.confに次のエントリを追加します。
 server=/rutorc6mqdinc4cz.onion/127.0.0.1#9053 ipset=/rutorc6mqdinc4cz.onion/unblock server=/nnmclub5toro7u65.onion/127.0.0.1#9053 ipset=/nnmclub5toro7u65.onion/unblock server=/flibustahezeous3.onion/127.0.0.1#9053 ipset=/flibustahezeous3.onion/unblock 


ルーターで実行されているVPNサーバーのクライアントのロックをバイパスする方法

torrcで、行をTransPortに置き換えます。
 TransPort 0.0.0.0:9141 

必要なインターフェイス(インターフェイス-VPNネットワークインターフェイス)で追加のリダイレクトを追加します。
 iptables -t nat -A PREROUTING -i  -p tcp -m set --match-set unblock dst -j REDIRECT --to-port 9141 

Source: https://habr.com/ru/post/J428992/


All Articles