web-dev-qa-db-ja.com

Webサーバーのマシンに転送するポートは、訪問者のIPをパブリックIPとしてキャッチします

ローカルマシンをWebサーバーとして実行していますが、そのIPは192.168.1.xxxです。私のADSLルーターで、このマシンへのポート転送「NAT」を作成しました正常に動作しますが、インターネットからの訪問者のログに記録されたIP Webサーバーは、IPではなく常にパブリックIPに割り当てられます。

ローカルサーバーのIPにDMZを作成し、NATの設定をADSL設定からNAPTからフルコーンNATに変更しようとしました。

アップデート1:

WebサーバーはUbuntu16.04上のApacheであり、次の php コードを使用してユーザーのIPを追跡します。

public function handle(Login $event)
    {
        //Perform login tracking
        $log = new Loginlog();
        $log->created_at = date('Y-m-d H:i:s');
        $log->user_id = \Auth::user()->id;
        $log->ip = $_SERVER['REMOTE_ADDR'];
        if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
            $ip = $_SERVER['HTTP_CLIENT_IP'];
        } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
            $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
        } else {
            $ip = $_SERVER['REMOTE_ADDR'];
        }
        $log->est_ip = $ip;
        $log->save();
        $nowDate = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s',date('Y-m-d H:i:s'));        
        $deletedRows = \App\Loginlog::where('created_at','<', $nowDate->subDays(config('fox.clearBeforeDays')))->delete();
        // dd(\Auth::user()->id,$_SERVER['REMOTE_ADDR']);

    }

アップデート2:

2番目のスクリーンショットに示されているすべてのNATロールを削除し、3番目のスクリーンショットに示されているDMZをそのままにしておくと、上記のPHPコードはクライアントのIPを正しくキャッチすることに成功しました。

質問:NATで許可されているのに、サーバーまたはサーバーで実行されているスクリプトがクライアントのIPをキャッチできなかったDMZの何が問題になっていますか。 DMZを使用する際の問題は、サーバーのマシンポートがすべてのインターネットインバウンドトラフィックに対して開かれることです。

以下は、関連するルーターの構成のスクリーンショットです。

enter image description here

enter image description here

enter image description here

enter image description here

1
SaidbakR

DMZはリスクが高すぎるため、インターネット上のすべての人がすべてのポートに直接アクセスできるようにするため、DMZは避けてください。

むしろポートフォワーディングを使用する必要があります。

ポートフォワーディングの記事を参照してください。
Huawei HG531 V1ルーターでポートフォワードをセットアップするための簡単な手順

1
harrymc