【问题标题】:Azure VM - TCP listener is not working for custom portAzure VM - TCP 侦听器不适用于自定义端口
【发布时间】:2021-12-15 00:44:06
【问题描述】:

我正在尝试在本地客户端和 Azure VM(标准 B1s Windows Server 2016 数据中心)之间建立 TCP 连接。

在 VM 上,我正在运行一个简单的 TCP 服务器(参见下面的代码),它侦听自定义端口 9000。 网络接口有一个我正在尝试使用的公共 IP。

var listener = new TcpListener(IPAddress.Any, 9000);
listener.AllowNatTraversal(true);
listener.Start();
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("Client connected: " + client.Client.RemoteEndPoint);

我在门户上的任何端口 9000 上添加了入站端口规则(source=any,source port=*,destination=any,dest.port=9000,protocol=any,action =允许)。

我在本地使用一个简单的 TCP 客户端。 TCP 客户端成功连接到端口 80。但是,连接到9000端口并不成功。

我使用“数据包捕获”来查看客户端请求是否到达 VM。是的。

1   0.000000    XX.XXX.XXX.XXX  10.1.1.4    TCP 66  29678 → 9000 [SYN] Seq=0 Win=64240 Len=0 MSS=1400 WS=256 SACK_PERM=1
2   2.998954    XX.XXX.XXX.XXX  10.1.1.4    TCP 66  [TCP Retransmission] 29678 → 9000 [SYN] Seq=0 Win=64240 Len=0 MSS=1400 WS=256 SACK_PERM=1
3   9.000180    XX.XXX.XXX.XXX  10.1.1.4    TCP 66  [TCP Retransmission] 29678 → 9000 [SYN] Seq=0 Win=64240 Len=0 MSS=1400 WS=256 SACK_PERM=1

我在 VM 中使用“netstat”命令来检查我的 TCP 侦听器是否正常工作。是的。

 Proto  Local Address   Foreign Address  State
 TCP    0.0.0.0:80      VMmurat2:0       LISTENING
 TCP    0.0.0.0:135     VMmurat2:0       LISTENING
 TCP    0.0.0.0:9000    VMmurat2:0       LISTENING

有什么想法吗?

【问题讨论】:

  • 你打开vm里面的防火墙(Os级别)端口了吗?
  • 你是对的。我在操作系统级别(具有高级安全性的 Windows 防火墙 - 入站规则)打开了端口(TCP 9000)。有效。谢谢。
  • 还有一个注意事项:我不知道为什么,“允许应用程序...”不起作用。我需要使用高级防火墙设置并为 TCP 端口添加规则。

标签: c# azure tcp azure-virtual-machine tcplistener


【解决方案1】:

@Murat 感谢您确认您的问题已得到解决。将我的评论转换为答案

要访问在 azure vm 中运行的应用程序,我们需要在 vm 网络安全组以及 windows 防火墙(操作系统级别)中允许该端口。

要允许 Windows 防火墙中的端口登录到 vm>>转到控制面板\系统和安全\Windows Defender 防火墙,然后转到入站规则并单击添加新规则并选择选项端口并选择协议类型(tcp 或UDP)并输入端口号并填写其余详细信息并添加规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多