Указанный исходный порт UDP изменен при пересечении общедоступного виртуального IP-адреса на виртуальной машине Azure.

У нас есть виртуальная машина Azure, и нам нужно отправлять сообщения UDP с определенного порта этой машины. Мы используем .NET Class UdpClient для связи.

Если мы попытаемся отправить сообщения между машинами в одной и той же виртуальной сети, машина-получатель покажет правильный хост-источник и порт.

Если мы пересекаем общедоступный виртуальный IP-адрес (между виртуальными машинами в разных виртуальных сетях или прослушивателем onPremises), исходный порт будет отображать порт от 1024 и выше, а не выбранный исходный порт.

Отправитель: 1.2.3.4:5000

Receiver: 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 преобразовывает исходные UDP-порты в исходящих соединениях за пределами общедоступного шлюза.

Нам действительно нужно сохранить информацию об исходном порте в месте назначения на нашей платформе, потому что у нас есть тысячи устройств в Интернете, которые прослушивают только указанную комбинацию IP:UDPPort.

Заранее спасибо,

Антонио Санчес

Глобальная система Атлантиды


person Antonio Sanchez    schedule 05.09.2014    source источник


Ответы (1)


Мы разговаривали со службой поддержки Azure, и они сообщили нам, что исходные порты переводятся, когда вы пересекаете периметр виртуальной сети.

Решение, которое они нам дали, состоит в том, чтобы использовать PIP (общедоступные IP-адреса уровня экземпляра) в одной виртуальной машине. Таким образом, исходный порт поддерживается с помощью UDPClient, а SourceNAT не применяется. Этот тип общедоступного IP-адреса находится в предварительной версии, и для его настройки требуется powershell.

Информация и конфигурация PIP: PIP MSDN

Спасибо!

Антонио Санчес

Глобальная система Атлантиды

person Antonio Sanchez    schedule 10.09.2014