
2枚のネットワークカードを搭載した古い(またはそうではない)コンピューターをお持ちですか? あなたはロックをバイパスするための広告と余分な体の動きにうんざりしていませんか? これに我慢したくない? それから猫にようこそ。
目的
追加設定なしでローカルネットワーク内のクライアントが制限なしにインターネットで動作するように、インターネットゲートウェイを構成します。 ブロックされたサイトへのアクセスはtorを介して行われ、残りは通常のインターネット接続を介して行われます。 通常のサイトについては、ブラウザから.onionリソースにアクセスします。 ボーナスとして、トーラス(ロシア連邦のユーザーの機能を制限するサイト)を介して、広告ドメインのブロックと条件付きでブロックされたサイトへのアクセスを設定します。 私のインターネットプロバイダーは、
あなたがしゃっくり 、DNSクエリを傍受し、アドレスを偽装します(つまり、禁止サイトを解決するときに、そのスタブのアドレスを返します)。そのため、すべてのDNSクエリをトーラスに送信します。
警告以下で説明することはすべて、ロックのバイパスに役立ちますが、匿名性は提供しません。 すべての言葉から。
アイデアと実装方法は
ここと
ここから取っ
た 。 これらの記事の著者に感謝します。
行きましょう
初期段階では、2つのネットワークインターフェイスを備えたコンピューターにOS(私の場合はUbuntuサーバー16.04)が既にインストールされていると想定されています。 そのうちの1つ(私にとってはppp0)はプロバイダーに向かっており、2番目(私にとってはenp7s0)はLANに向かっています。 ゲートウェイの内部IPは192.168.1.2です。 LAN 192.168.1.0/24。
ネットワーク上には十分な情報があるため、この記事ではこの段階へのアプローチ方法については考慮していません。 pppoeconfユーティリティを使用してプロバイダへのpppoe接続を設定するのが便利だとしか言えません。
準備段階
私のように、n {e | oy} tbukを使用する場合、おそらく蓋を閉じたときに眠らないようにしたいでしょう。
sudo nano /etc/systemd/logind.conf
HandleLidSwitch=ignore
カーネルでの転送を許可します。 IPv6を無効にしました。
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1 # IPv6 disabled net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1
再起動せずに変更を適用します。
sudo sysctl -p
DHCPセットアップ
クライアントが自分で自動的に構成するようにしたいので、DHCPサーバーなしではできません。
$ sudo apt install isc-dhcp-server $ sudo nano /etc/dhcp/dhcpd.conf
ファイルをほぼこの形式にします。
default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.2; option domain-name-servers 192.168.1.2, 8.8.8.8; option broadcast-address 192.168.1.255; }
説明subnet 192.168.1.0 netmask 255.255.255.0-ネットワークとマスクを定義し、
範囲192.168.1.100 192.168.1.200; -サーバーによって発行されるアドレスの範囲、
オプションルーター192.168.1.2; -ゲートウェイアドレス
option domain-name-servers 192.168.1.2、8.8.8.8; -DNSサーバーアドレス
option broadcast-address 192.168.1.255; -ブロードキャストアドレス。
サーバーを再起動します
sudo /etc/init.d/isc-dhcp-server restart
TOR設定
設定をインストールして開きます。
$ sudo apt install tor $ sudo nano /etc/tor/torrc
行を追加
# onion # . . VirtualAddrNetworkIPv4 10.0.0.0/8 # DNS AutomapHostsOnResolve 1 # DNS TransPort 0.0.0.0:9040 DNSPort 0.0.0.0:5353 # ExcludeExitNodes {RU}, {UA}, {BY}
DNSセットアップ
広告のブロックが不要な場合、この項目は省略できます。 トーラスのDNSのみを使用する場合は、
DNSPort 0.0.0.0:53行を
/ etc / tor / torrcファイルに
追加します。
しかし、広告をカットします。つまり、設定を開いて設定します
$ sudo apt install bind9 $ sudo nano /etc/bind/named.conf.options
ファイルを次のフォームに持ち込みます
options { directory "/var/cache/bind"; forwarders { 127.0.0.1 port 5353; }; listen-on { 192.168.1.2; 127.0.0.1; }; dnssec-validation auto; auth-nxdomain no; listen-on-v6 { none; }; };
プロバイダーがDNSクエリを使用しない場合、他のDNSサーバーにトラフィックを誘導できます。 たとえば、Googleサーバーの場合:
forwarders { 8.8.8.8; 8.8.4.4; };
理論的には、トーラスよりも速く動作するはずです。
少し後で、さらにDNS構成に戻ります。 今のところこれで十分です。 サービスを再起動します。
sudo /etc/init.d/bind9 restart
iptablesのセットアップ
すべての魔法はここで作成されます。
アイデアの本質- トーラスを通過するIPアドレスのリストを作成します。
- これらのアドレスへのリクエストを透過プロキシトーラスでラップします。
- DNSトーラス上の.onionリソースにDNSクエリをラップします
- .onionゾーンから名前を解決する場合、トーラスは10.0.0.0/8サブネット(TOPのセットアップ時に指定した)からIPアドレスを返します。 もちろん、このゾーンはインターネット上でルーティングされないため、このサブネットへの呼び出しを透過プロキシトーラスでラップする必要があります。
叙情的な余談最初は、DNSクエリをiptablesの.onionにリダイレクトせずにできると思っていました。 要求をDNSトーラスにリダイレクトし、10番目のゾーンからアドレスを返すようにバインドを構成することが可能です。 このように設定できませんでした
forwarders { 127.0.0.1 port 5353; };
127.0.0.1ポート5353上のフォワーダーとの別個のゾーン.onionの割り当てだけでなく、望ましい結果にもつながりません。
誰かがこれがなぜ起こるか、そしてそれを修正する方法を知っているなら、コメントに書いてください。
iptablesは既にインストールされていると思います。 ipsetをインストールします。 このユーティリティを使用して、ブロックされたアドレスのリストを管理し、透過プロキシトーラスでパケットをラップできます。
sudo apt install ipset
次に、ルートの下から順にiptables設定コマンドを実行します。 もちろん、インターフェイス名とアドレスを独自のものに置き換える必要があります。 これらのコマンドは、
exit 0の前に/etc/rc.localに配置し、ロード後に毎回実行されます。
再起動後、次のようなゲートウェイを取得する必要があります。
- IPアドレスとネットワーク設定をクライアントに提供します。
- インターネットを配布します。
- DNSトーラスを介して名前を解決します。
- .onion名を解決し、通常のブラウザを介してこれらのリソースにアクセスできるようにします。
- 着信接続から私たちを閉じます。
ブラックリストを作成してルーティングを構成したにもかかわらず、ブラックリスト自体はまだ空であるため、ロックのバイパスはまだありません。 それを修正する時が来ました。
ブラックリストに記入する
スクリプトが置かれるディレクトリを作成します。
スクリプトを作成する
スクリプトを実行可能にする
my-blacklistファイルを作成します。これは、将来、トーラスを通過するリソースを手動で入力します。
スクリプトを実行します
スクリプトは長い間機能します。忍耐強くてください。 これで、
フライバストが開き、ブロックされたサイトが機能するはずです。 /etc/rc.localをファイルの末尾に追加しますが、
終了0の前に追加します
広告フィルターをカスタマイズする
アイデアの本質- マイクロHTTPサーバーをインストールして起動します。このサーバーは、ポート80をリッスンし、1つの透明ピクセルを含むpng画像をリクエストに返します。
- 広告ドメインのリストを取得します。
- バインドを権限のあるサーバーとして構成します。
- HTTPサーバー上の広告ドメインに対するすべてのリクエストを素晴らしい画像でラップします。
始めましょう。 北に行こう。 ファイルを作成する
実行可能にする
サーバー初期化ファイルを作成する
実行可能にし、サービスを登録し、httpサーバーを実行します
広告ドメインを更新するためのスクリプトを作成します
コンテンツ付き
実行可能にします
そして実行する
ゾーンファイルを作成する
次の内容で
$TTL 86400 ; one day @ IN SOA ads.example.com. hostmaster.example.com. ( 2014090102 28800 7200 864000 86400 ) NS my.dns.server.org A 192.168.1.2 @ IN A 192.168.1.2 * IN A 192.168.1.2
ファイルに追加
行
include "/etc/bind/named.ad.conf";
変更を適用
rndc reload
起動時にドメインのリストを更新するように構成します。 これを行うには、ファイル/etc/rc.localを開き、スリープ後に追加します60
/var/local/blacklist/ad-update.sh
最後の仕上げ
リストを定期的に更新するには、ファイルを作成します
次の内容で
#!/bin/bash # /var/local/blacklist/ad-update.sh # . . /var/local/blacklist/blacklist-update.sh
実行可能にします
。
Ubuntuのデスクトップバージョンのユーザー向けの注意
目標はクライアント設定を必要としないゲートウェイを作成することだったという事実にもかかわらず、私の場合はそうではないことが判明しました。 動作するオペレーティングシステムとして、デスクトップUbuntu 16.04を使用します。 ネットワークを設定するには、NetworkManagerユーティリティを使用します。これは、サーバーDNアドレスがDHCPサーバーから取得されず、127.0.1.1:53に設定されるようにデフォルトで設定されています。 Dnsmasqはこのポートでハングし、既知のルールによってのみ名前を解決します。 通常の生活では、これは干渉せず、私たちの場合、.onionゾーンが完全に機能しなくなります
これを修正するには、/ etc / NetworkManager / NetworkManager.confファイルの行をコメント化する必要があります
dns=dnsmasq
そのように
#dns=dnsmasq
再起動後、すべてが機能します。
拘留されていない場合の拘留
Androidのクライアントは、追加設定なしで正常に動作します。
Windowsは使用しなかったためチェックしませんでしたが、問題はないはずです。
firefoxとiOの制限については、
こちらをご覧ください。混chaとしたプレゼンテーションをおaび申し上げます。 追加、修正、コメントを歓迎します。
ご清聴ありがとうございました。
2017年9月3日現在の更新。労働者の要請により、
彼の設定をgithubに投稿し
ました 。
設定は参照情報として提供されます。 箱から出してすぐに、彼らは100%に近い確率であなたに合いません。 カスタマイズが必要です。