海外経由でWebサイトに接続する方法

■ 課題

どうもこんにちは。HATです。

どうも最近、界隈では VPN を使おうという意見が散見されております。某社からは直に「VPNならうちに接続できて安心ですよ」とお勧めされる始末です。何に使うのかは知りませんが日本からは接続したくないらしいです。海外経由で接続したいとか。

しかし安易に VPN を使用して良いものなのでしょうか。私は元々エンジニアでしたので、ちょっと待ったをかけたいと思いました。

■ VPN vs Proxy

海外経由で接続するメジャーな方法として、VPN や Proxy という技術があります。これらを比較した良い記事を探してみたものの、どうもVPN業者のアフィ目的の偏向記事ばかり見つかるので、ここで比較・解説します。

1. VPN

VPN とは virtual private network の略で、ざっくり言えば拠点間を一つのネットワークにあるかのように扱う技術です。例えば企業の本社・支社間でネットワークを接続する場合に使ったりします。最近は在宅勤務で使っている人も多いかもしれません。

しかし考えてみてください。一つのネットワークになるということは、自宅のネットワークが全てVPN業者から見えるということです。そしてインターネットの出口はVPN業者になるためすべての通信がVPNを経由します。そのため、大事な通信まで見られてしまう可能性があります。例えばメールや銀行の通信までVPNを経由しますし、自宅でファイルを共有していればファイルが丸見えになります。このように大変注意する必要がある仕組みとなっています。

2. Proxy (プロキシ)

Proxyとは代理の意味で、ざっくり言えば中継サーバを経由して接続する技術です。様々な用途があるのですが、例えば企業では社員がどんなサイトに接続しているか記録・制限するために利用したり、頻繁にアクセスするサイトのファイルを保存して表示の高速化などに利用されています。

この方法のメリットは比較的軽いため通信速度が速くなることと、サイトごとの制御ができる点です。デメリットは認証系がスマホに不向きでめんどくさいことと、Proxy単体では通信が暗号化されないことです。

画像2

まとめ

まとめると以下のようになります。

画像3

さてどちらが良いかという結論ですが、私は断然 Proxy を推奨します。

・すべての通信がVPN経由というのはリスクが高すぎる
・多くのサイトはHTTPSによりEnd-to-Endで暗号化されるため盗聴リスクは低い
・必要なサイトだけProxy(海外)経由にできる

などが理由です。VPNも用途によっては使い勝手は良いのですが、上記の通りすべての通信が VPN 業者に流れてしまいますのでセキュリティリスクが非常に高いのです。そのため私は Proxy を使った方が良いと判断します。

■ Proxyサーバを作ろう

さて、Proxy を使った方が良いと言いましたが公開されている Proxy はダメです。公開 Proxy は素人とハッカーの温床となっており、逆にセキュリティが下がってしまいます。そのため、自分専用の Proxy を作る必要があります。

とはいえ、自分で作ってくださいと言ったところで誰でも作れるわけではないですし、適当に作ると大変なことになるので、責任持って作り方を解説します。ここではVultrという有名なレンタルサーバを利用します。月5ドル程度で済みます。ビットコイン払いもできますが手数料2割ほど取られます。

1. Vultrにアクセスしてアカウント登録

以下のリンクからアクセスしてください。カード登録まですると100ドルがもらえるらしいです(使用期限1ヵ月)。なお、このnoteでは格安サーバを勧めるので私はアフィ報酬を貰えません。残念。

2. サーバを作成します

ログイン→Products→+ボタン→Deploy New Server

画像4

3. サーバ設定を入力します

Choose Server: Cloud Compute
Server Location: Singapore (好きな国)
Server Type: CentOS 7x64 Without SELinux
Server Size: 25GB SSD

画像5

4. スクリプトを設定

Additional Features に Startup Script があるので、Add New をクリック

画像12

5. スクリプトを張り付け・編集

以下のスクリプトを貼り付け、スクリプト名を設定し、以下のパラメーターを書き換えます。このスクリプトは Proxy サーバを一発で作ります。

PROXY_USER:ログイン時のユーザ名(わかりやすいもので)
PROXY_PASS:ログイン時のパスワード(ランダムなものを)
 http://www.graviness.com/temp/pw_creator/
YOUR_NET:自宅の固定IPアドレス(分からない場合は以下のサイトから)
 https://www.ugtop.com/spill.shtml
SITE1~3:自分がアクセスしたいサイトのドメインを入力。後方一致でよいです。
 例:www.google.com → google.com で指定
 ※もしサイトを増やしたい場合は dnsDomainIs の行を増やしてください。

#!/bin/sh
PROXY_USER=user
PROXY_PASS=yourpass
PROXY_PORT=8810
YOUR_NET=192.168.0.1
SITE1=google.com
SITE2=yahoo.com
SITE3=msn.com

