У нас есть Azure VM, и нам нужно отправить UDP-сообщения с определенного порта этого аппарата. Мы используем .NET Class UdpClient для связи.Исходный UDP-порт источника, измененный при переходе на публичный VIP на Azure VM
Если мы попытаемся отправить сообщения между машинами в одной и той же виртуальной сети, то на аппарате ресивера отображается правильный исходный хост и порт.
Если мы перейдем через Public VIP (между виртуальными машинами в разных виртуальных сетях или прослушивателем onPremises), порт источника отобразит порт от 1024 и выше, а не выбранный порт источника.
Отправитель: 1.2.3.4:5000
Приемник: 5.6.7.8:5001 -> говорит данные, полученные от 1.2.3.4:1025 -> 1025 порт источника должен быть 5000
VB.NET Пример:
'Sending
Private Sub Send()
Dim data() As Byte = System.Text.Encoding.Unicode.GetBytes("Data")
Dim client As UdpClient = New UdpClient(5000)
client.Send(data, data.Length, "5.6.7.8", "5001")
client.Close()
End Sub
'Recieving
Private Sub Recieve()
While True
Dim remoteIPEndPoint As IPEndPoint = New IPEndPoint(IPAddress.Any, 5001)
Dim content() As Byte = udpClient.Receive(remoteIPEndPoint)
If content.Length > 0 Then
Dim message As String = Encoding.ASCII.GetString(content)
message &= remoteIPEndPoint.Address.ToString & " " & remoteIPEndPoint.Port & " " & message & vbCrLf
End If
End While
End Sub
Я кое-что о SNAT (источник NAT) читать и мне интересно, если Azure Network всегда трансформируются порты UDP источника на исходящие связи за пределами публичного шлюза.
Нам действительно нужно сохранить информацию о порте источника в пункте назначения на нашей платформе, потому что у нас есть тысячи устройств в Интернете, которые прослушивают только указанную комбинацию IP: UDPPort.
Спасибо заранее,
Antonio Sanchez
Атлантида Глобальная система