人気のあるfriGateのようなロックをバイパスするためのプラグインは誰にとっても良いものですが、1つの欠点があります。 広告を組み込み、将来、インターネット上で行うすべてを追跡するのが好きです。
VPNには欠点があります。すべてのトラフィックがリモートサーバーを通過するか、複雑なルーティングルールを構成する必要があります。
常に眠りに落ち、ラップトップを起動するsshトンネルは、毎回再起動する必要があります。
autosshのようなソリューションがありますが、真の完璧主義者を満足させることはできません。
完全に管理されているサービスを使用して、friGateと同様の利便性を実現してみましょう。
Linux / FreeBSD(私はUbuntuを使用しました)、ドメイン、letsencrypt、squid、およびPACファイルの魔法を備えた専用サーバーが必要です。
ホストまたはここから無料のドメインレベル3を取得できます: freedomain.co.nr 、 registry.cu.cc 。
Squidは、 ブラウザーへの暗号化された接続をサポートしています-この場合に必要なものです。
この機会は、なんらかの理由で一般にはほとんど知られていないため、この投稿が掲載されました。
SSLサポート付きのSquidをインストールする
Ubuntuでは、squidは必要なキーのサポートなしで構築されます(--enable-ssl)
別の配布キットがあり、これで問題ない場合(squid3 -v | grep -E --color "(ssl | tls)"コマンドを実行して確認できます)-次の項目に直接移動します。
そして、Ubuntu用の独自のパッケージを作成します( この手順が使用されました)。
sudo apt-get install devscripts build-essential fakeroot libssl-dev apt-get source squid3 sudo apt-get build-dep squid3
次のパッチを適用します。
--- squid3-3.3.8/debian/rules 2013-11-15 11:49:59.052362467 +0100 +++ squid3-3.3.8/debian/rules.new 2013-11-15 11:49:35.412362836 +0100 @@ -19,6 +19,8 @@ DEB_CONFIGURE_EXTRA_FLAGS := --datadir=/usr/share/squid3 \ --sysconfdir=/etc/squid3 \ --mandir=/usr/share/man \ + --enable-ssl \ + --enable-ssl-crtd \ --enable-inline \ --enable-async-io=8 \ --enable-storeio="ufs,aufs,diskd,rock" \
eng
Squid Proxyのソースコード内の1つのファイルも調整する必要があります(src / ssl / gadgets.cc)。 この変更は、最新のFirefoxブラウザでHTTPSフィルタリングを行うときに通常発生するFirefoxエラーsec_error_inadequate_key_usageを防ぐために必要です。 Google Chrome、Microsoft Internet Explorer、またはApple Safariのみを使用する場合、この手順は不要です。
--- squid3-3.3.8/src/ssl/gadgets.cc 2013-07-13 09:25:14.000000000 -0400 +++ squid3-3.3.8/src/ssl/gadgets.cc.new 2013-11-26 03:25:25.461794704 -0500 @@ -257,7 +257,7 @@ mimicExtensions(Ssl::X509_Pointer & cert, Ssl::X509_Pointer const & mimicCert) { static int extensions[]= { - NID_key_usage, + //NID_key_usage, NID_ext_key_usage, NID_basic_constraints, 0
組み立ててインストールします:
cd squid3-3.3.8 && dpkg-buildpackage -rfakeroot -b sudo apt-get install squid-langpack sudo dpkg -i ../squid-common*.deb ../squid_*.deb
letsencrypt.orgを使用して署名付き証明書を取得する
スクリプトをダウンロードします。
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto --help
すでにWebサーバーを実行している場合は、停止します。 letsencryptスクリプトが独自に起動します。
本番環境の場合、Webサーバーを停止せずにドメイン制御を確認できます 。 ドキュメントを参照してください。
証明書を取得します。
./letsencrypt-auto --authenticator standalone --installer apache -d <_.>
成功した場合、pemファイルはディレクトリ/ etc / letsencrypt / live / <our domain> /にあります。
イカのセットアップ
構成-デフォルト、https_portオプションのみを追加
https_port 3129 cert=/etc/letsencrypt/live/example.com/fullchain.pem key=/etc/letsencrypt/live/example.com/privkey.pem
オプション-特定のIPまたはパスワードからのみアクセスするためのacl。
例えば
acl mynet src <__ip>/32
http_access allow mynet
イカを実行する
sudo /etc/init.d/squid3 start
ブラウザで暗号化されたプロキシ接続を教える
Squidのドキュメントに示されているように、FirefoxとChromeでプロキシサーバーとのhttps接続を設定することは最近可能になりましたが、PACファイルのみを使用しています。
Chromeブラウザーは、PACファイルまたはコマンドラインスイッチでプロキシを使用するように構成されている場合、SSL接続を介してプロキシに接続できます。 GUIの設定は(まだ)不可能に見えます。
...
Firefox 33.0ブラウザは、PACファイルでプロキシを使用するように設定されている場合、SSL接続を介してプロキシに接続できます。 GUIの設定は(まだ)不可能に見えます。
PAC(Proxy Auto Configuration)は、ブラウザが各リクエストのプロキシを決定するために実行するJavaScriptファイルです。
次のコードを使用しました。
// encrypted_squid.pac var hosts = 'myip.ru internet.yandex.ru'; var blocked = hosts.split(' '); function FindProxyForURL(url, host) { var shost = host.split('.').reverse(); shost = shost[1] + '.' + shost[0]; for(var i = 0; i < blocked.length; i++) { if( shost == blocked[i] ) return "HTTPS <__FQDN>:3129"; } return "DIRECT"; }
ホストリストのアドレスはテスト用に取得され、必要なアドレスで希釈します;)
ブラウザ設定の対応するフィールドでファイルを接続し(設定->詳細->ネットワーク->設定)、myip.ruの外部アドレスがどのように見えるかを確認し、安定した操作をお楽しみください。
同時に、トラフィックは、hosts行に示されているホストを除き、すべてのホストに直接送信されます。
このpacファイルは、httpを介して接続されたWebサーバーに配置でき、その変更は、ラップトップ、デスクトップ、 さらにはスマートフォンなどのすべてのホストで自動的にプルアップされます。
また、 foxyproxyを使用して、プロキシを介して動作する必要があるホストを、より単純なPACファイルと組み合わせてフィルタリングすることもできます。このリストをブラウザーで直接編集できます。
おわりに
このトピックは、VPN / ssh /サードパーティの拡張機能を使用せずに、ブラウザーで暗号化されたトンネルの概念を実証するためだけに熱心に作成されました。