# init
yum clean all
yum update -y

# squid
yum install squid -y
yum install httpd-tools -y
htpasswd -c -b /etc/squid/passwords $PROXY_USER $PROXY_PASS
cp /etc/squid/squid.conf /etc/squid/squid.conf.org

# squid config
cat << EOF > /etc/squid/squid.conf 
acl mynet src $YOUR_NET/32
http_access allow mynet
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED 
http_access allow authenticated
http_port $PROXY_PORT
forwarded_for delete
request_header_access Via deny all
request_header_access Cache-Control deny all
visible_hostname unknown
EOF

squid -z
systemctl enable squid
systemctl start squid
firewall-cmd --add-port=8810/tcp --zone=public --permanent
firewall-cmd --reload

# nginx
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx -y

# nginx config
mkdir /usr/share/nginx/html/pac/
cat << EOF > /usr/share/nginx/html/pac/cryptoproxy.pac
function FindProxyForURL(url, host)
{
 if (dnsDomainIs(host, "ugtop.com") ||
 dnsDomainIs(host, "$SITE1") ||
 dnsDomainIs(host, "$SITE2") ||
 dnsDomainIs(host, "$SITE3"))
   return "PROXY `curl inet-ip.info`:8810";
 else
   return "DIRECT";
}
EOF

sed -i -e "s/# server_tokens off/server_tokens off/g" /etc/nginx/nginx.conf
systemctl enable nginx
systemctl start nginx
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload

こんな感じになります

画像12
終わったらAdd Scriptをクリック

6. サーバ作成

料金を確認し、Deploy Now をクリック

画像9

7. IPアドレスをメモ

しばらく待つとステータスが Running となりサーバが完成するのでIPアドレスをメモ。
ここでは 207.148.74.101 になっています。

画像10

8. OSにプロキシを設定

OSにプロキシを設定していきます。5で指定したサイトに接続する場合にだけプロキシを使用するスクリプトを設定します。Windowsの場合はプロキシ設定を開きます。他のOSの場合は設定方法を調べてください。
https://laboradian.com/proxy-setting-of-win10/

セットアップスクリプトを使う:オン
スクリプトのアドレス:http://[7でメモしたIPアドレス]/pac/cryptoproxy.pac
 例:http://207.148.74.101/pac/cryptoproxy.pac

画像11

保存ボタンをクリックして完了

9. 動作確認

これで一通りの設定が終わりましたので動作確認をしていきます。

以下のサイトにアクセスします。IPアドレスがメモしたIPアドレスとなっていることを確認します。
https://www.ugtop.com/spill.shtml

画像12

10. 完了

以上で完了です。

■ モバイル通信の場合

途中で PROXY_USER と PROXY_PASS を登録したと思いますが、これは接続元の IPアドレスが変わった場合に利用するためのものです。例えば自宅ネットワークのIPが頻繁に変わったり、外出先でスマホで利用するために設定しています。

スマホにProxyを設定する場合は以下のサイトなどを参考にしてください。ただし、Androidのモバイル通信(4G)の場合は自動構成スクリプトが使用できないため、全通信がProxy経由になります。一部のアプリでは海外経由のアクセスが拒否されて問題が出るので注意してください。

Android (Wifi)の場合:
1. デバイスの設定アプリを開きます。
2. [ネットワークとインターネット] 次に [Wi-Fi] をタップします。
3. ネットワークをタップします。
4. 画面上部の編集アイコン 編集 次に [詳細設定] をタップします。
5. [プロキシ] の下にある下矢印 下矢印 をタップします。構成タイプを選択します。
6. 必要に応じて、プロキシ設定を入力します。
7. [保存] をタップします。
参考:https://support.google.com/android/answer/9654714?hl=ja

Android (4G)の場合:
設定 → モバイルネットワーク → アクセスポイント名 → 使っているアクセスポイント」から「プロキシ」(プロキシIP)と「ポート」で設定できます。

画像13

iOSの場合:
よく知らないので以下参照
参考:https://support.apple.com/ja-jp/guide/mdm/mdmb27492e34/web

Webブラウザを開くと認証画面が表示されますので、登録したユーザ名とパスワードを入力すると Proxy を利用できます。

参考画面:

画像12

■ まとめ

いかがでしたでしょうか。
サーバ作成というとハードルが高く感じたかもしれませんが、案外簡単にできたと思います。なお、この記事は海外取引所の利用を推奨するものではありません。あくまでセキュリティリスクを指摘しておりますので勘違いしないようにお願いいたします。もし面白いなと思いましたら高評価・チャンネル登録お願いします(なに)



この記事が気に入ったらサポートをしてみませんか?