title: GCP Compute Engine Firewall Rules for TCP Server
body: <p>I have created a GCP compute engine instance with a static external ip address.  Machine type: n1-standard-2 (2 vCPUs, 7.5 GB memory).  OS is Linux/Debian.</p>
  
  <p><a href="https://i.stack.imgur.com/h375G.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/h375G.png" alt="enter image description here"></a></p>
  
  <p>My intention is to create a plain Node.js TCP server on the machine.  The code is as follows:</p>
  
  <pre><code>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);
  </code></pre>
  
  <p>The client is:</p>
  
  <pre><code>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');
  });
  </code></pre>
  
  <p>My firewall rules are as follows:</p>
  
  <p><a href="https://i.stack.imgur.com/2YZRV.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/2YZRV.png" alt="enter image description here"></a></p>
  
  <p>PLEASE NOTE:  I am listening on port 110, and the client is trying to connect to the static external ip address. Itt appears that I am enabling TCP traffic over 110 according to firewall rules. The error I see is</p>
  
  <pre><code>Error: connect ETIMEDOUT 104.197.23.132:110
  </code></pre>
  
  <p>When I ssh into the instance, and run tcp client, I connect successfully.  So the final question is, why can't local tcp client (my computer) connect to compute instance? Is there something wrong with my firewall rules / source filters / IP forwarding?</p>