ASP.NETでクライアント(アクセス元)IPアドレスをIPv4で取得する方法

http://www.4guysfromrolla.com/articles/071807-1.aspx
System.Web.HttpContext.Current.Request.UserHostAddressでIPv6が取得されてしまう場合に、IPv6ではなくIPv4のアドレスを取得するには以下のようにする。

Public Shared Function GetIP4Address() As String
  Dim IP4Address As String = String.Empty

  For Each IPA As IPAddress In Dns.GetHostAddresses(HttpContext.Current.Request.UserHostAddress)
    If IPA.AddressFamily.ToString() = "InterNetwork" Then
      IP4Address = IPA.ToString()
      Exit For
    End If
  Next

  If IP4Address <> String.Empty Then
    Return IP4Address
  End If

  'ここは、IPv4が取得できなかったとき代わりにクライアントIPではなくホストIP(ASP.NETを実行しているマシンのIP)を取得するというコード
  'For Each IPA As IPAddress In Dns.GetHostAddresses(Dns.GetHostName())
  '  If IPA.AddressFamily.ToString() = "InterNetwork" Then
  '    IP4Address = IPA.ToString()
  '    Exit For
  '  End If
  'Next

  Return IP4Address
End Function

https://codeday.me/jp/qa/20190401/522769.html
そしてIPv4アドレスをサクッと取るのは実は無理らしい。

魔法のIPV4IPV6コンバータはありません。それらは完全に異なるプロトコルであり、
一方のアドレスは他方のアドレスに変換されません。
クライアントのIPV4アドレスを確実に取得したい場合は、クライアントがIPV4を介して
接続していることを確認する必要があります。



なぜか知らんが日本語で検索すると、ASP.NETでクライアントIPを取得するというタイトルで、ホストのIPv4アドレスを取得するコードを載せている誤った情報が出てくるので注意。
http://noritarou532.hatenablog.com/entry/2014/07/22/154523
https://www.aiik.net/2019/01/17/asp-net%E3%81%A7%E3%82%AF%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%83%88ip%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/