我已經創建了一個具有靜態外部IP地址的GCP計算引擎實例。機器類型:n1-standard-2(2個vCPU,7.5 GB內存)。操作系統是Linux/Debian。TCP服務器的GCP計算引擎防火牆規則
我的目的是建立在機器上一個普通的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地址。 Itt似乎根據防火牆規則啓用了超過110的TCP流量。我看到的錯誤是
Error: connect ETIMEDOUT 104.197.23.132:110
當我ssh進入實例,並運行tcp客戶端,我連接成功。所以最後的問題是,爲什麼本地tcp客戶端(我的電腦)不能連接到計算實例?我的防火牆規則/源過濾器/ IP轉發有問題嗎?
你是否以'root'身份運行你的應用程序?低於1024的端口僅限於root用戶。 https://serverfault.com/questions/38461/is-there-still-a-reason-why-binding-to-port-1024-is-only-authorized-for-root-o –
是的,我是。當我在虛擬機上運行客戶端應用程序時,啓動tcp服務器並連接到它並沒有問題。連接問題發生時。嘗試從我的本地機器連接。 –