🦑

ローカルマシン上のWebアプリケーションにモバイル端末から名前解決してアクセスする

2022/12/23に公開

ローカルマシン上のWebアプリケーションにモバイル端末から名前解決してアクセスする

SREホールディングス株式会社システムディレクターの津田(啓)です。

今回はローカルマシンで実行しているWebアプリケーションに同一LAN上のモバイル端末から
名前解決しつつアクセスする方法についてご紹介します。

対象読者

  • Web開発関係者
  • ローカルマシンのWebアプリケーションに同一LAN上の別端末から名前解決しつつアクセスしたい人

環境

  • MacOS Monterey 12.5 (Apple M2)
  • Homebrew: 3.6.12
  • Docker: 20.10.17-rd, build c2e4e01
  • Docker Compose: v2.11.1
  • Squid: stable 5.7 (bottled)

背景

通常であれば同一LAN上で公開しているWebアプリケーションにアクセスするには
以下のようにローカルマシンのIPアドレスを参照します。

http://192.168.1.5:8000

しかし単一のWebアプリケーション上で決められたドメインでルーティングしているケースなど
名前解決しながらアクセスしたい場合があります。

http://sample.domain.com:8000

そういったケースではForward Proxyサーバを使用することで
名前解決しながらローカルマシン上のWebアプリケーションにアクセスできるようになります。

Squidとは

SquidはオープンソースのPorxyサーバです。
Webサーバの前後に配置することで、リクエストをキャッシュしたり、Webサーバの負荷分散、アクセス制御、ロギングなどができるようになります。
今回はSquid経由でWebアプリケーションにアクセスすることでモバイル端末からでも名前解決しながらアクセスできるようにします。

Squidのインストール

今回はHomebrewでインストールします。

$ brew install squid

hostsの設定

名前解決するためにhostsファイルにIPアドレスとホスト名を追加します。
hostsファイルは通常であれば/etc/hostsにあります。

127.0.0.1	sample.domain.com

Squidの設定

Homebrewでインストールした場合は以下の場所にSquidの設定ファイルがあります。

/opt/homebrew/etc/squid.conf

squid.confに以下を追記します。

visible_hostname UNKNOWN # ホスト名の秘匿
hosts_file /etc/hosts # 参照するhostsファイル

Squidの起動

設定が完了したらサービスを起動します。

$ brew services start squid # 自動起動の登録をしたい場合
$ brew services run squid # 自動起動が不要な場合

サービスを停止する場合はstopしてください。

$ brew services squid stop

hostsなどの設定ファイルはSquid起動時に読み込まれるため、
編集後はサービスを再起動してください。

$ brew services restart squid

モバイル端末のWi-Fi設定

iOS

  1. 設定→Wi-Fi→接続先を選択
  2. プロキシを構成→手動
  3. サーバにローカルマシンのローカルIPアドレスを設定 (例: 192.168.1.5)
  4. ポートにSquidで使用しているポートを設定 (defaultは3128)

Android

  1. 設定→ネットワークとインターネット→Wi-Fi
  2. 接続しているAPの設定→編集→詳細オプション
  3. プロキシ→手動
  4. プロキシのホスト名にローカルマシンのローカルIPアドレスを設定 (例: 192.168.1.5)
  5. プロキシポートにSquidで使用しているポートを設定 (defaultは3128)

アクセス

モバイル端末のブラウザを使用して、ローカルマシン上で起動しているWebアプリケーションにアクセスします。
例えば8000番ポートにWebアプリケーションを公開している場合は以下のようになります。

http://sample.domain.com:8000/

重くて表示されない場合

大体のケースではSquidを再起動すれば解決します。
モバイル端末とLANを合わせるために接続先を変更する場合は、接続先を合わせてから再起動してください。

$ brew services restart squid

再起動しても遅い場合はsquid.confのパラメータをチューニングすることで改善されるようです。

さいごに

squid, calamari, inkfish, devilfish, cuttlefishなど実はイカを意味する英単語はたくさんあるようです。
こちら導入も簡単なイカしたソフトウェアになりますので是非お試しください。

参考

SRE Holdings 株式会社

Discussion