質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

476閲覧

サーバーに複数のIPアドレスを設定する方法

teratailmacr2

総合スコア31

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2022/05/18 08:41

編集2022/05/18 10:03

サーバーAとサーバーBの2つのサーバーがあります。
サーバーAから

php

1file_get_contents('https://server.b/test.php');

等で、サーバーBへアクセスすると、通常は一つだけ設定されているサーバーAのIPアドレスがサーバーBに通知されると思います。

test.php

1echo $_SERVER["REMOTE_ADDR"];// xxx.xxx.xxx.xxx

サーバーAに複数のIPアドレスを紐付けておき、サーバーBに知らせるIPアドレスを任意で変更する事は可能でしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2022/05/18 08:43

質問の意味があいまいです サーバーに複数のIPアドレスを振ることは可能です。 「接続先サーバーに知らせる接続元IPアドレスを任意で変更する」とはどういうことでしょう?
teratailmacr2

2022/05/18 10:05 編集

例えば接続元サーバーで file_get_contents(''https://www.example.com/test.php''); とした場合、接続先のtest.phpは echo $_SERVER["REMOTE_ADDR"]; で接続元IPアドレスを確認出来るかと思います。 接続元のサーバーを変えずに、この時表示されるIPアドレスを変える事は可能でしょうか?
hentaiman

2022/05/18 13:38

別のネットワークを用意してそのネットワークを通してアクセスする 特定のIPの場合にREMOTE_ADDRを偽装する どちらの方法でも好きにすれば良いと思いますが、質問が曖昧なので多分手順を教えてくれるような回答はつかないでしょう まあ後者の方が圧倒的に難易度は低いですが。
teratailmacr2

2022/05/20 03:19

確認が遅くなり申し訳ありません。 的確な回答が得られましたので、質問を打ち切りたいと思います。 ご回答ありがとうございました。
hentaiman

2022/05/20 13:17

$_SERVERの話はどっかいっちゃったんですね 質問に書かれてる前提条件無視でもどうでも良いなら最初からそう書いといたらほかの回答もついたんじゃないですかね
guest

回答2

0

ベストアンサー

file_get_contentsのような高水準の関数ではおそらく指定出来ないと思いますが、
https://www.php.net/manual/ja/function.socket-bind.php
のようなソケットレベルの関数を使えば、bind時にローカルIPアドレスを指定出来ると思われます。

検索すれば、「PHP言語でソケットプログラミング」のようなページが見つかると思うので、そのクライアントプログラムを参考にすれば良いかと思います。あと、ソケットレベルのプログラムでHTTP通信を行うには、HTTPプロトコルの知識も必要です。

投稿2022/05/18 16:59

otn

総合スコア84538

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratailmacr2

2022/05/20 03:17

確認が遅くなり申し訳ありません。 正に期待するご回答をありがとうございます!! この質問内容でこれだけ的確な回答を出来るotn様はお素晴らしいです! 皆がそうなれる事を夢み、私自身も日々精進して参ります。 後は自分で調べながら検証を進めてみます。 これまでに得られたものの中で、過去最高の財産になりました! 本当にありがとうございました!!
guest

0

$_SERVER["REMOTE_ADDR"]は、サーバー<==>自分でいう、サーバーから見た自分のIPアドレスですから
普通の状態であれば「表示されるIPアドレスを変える」ということはありえません。

深読み

サーバーA

  • 192.168.1.1
  • 192.168.1.2
  • 192.168.1.3
  • 192.168.1.4

サーバーB

  • 192.168.2.1

としたとき、サーバーAからサーバーBにアクセスしたとき1~4どれかを指定できるか?ということですか?
偽装というよりは単にどこからアクセスしたいかというだけのはなしでしたら
ルーティングテーブルを指定するんじゃないですかね?
PHPで云々という話では無いと思います

投稿2022/05/18 09:13

編集2022/05/18 10:32
yambejp

総合スコア114829

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teratailmacr2

2022/05/18 10:39

ご回答ありがとうございます。 PHPだけでどうこうしても不可能かと思いますが、他に何かすれば可能なのか、具体的な方法を知りたいです。
yambejp

2022/05/19 00:13

結局状況説明はなしですか?
teratailmacr2

2022/05/20 03:19

確認が遅くなり申し訳ありません。 的確な回答が得られましたので、質問を打ち切りたいと思います。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問