TCP服务器的GCP计算引擎防火墙规则

我创建了一个带有静态外部ip地址的GCP计算引擎实例 . 机器类型:n1-standard-2(2个vCPU,7.5 GB内存) . 操作系统是Linux / Debian .

enter image description here

我的目的是在机器上创建一个普通的Node.js TCP服务器 . 代码如下:

var net = require('net');

var HOST = '0.0.0.0';
var PORT = 110;

net.createServer(function(sock) {
        console.log('CONNECTED: ' + sock.remoteAddress +':'+ sock.remotePort);
        sock.on('data', function(data) {
        console.log('DATA ' + sock.remoteAddress + ': ' + data);
        sock.write('You said "' + data + '"');

    });


}).listen(PORT, HOST);
console.log('Server listening on ' + HOST +':'+ PORT);

客户是:

var net = require('net');

var HOST = '104.197.23.132';
var PORT = 110;

var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    client.write('I am Chuck Norris!');

});
client.on('data', function(data) {
    console.log('DATA: ' + data);
    client.destroy();

});
client.on('close', function() {
    console.log('Connection closed');
});

我的防火墙规则如下:

enter image description here

请注意:我正在侦听端口110,客户端正在尝试连接到静态外部IP地址 . 根据防火墙规则,我似乎正在启用超过110的TCP流量 . 我看到的错误是

Error: connect ETIMEDOUT 104.197.23.132:110

当我进入实例并运行tcp客户端时,我成功连接 . 所以最后一个问题是,为什么本地tcp客户端(我的电脑)不能连接到计算实例?我的防火墙规则/源过滤器/ IP转发有问题吗?

回答(2)

2 years ago

enter image description here
我刚刚解决了这个问题 .

你有错误的目标 . 转到编辑页面并单击“目标”的选择菜单,然后您可以选择第一个选项“应用于所有实例”,这是最简单的方法 .

2 years ago

您需要先根据主机的IP添加防火墙规则,因为需要从该特定主机(您的计算机)接收内部流量然后您应该能够ping到GCP计算实例 . 您还应该能够在程序中配置的特定端口上进行telnet .

这应该没问题 . 此外 - 应在实例的网络标记中添加自定义规则,以使规则与该实例关联,然后实例使用该特定规则 .