[英]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.