tunsock BLOG
Illusts of Life with Old cats
Goods of Life with Old cats
instagram of Life with Old cats
プライベートWebサーバーにプロキシサーバー+P2Pで安全にアクセスする
New

プライベートWebサーバーにプロキシサーバー+P2Pで安全にアクセスする

August 18, 2026

社内にあるコンテンツやシステムなどの「プライベートWebサーバー」については、社内LAN環境にあるPCからのアクセスに制限されていると思います。 また、社外からアクセスする場合は、PCからVPN環境を経由して社内LANに入るようになっていると思います。 ただ、一般的なVPN環境においては、その脆弱性を付かれて攻撃を受けるといったセキュリティ課題が顕在化しています。 そこで、「プロキシサーバー+P2P」による社外から安全にプライベートWebサーバーへアクセスする環境の構築を提案したいと思います。

icon_logo

なぜ、「プロキシサーバー+P2P」なのか

一般的なVPN環境では、専用のサーバー機器+ソフトによって「社内(安全)と社外(危険)」の境界をネットワーク的に作る仕組となっており、社内LANへの入口となるVPNサーバー機器は、インターネットに公開されています。

そのため、VPNサーバー機器は攻撃対象になりやすく、その脆弱性を付かれて突破された場合は、社内ネットワーク全体に不正アクセスされるリスクがあります。

そこで、「プロキシサーバー+P2Pによる社内LANとPC間に独立したプライベートアクセス環境を構築し、社内LANへの入口となるインターネット公開そのものを排除することで不正アクセスに対する安全性を担保できると考えました。

アクセス環境の概要

アクセス環境は、プライベートWebサーバーにアクセスできるネットワーク内にフォワードプロキシサーバーSquid」を設置し、社外のPCは、HTTPプロキシー設定を行います。 そして、PCとプロキシサーバーの間を繋ぐネットワーク環境として「トンネルアプリ」を使用します。 (当方がアプリ開発を行い無料で提供しているP2Pアプリです)

トンネルアプリは、2つの端末にインストールして使用し、一方のアプリでクライアントアプリからのアクセスを代理ポートで受け付け、一方のアプリでサーバーアプリへのアクセスを行います。 端末アプリ間の通信データはEnd-to-Endで暗号化しますので、その内容を第三者に見られることなく安全にアクセスすることができるようになっています。

image01

プロキシサーバー側のセットアップ

プロキシサーバー側のOS環境はLinuxを使用し「Squid」のインストールとセットアップを行います。

Squid」の詳細については、公式サイト(https://www.squid-cache.org/)などで確認してください。 この記事では、デフォルトの待ち受けポートである「3128」を使用するものとします。
この記事では、プロキシサーバー側と同じネットワーク内からURL「https://private.example.com」でアクセス可能なプライベートWebサーバーが存在するものとします。
※社内専用のプライベートWebサーバーであっても、セキュリティやブラウザの仕様上の理由から、HTTPS(SSL/TLS)通信とログイン認証の導入が推奨されます。

そして、「トンネルアプリ(Linux版)」をインストールして起動します。 すると、コンソール上で以下のメッセージが表示されます。なお、これでLinux PC側の設定は完了で、会社のネットワーク環境の設定変更は不要です。 この例では、トンネルアプリの端末番号が「000001」となっています。

image02

PC側のセットアップ

PC側のOS環境はWindowsを使用し「トンネルアプリ(Windows版)」をインストールして起動します。 すると、以下のコマンドプロンプトとブラウザ画面が表示されます。 この例では、トンネルアプリの端末番号が「000002」となっています。

image03_ja

次に、プロキシサーバー側のトンネルアプリで、この端末をサーバー側端末として登録するためのURLを以下のコマンド「./TunnelApp_Linux.sh reg」で取得し、PC側のブラウザでアクセスします。

image04

すると、プロキシサーバー側のトンネルアプリがサーバー側端末として登録されます。

image05_ja

なお、プロキシサーバー側で、紐付けられたPC側のトンネルアプリの端末番号は、以下のコマンド「./TunnelApp_Linux.sh clients」で確認することができます。

image06

プロキシサーバー側へのアクセスを無効化する場合は、以下のコマンド「./TunnelApp_Linux.sh disable_client:<端末番号>」で変更できます。

image11

プロキシサーバー側へのアクセスを有効化する場合は、以下のコマンド「./TunnelApp_Linux.sh enable_client:<端末番号>」で変更できます。

image12

プロキシサーバー側へのアクセスを削除する場合は、以下のコマンド「./TunnelApp_Linux.sh delete_client:<端末番号>」で変更できます。

image13

続いて、PC側のトンネルアプリでトンネル通信設定を登録します。

「クライアント側端末」では、「端末内のアプリのみ」を選択して「127.0.0.1(ローカルホスト)」からのアクセスに制限し、 Webブラウザーからアクセスを受け付けるための代理ポートとして「23128」を設定します。

「サーバー側端末」には、プロキシサーバー側のトンネルアプリ「000001」を選択し、そこからのアクセス先として「127.0.0.1」とポート「3128」を設定して保存します。

image07_ja
image08_ja

WebブラウザーのHTTPプロキシー設定で、「セットアップスクリプトを使う」をオンにして、以下のURL「http://127.0.0.1:10000/proxy.pac」をセットします。

image09_ja

手動でプロキシサーバーを設定することもできますが、それだとプライベートWebサーバー以外へのアクセスもプロキシサーバーを経由するため、セットアップスクリプトでホスト指定することを推奨します。

そして、PC側のトンネルアプリのWebサーバー機能を利用して配信するため、以下のようにセットアップスクリプト「proxy.pac」を作成してドキュメントルートフォルダ内に保存します。

function FindProxyForURL(url, host) {
  // Use a proxy for specific hostnames.
  if (host == "private.example.com") {
    return "PROXY 127.0.0.1:23128";
  }
  // All other traffic connects directly.
  return "DIRECT";
}

ドキュメントルートフォルダの場所

ZIPファイルからアプリをインストールした場合:
<トンネルアプリのインストールフォルダ>/docs/proxy.pac

Microsoft Storeからアプリをインストールした場合:
C:\Users\[ユーザー名]\AppData\Local\Packages\[パッケージ固有の英数字].TunnelApp-PrivateAccess_[パッケージ固有の英数字]\LocalCache\Roaming\tunsock\docs\proxy.pac

Webブラウザーから「https://private.example.com」でアクセスすると、サンプルのプライベートWebサーバーの画面が表示されます!

image10

トンネルアプリは、クライアント側端末もサーバー側端末も同時接続は最大5件まで可能となっています。 今のところ、サーバー側端末の登録件数については制限を設けていませんが、複数人で共用すると同時接続制限にかかる可能性が高くなります。

最後までお読みいただきありがとうございました!ご意見などございましたらメッセージをお寄せいただけると幸いです。

P2P · Web · Security

Illusts of Life with Old cats
Goods of Life with Old cats