1. ホーム
  2. localhost

[解決済み】同じネットワーク上の他のコンピューターからこのローカルホストに接続するにはどうすればよいですか?

2022-04-21 13:27:26

質問

現在、あるプロジェクトに取り組んでおり、自宅の2台のラップトップで、一方のラップトップがもう一方のラップトップのlocalhostに接続するテストをしたいと思います。私はXAMPPを使用しています。どうすればよいでしょうか?

解決方法は?

それは間違いなく可能です。ここでは、Apacheを使った一般的なケースを取り上げます。

たとえば、あなたが symfony2 の大ファンであり、symfony の Web サイトを http://symfony.local/ 4台のコンピュータ(ウェブサイトをホストしているメインコンピュータと、メインコンピュータに接続されているMac、Windows、Linuxディストロ)から、ワイヤレスかどうかにかかわらず、アクセスすることができます。

一般的なスケッチ


1 バーチャルホストの設定 :

まず、apacheにバーチャルホストを設定する必要があります。 httpd-vhosts.conf ファイルを作成します。について XAMP このファイルはここにあります。 C:\xampp\apache\conf\extra\httpd-vhosts.conf . について MAMP このファイルは、ここにあります。 Applications/MAMP/conf/apache/extra/httpd-vhosts.conf . このステップ を処理するために、コンピュータ上のWebサーバーを準備します。 symfony.local リクエストに対応します。バーチャルホストの名前と、Webサイトのルート/メインフォルダを提供する必要があります。これを行うには、そのファイルの末尾に次の行を追加します。を変更する必要があります。 DocumentRoot を、あなたのメインフォルダがある場所にコピーしてください。ここでは /Applications/MAMP/htdocs/Symfony/ をウェブサイトのルートとして使用します。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 hostsファイルの設定 :

クライアント(この場合はブラウザ)が symfony.local の本当の意味は、あなたのコンピュータのhostsファイルを編集する必要があります。ブラウザでURLを入力するたびに、コンピュータはその意味を理解しようとするのです symfony.local は、コンピュータにとって何の意味もありません。そのため、コンピュータはこの名前を解決しようとします。 symfony.local をIPアドレスに変換します。これは、まずあなたのコンピュータのhostsファイルを調べて、あなたがアドレスバーに入力したものとIPアドレスが一致するかどうかを確認することによって行われます。一致しない場合は、次のように尋ねます。 DNSサーバー . ここで、hostsファイルに以下のように追記するのがコツです。

  • について MAC にある場合、このファイルは /private/etc/hosts ;
  • について LINUX にある場合、このファイルは /etc/hosts ;
  • について WINDOWS にある場合、このファイルは \Windows\system32\private\etc\hosts ;
  • について WINDOWS 7 にある場合、このファイルは \Windows\system32\drivers\etc\hosts ;
  • について WINDOWS 10 にある場合、このファイルは \Windows\system32\drivers\etc\hosts ;

ホストファイル

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

これから、このコンピューターで symfony.local と入力するたびに、あなたのコンピューターは symfony.local に接続するためにループバックインターフェイスを利用します。これはあなたが localhost (127.0.0.1) で作業したいことを理解します。

3 アクセス方法 symfony.local 他のコンピュータから :

ようやく本題の質問にたどり着きました。

<ブロッククオート

他のコンピュータから自分のウェブサイトにアクセスするにはどうすればよいのでしょうか?

さて、これはもう簡単です! 他のコンピュータに、どのようにして symfony.local ! どうすればいいんだ?

3a ウェブサイトをホストしているコンピュータのIPアドレスを取得する :

まず、ウェブサイトをホストしているコンピューター(一番最初から作業しているコンピューター)のIPアドレスを知る必要があります。ターミナルで MAC LINUX タイプ ifconfig |grep inet について WINDOWS タイプ ipconfig . このコンピュータのIPアドレスを次のようにします。 192.168.1.5 .

3b アクセスしようとしているコンピュータのhostsファイルを編集します。 :

もう一度、オン MAC にある場合、このファイルは /private/etc/hosts LINUX である。 /etc/hosts そして WINDOWS である。 \Windows\system32\private\etc\hosts (もし ウインドウズ7 にある場合、このファイルは \Windows\system32\drivers\etc\hosts ).. 今度は、アクセス/会話しようとしているコンピュータのIPアドレスを使うのがコツです。

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 最後に、ブラウザで結果をお楽しみください

ブラウザで、次のように入力します。 http://symfony.local を使えば、異なるコンピュータであなたのウェブサイトを美しく見ることができます! OSXユーザーであれば、Virtual Boxを使ってInternet ExplorerでWebサイトをテストすることができます(Windowsコンピュータを使いたくない場合)。これについては OSXでWindows/IEのテスト環境を構築する .


モバイル端末からのローカルホストへのアクセスも可能です

モバイルデバイスからローカルホストのウェブサイトにアクセスする方法について疑問に思うかもしれません。場合によっては、お使いのデバイス(iPhone、iPad...)のhostsファイルを変更することができません(脱獄を除く)。

さて、解決策は、ウェブサイトをホストしているマシンにプロキシサーバーをインストールし、iphoneからそのプロキシに接続することです。これは、実際には非常によく、次の記事で説明されており、セットアップにそれほど長い時間ではありません。

Macの場合、おすすめは モバイル端末でローカルホスト名を使用したMac OS XのWebサイトのテスト : を使用する スクイッドマン をプロキシとして使用します。これは100%無料のソリューションです。また、人によっては シャルル をプロキシサーバーとして使用することができますが、50ドルかかります。

Linuxでは、上記のMac OSの方法に合わせるために スクイッド をプロキシサーバーとして使用します。

Windowsでは フィドラー . 解決方法は、以下の投稿に記載されています。 FiddlerでiPhoneのトラフィックを監視する


2017/11/23編集 ちょっと、Hostsファイルを修正したくないんだけど...。

<ブロッククオート

@Dreです。他のコンピュータからウェブサイトにアクセスするために可能な方法はありますか? ホストファイルを手動で編集する必要があります。 にアクセスすることができます。

これは興味深い質問で、OPの質問と関連しているので、お手伝いさせてください。

あなたのウェブサイトがどこでホストされているか、すべてのマシンが知ることができるように、ネットワーク上で変更を行う必要があります。 ほとんどの家庭用ルーターは、そのようなことはしていません を実行する必要があります。 DNSサーバー をネットワーク上で使用することができます。

ルーター(192.168.1.1)があると仮定しましょう。このルーターにはDHCPサーバーがあり、ネットワーク上の100台のマシンにIPアドレスを割り振っています。

さて、上記と同じように、同じネットワーク上に、以下のマシンがあるとします。 192.168.1.5 あなたのウェブサイトがあります。そのマシンを ポンペイ .

$ echo $HOSTNAME
pompei

前と同じように、そのマシン ポンペイ 192.168.1.5 を実行しています。 HTTPサーバー あなたのウェブサイトを提供する symfony.local .

すべてのマシンが知るために symfony.local がホストされているのは ポンペイ の場所を知っているネットワーク上のカスタム DNS サーバーが必要になります。 symfony.local がホストされています。ネットワーク上のデバイスは ポンペイ を内部で使用します。

シンプルな3ステップ。

ステップ1:DNSサーバー

ネットワーク上にDNSサーバを設置します。ここでは ポンペイ を使い、便宜上、次のようなものを使用します。 dnsmasq .

Dnsmasqが提供するもの ドメインネームシステム(DNS)フォワーダ , ... .

私たちが望むのは ポンペイ DNSリクエストを処理するためにDNSmasqを実行します。 Hey, pompei, where is symfony.local と応答します。 Hey, sure think, it is on 192.168.1.5 but don't take my word for it .

dnsmasq をインストールします。dnsmasq の設定ファイルは通常 /etc/dnsmasq.conf は、お使いの環境によって異なります。

私自身は no-resolv とグーグルサーバー server=8.8.8.8 server=8.8.8.4 .

*注 etc/hosts ファイルを変更した場合は、必ず DNSmasq を再起動するようにしてください。

ステップ2:ファイアウォール

作業するには ポンペイ は、ポート53からとポート53に向かう「ドメイン」パケットの受信と送信を許可する必要があります。もちろん! これらはDNSパケットであり、もし ポンペイ を許可しない場合、DNSサーバーに到達する方法は全くありません。53番ポートを開けてみてください。Linuxでは、通常、次のようにします。 iptables を使用します。

私が思いついたことを共有しますが、ファイアウォールに潜り込み、すべてをよく理解する必要がある可能性が非常に高いです。

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

ステップ3:ルーター

ルーターにDNSサーバーがあることを伝える 192.168.1.5 今すぐ ほとんどの場合、ルーターにログインして手動で簡単に変更することができます。

以上で、あるマシンにて symfony.local を入力すると DNSサーバー ここで symfony.local がホストされており、DNS サーバーからその答えを受け取るとすぐに、適切な HTTPリクエスト への ポンペイ について 192.168.1.5 .

これで遊んでみて、楽しんでください。この2つのステップが主なガイドラインなので、初めてやる場合はデバッグして数時間費やす必要があります。これはもう少し高度なネットワークであるとしましょう、プライマリDNSサーバ、セカンダリDNSサーバがあります。 などです。 . 頑張ってください。