このチュートリアルでは、Ubuntu16.04で独自のWebプロキシを設定する方法を示します。 Webプロキシは、ユーザーが特定のURLを入力してWebサイトのブロックを解除するWebサイトです。独自のWebプロキシを設定するために使用できるWebプロキシスクリプトは多数あります。 Glype およびPHPプロキシ このチュートリアルで使用されます。 Glype は非常に人気のあるWebプロキシスクリプトであり、 PHP-Proxy 良い選択肢です。そのうちの1つを選択できます。私のテストでは、PHP-Proxyはアクティブに更新されているため、Facebook、Twitter、YouTubeなどの人気のあるWebサイトでより高速で、より適切に機能します。 Apache / Nginxを使用してそれらを設定し、Let’sEncryptを使用してHTTPSを有効にする方法を説明します。
通常、私はShadowsocksプロキシとOpenConnect VPNを使用してインターネット検閲を回避していますが、私の国ではこれら2つのツールがブロックされる可能性があります。 Webプロキシは、SOCKSプロキシとVPNの特性を持たないため、優れたバックアップ方法です。インターネットファイアウォールの観点からは、これは通常のHTTPSトラフィックです。オンラインには何万もの無料のWebプロキシがあります。欠点は、これらのパブリックWebプロキシがよく知られるようになると、簡単にブロックできることです。独自のプライベートWebプロキシを設定すると、その存在を知っているのは自分だけであるという利点があります。
前提条件
このチュートリアルに従うには、次のものが必要です。
- ブロックされたWebサイト(国外またはインターネットフィルタリングシステム)に自由にアクセスできるVPS(仮想プライベートサーバー)とドメイン名。 VPSには、Vultrをお勧めします。月額わずか2.5ドルで512Mメモリの高性能KVMVPSを提供します。これは、プライベートプロキシサーバーに最適です。
- WebサーバーとPHPをインストールします
ドメイン名も必要なので、HTTPS暗号化を追加してWebトラフィックを保護できます。 NameCheapからドメイン名を購入することをお勧めします。これは、価格が低く、whoisのプライバシー保護が一生無料になるためです。
ステップ1:WebサーバーとPHPをインストールする
Ubuntu16.04VPSにSSHで接続します。 NginxをWebサーバーとして使用する場合は、次のコマンドを実行してNginxとPHP7をインストールします。
sudo apt install nginx php7.0-fpm php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
ApacheをWebサーバーとして使用する場合は、
を実行します。sudo apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
ステップ2:GlypeまたはPHP-Proxyをダウンロードする
Glype
次のコマンドを実行してGlypeをダウンロードします。
wget https://www.php-proxy.com/download/glype-1.4.15.zip
/var/www/proxy/
に抽出します ディレクトリ。
sudo apt install unzip sudo mkdir -p /var/www/proxy/ sudo unzip glype-1.4.15.zip -d /var/www/proxy/
www-data
を設定します (Webサーバーユーザー)所有者として。
sudo chown www-data:www-data /var/www/proxy/ -R
PHPプロキシ
Composerを使用してPHP-Proxyをダウンロードできます。 Ubuntu16.04リポジトリからComposerをインストールします。
sudo apt install composer
次に、PHP-Proxyを/var/www/proxy/
にダウンロードします。 ディレクトリ。
sudo mkdir -p /var/www/proxy/ sudo composer create-project athlon1600/php-proxy-app:dev-master /var/www/proxy/
www-data
を設定します (Webサーバーユーザー)所有者として。
sudo chown www-data:www-data /var/www/proxy/ -R
ステップ3:Webサーバーを構成する
このステップでは、Webプロキシ用のNginxサーバーブロックまたはApache仮想ホストを作成する必要があります。
Nginxサーバーブロックの作成
/etc/nginx/conf.d/
の下にサーバーブロックを作成します ディレクトリ。
sudo nano /etc/nginx/conf.d/web-proxy.conf
次の行をコピーしてファイルに貼り付けます。 proxy.example.com
を置き換えます あなたの本当のドメイン名で。 DNSマネージャーにAレコードを設定することを忘れないでください。
server { listen 80; server_name proxy.example.com; root /var/www/proxy/; index index.php; location / { try_files $uri $uri/ /index.php; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } }
ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
Apache仮想ホストの作成
/etc/apache2/sites-avaialable/
にApache仮想ホストを作成します ディレクトリ。
sudo nano /etc/apache2/sites-available/web-proxy.conf
次の行をコピーしてファイルに貼り付けます。 proxy.example.com
を置き換えます あなたの本当のドメイン名で。 DNSマネージャーにAレコードを設定することを忘れないでください。
<VirtualHost *:80> ServerName proxy.example.com DocumentRoot /var/www/proxy ErrorLog ${APACHE_LOG_DIR}/proxy.error.log CustomLog ${APACHE_LOG_DIR}/proxy.access.log combined </VirtualHost>
ファイルを保存して閉じます。次に、この仮想ホストを有効にします。
sudo a2ensite web-proxy.conf
変更を有効にするためにApacheをリロードします。
sudo systemctl reload apache2
Webインターフェイス
次に、proxy.example.com
にアクセスします Webブラウザで。 Glypeを使用している場合は、管理コントロールパネル(proxy.example.com/admin.php
)にリダイレクトされます。 。
PHP-Proxyを使用している場合は、URLの入力を待機しているWebプロキシが機能していることがわかります。
それでは、Let’sEncryptを使用してHTTPSを有効にしましょう。
ステップ4:Webプロキシ用にLet'sEncryptを使用してHTTPSを有効にする
次のコマンドを実行することで、公式PPAからLet’s Encryptクライアント(certbot)をインストールできます。
sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot
Nginx ユーザーは、CertbotNginxプラグインもインストールする必要があります。
sudo apt install python-certbot-nginx
NginxプラグインでHTTPSを有効にします。
sudo certbot --nginx --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
アパッチ ユーザーはCertbotApacheプラグインをインストールする必要があります。
sudo apt install python-certbot-apache
ApacheプラグインでHTTPSを有効にします。
sudo certbot --apache --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
次のエラーメッセージが表示された場合。
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
Let’sEncryptフォーラムのこの投稿をチェックして修正してください。
証明書が正常にインストールされたら、HTTPSを使用するようにWebブラウザでプロキシを更新します。
(オプション)WebプロキシをCDNの背後に配置する
インターネット検閲者がWebサイトをブロックする方法は少なくとも3つあります。
- WebサイトのIPアドレスをブロックします。
- DNS応答を乗っ取って、エンドユーザーに間違ったIPアドレスを与えます。
- サーバー名表示(SNI)を確認して、TLS接続をブロックします
Webプロキシがインターネット検閲者によってブロックされていることが心配な場合は、CloudflareなどのCDN(コンテンツ配信ネットワーク)の背後にWebプロキシを配置できます。このように、サーバーのIPアドレスは非表示になり、インターネット検閲者がCloudflareのIPアドレスをブロックすることを決定した場合、同じIPアドレスを使用している他の多くのWebサイトがあるため、巻き添え被害が発生します。これにより、インターネット検閲者はそうする前に2度考えさせられます。
DNSポイズンを防ぐために、エンドユーザーはDNSoverTLSまたはDNSoverHTTPSを使用する必要があります。 SNI情報の漏洩を防ぐために、Webサイトでは暗号化されたSNIを使用する必要があります。
結論
それでおしまい!このチュートリアルが、Ubuntu16.04で独自のWebプロキシを作成するのに役立つことを願っています。いつものように、この投稿が役に立った場合は、無料のニュースレターを購読して、その他のヒントやコツを入手してください。