5分でリモートサーバにプロキシをたててウェブアクセスする

デバッグをしていて、海外からウェブアクセスしたい場合が結構あります。コマンドラインツールだったら、単純にsshでリモートマシンに入って、curlコマンドを打てば良いのですが、jsの実行やグラフィカルなUIのテストをしたい場合は、ブラウザでのアクセスが必要になります。 こういう場合に、リモートにあるマシンにウェブのporxyサーバを立ち上げて、そこ経由でアクセスすることにまります。 proxyサーバはインストールではなく、Pythonスクリプトベースのものがたくさんるので、これを使います。 5分あればセットアップできます。 構成図はこんな感じです。 リモートサーバにPythonのproxyを準備する いろいろあるけど、今回はpython-proxyを使います。 ### リモートマシンのシェル $ pip3 install pproxy $ pproxy -l http://localhost:8899 Serving on localhost:8899 by http sshのポートフォワードで、ローカルのportをリモートのportにトンネルさせる sshのポートフォワードで、ローカルとリモートを繋ぎます。 リモートホスト: 34.95.141.133 ローカルの転送Port: 8080 リモート側の転送ホストとPort: localhost:8899 上記の場合だとこのコマンドでトンネル作成できます。 ### ローカルマシンのシェル $ ssh [email protected] -L 8080:localhost:8899 ... ブラウザでproxy設定をする ローカルのブラウザのproxy設定を以下の通りに変更する。 proxyサーバ: localhost proxy Port: 8080 ブラウザからアクセス この記事で書いた自分のアクセス元のIPロケーションを教えてくれるifconfig.coにアクセスしてみる。 ちゃんとリモートサーバのロケーション情報が返ってきて、proxy経由だとわかる。

February 20, 2022

「どうやって子どもたちにネットを開放していくか」問題

こんばんわ。今回は、Cloudflareが無償で提供しているDNSサービス"1.1.1.1 for Families“を使って、家族が誤って変なサイトに接続しないようにする方法について取り上げます。 家族(子ども)とネット 家庭に子どもができるとインターネット環境へのアクセスを考えることが度々あります。 まず、デバイスから。初めのうちは、TV内蔵のYoutubeを見始めて、次いで、親のスマホをちょっと触り、どんどん「通常」のインターネットに近寄っていきます。ちょっと学校の宿題を調べたいからスマホ使わせてよ。iPadでAmazonの検索を始めるとか。 ここまでくるとやはり心配になります。変なコンテンツ(アダルト・フィッシングサイト)にアクセスしてないか、とかです。Appleとか使っていると、Parental Controlという機能があって、子どもが変な操作したり・コンテンツにアクセスする制限がある程度できるようになっているのですが、あくまでApple系サービスとかに限った話になります。Safariブラウザ開いてでどんなコンテンツにアクセスしているのかとかまでは見てくれません。 そういった問題への一つの対策としてCloudflareが無償で提供しているDNSサービスの"1.1.1.1 for Families"が使えます。 DNSでブロックするサービス “1.1.1.1 for Families” 簡単にいうと、怪しいサイトへアクセスするときに、名前解決時点で「このサイト怪しいのでブロックするぜ」というサービスです。設定方法は簡単で、PCもしくは家庭内のルーターでDNSサーバ(リゾルバ)の設定を以下に設定するだけです。 1.1.1.3 1.0.0.3 # IPv6なら 2606:4700:4700::1113 2606:4700:4700::1003 このDNSを使用しているときに、ブラウザでアダルトサイトにアクセスすると以下のようになります。 以上が概要です。以下、このサービスの仕組みと家庭内のルーターに設定する方法などを見ていきます。 仕組み 先ほど触れた通り、仕組みは名前解決を使用したアクセス制限になります。名前解決とは、インターネットのサイト名(例: www.google.com)からそのサイトのウェブサーバのIPアドレスを調べる仕組みになります。通常インターネットの世界ではIPアドレスで通信を行います。例えば、192.168.1.1とか8.8.8.8などの表記を見かけることがあると思いますが、これがIPアドレスです(今回の例はIP version4というのもので略してIPv4と書きます)。 私の環境からwww.google.comのIPアドレスを調べると、 % dig www.google.com +short 216.58.197.196 となって、216.58.197.196となります。 この、サイト名とIPアドレスの変換をしてくれるのがDNSです。通常、このDNSはデフォルトで使っているプロバイダ(ISP)指定のDNSになっているのですが、今回はそれを上記のCloudFlareが提供するDNSに変更するということになります。 そうすると、普段ネットでどこかのサイトを開くときに、この名前解決のリクエストがCloudFlareのDNS上に届き、このDNS上で「怪しい」もしくは「アダルトサイト」と判断されたサイトの場合にはそのサイトのIPアドレスに変換しない(応答しない)ことでサイトへの接続を遮断してくれるのです。その結果がさっきのスクショになります。 家庭内のルーターへの設定例 家庭内のネット接続では家の中にルーターがあって、そこにプロバイダ指定のDNSがデフォルトで設定されています。私の家だとNuroを契約していて、プロバイダ(Nuroのプロバイダは実質So-net)が送ってきたルーター(ZTE製F660A: 実質レンタル品)に設定方法を書いていきます。他者の場合でもほとんど同じように設定できると思います。 まず、ブラウザでルーターの管理を開きます。大抵192.168.0.1もしくは192.168.1.1になっていることが多いと思います。 このルータの場合、メニューから アプリケーション»DNSサービス»DNS に行くと、DNS設定の項目があるので、上記のDNSを設定します。 もしくは、DNS設定はDHCPという項目に含まれることが多いので、他のルータの場合も探してみてください。 あとは設定ボタンを押せば完了です。設定直後は、PCやタブレット・スマホの場合、一度Wifi・ネットワークをOFFにしてら再度ONにするなどしないとDNS設定が変わらないかもしれません。 テスト テストは簡単です。ブラウザを開いて、怪しいサイトを開いてみれば分かります。サイトの判定は全部CloudFlareがやっています。 誤判定 正規のサイトに行っているのに遮断されることがたまにあります。今まで発見した誤遮断されたサイトとして楽天カードの申込ページなどがありました。まあ、変なサイトにつなぎに行くより(False negative)、正規のサイトに繋ぎに行かない(False positive)方が安全といえば安全かもしれませんが。 その他 上記で詳しく書きませんでしたが、この"1.1.1.1 for Families"には2つのモードがあります。「マルウェアサイトのみをブロック」するモードと「マルウェアサイトとアダルトサイトをブロック」するモードです。違いは設定するDNSサーバのIPアドレスなので、切り替えも簡単です。詳しくは公式サイトのアドレス設定を見てください。 あと、ブロックされるサイトの名前解決クエリに対してどのようなレスポンスが返ってきているのかを見てみましょう。 % dig jp.pornhub.com @1.1.1.3 ; <<>> DiG 9....

May 24, 2020