ローカルマシンをWebサーバーとして実行していますが、そのIPは192.168.1.xxxです。私のADSLルーターで、このマシンへのポート転送「NAT」を作成しました正常に動作しますが、インターネットからの訪問者のログに記録されたIP Webサーバーは、IPではなく常にパブリックIPに割り当てられます。
ローカルサーバーのIPにDMZを作成し、NATの設定をADSL設定からNAPTからフルコーンNATに変更しようとしました。
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番目のスクリーンショットに示されているすべてのNATロールを削除し、3番目のスクリーンショットに示されているDMZをそのままにしておくと、上記のPHPコードはクライアントのIPを正しくキャッチすることに成功しました。
質問:NATで許可されているのに、サーバーまたはサーバーで実行されているスクリプトがクライアントのIPをキャッチできなかったDMZの何が問題になっていますか。 DMZを使用する際の問題は、サーバーのマシンポートがすべてのインターネットインバウンドトラフィックに対して開かれることです。
以下は、関連するルーターの構成のスクリーンショットです。
DMZはリスクが高すぎるため、インターネット上のすべての人がすべてのポートに直接アクセスできるようにするため、DMZは避けてください。
むしろポートフォワーディングを使用する必要があります。
ポートフォワーディングの記事を参照してください。
Huawei HG531 V1ルーターでポートフォワードをセットアップするための簡単な手順