簡體   English   中英

TCP服務器的GCP計算引擎防火牆規則

[英]GCP Compute Engine Firewall Rules for TCP Server

我創建了一個帶有靜態外部ip地址的GCP計算引擎實例。 機器類型:n1-standard-2(2個vCPU,7.5 GB內存)。 操作系統是Linux / Debian。

在此輸入圖像描述

我的目的是在機器上創建一個普通的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');
});

我的防火牆規則如下:

在此輸入圖像描述

請注意:我正在偵聽端口110,客戶端正在嘗試連接到靜態外部IP地址。 根據防火牆規則,我似乎正在啟用超過110的TCP流量。 我看到的錯誤是

Error: connect ETIMEDOUT 104.197.23.132:110

當我進入實例並運行tcp客戶端時,我成功連接。 所以最后一個問題是,為什么本地tcp客戶端(我的電腦)不能連接到計算實例? 我的防火牆規則/源過濾器/ IP轉發有問題嗎?

在此輸入圖像描述 我剛剛解決了這個問題。

你有錯誤的目標。 轉到編輯頁面並單擊“目標”的選擇菜單,然后您可以選擇第一個選項“應用於所有實例”,這是最簡單的方法。

您需要首先根據主機的IP添加防火牆規則,因為需要從該特定主機(您的計算機)接收內部流量然后您應該能夠ping到GCP計算實例。 您還應該能夠在程序中配置的特定端口上進行telnet。

這應該沒問題。 此外 - 應在實例的網絡標記中添加自定義規則,以使規則與該實例關聯,然后實例使用該特定規則。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM