Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 5 Dec 2020 13:39:31 -0700
From:      Gary Aitken <freebsd@dreamchaser.org>
To:        FreeBSD Mailing List <freebsd-questions@freebsd.org>
Subject:   strange tcp behavior; all systems except 1 connect to google compute engine
Message-ID:  <10f8d534-8e2a-169a-388f-5df8a2304fd2@dreamchaser.org>

next in thread | raw e-mail | index | archive | help
I'm trying to debug a situation where tcp conversation started from a single
fbsd machine in my home/work network are ignored by a google compute
engine running ubuntu. I get the same behavior from two different systems, one
a long established system running ubuntu 16.04 and another newly minted one
running ubuntu 18.04.  I used to be able to connect to the 16.04 system ok.
If I request an SSH session on D from machine A using the console interface for
the account on GCE, the console session shows up on machine A just fine.  But
if I attempt to visit the home web page I get no response, and I get no
response if I attempt to set up an SSH session from an xterm on machine A.

There are no special firewall rules on machine D (either one); the general
rules set up when the VM was created allowing HTTP, HTTPS, and SSH access
are there with no further holes/blocks.

The internal machines have private IP addrs, but a non-private IP addr
(66.109.141.62) is specifically mapped to A by ipfw rules in C.  B is mapped
to a specific IP addr used for all other internal machines (66.109.141.60),
and C has a specific IP addr (66.109.141.57).

Since I see the request to open a connection at D, I *think* it should have
nothing to do with my internal firewall rules; but I can't think of what
could be preventing machine D from responding.

So... what could be preventing machine D from answering a request by machine
A, when a similar request from B or C works?

Topology:

A fbsd 11.4 REL --\
                   C fbsd firewalll/gateway -- Google cloud -- D ubuntu
B ms-win-10 ------/

====== request from A to D: ======
This request fails, appearing to never be answered by D

On C, tcpdump for packets containing D:

# tcpdump -flnt -i xl0 | grep 35.230.53.86
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on xl0, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 216.239.38.108.53 > 66.109.141.57.60651: 9207*- 2/0/1 CNAME xbiologix.net., A 35.230.53.86 (76)
IP 66.109.141.62.35750 > 35.230.53.86.443: Flags [S], seq 971626487, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 1232709
117 ecr 0], length 0
IP 66.109.141.62.10842 > 35.230.53.86.443: Flags [S], seq 214222135, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 7281528
60 ecr 0], length 0

On D, tcpdump for packets containing A,B,C network prefix

$ sudo tcpdump -flnt -i ens4 | grep 66.109.141.62
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens4, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 66.109.141.62.13157 > 10.138.0.3.443: Flags [S], seq 2711450222, win 65535, options [mss 1400,nop,wscale 6,sackOK,TS val 42776192
42 ecr 0], length 0
IP 66.109.141.62.53250 > 10.138.0.3.443: Flags [S], seq 2613495290, win 65535, options [mss 1400,nop,wscale 6,sackOK,TS val 38547428
01 ecr 0], length 0

====== request from B to D: ======
This works.
Note that reporting address for D is an internal google network addr.

On C, tcpdump for packets containing D:

# tcpdump -flnt -i xl0 | grep 35.230.53.86
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on xl0, link-type EN10MB (Ethernet), capture size 262144 bytes
IP 216.239.38.108.53 > 66.109.141.57.60842: 59730*- 1/0/1 A 35.230.53.86 (58)
IP 66.109.141.60.55462 > 35.230.53.86.443: Flags [S], seq 3127908816, win 64240, options [mss 1460,nop,wscale 8,nop,nop,sackOK], len
gth 0
IP 35.230.53.86.443 > 66.109.141.60.55462: Flags [S.], seq 2165521777, ack 3127908817, win 65320, options [mss 1400,nop,nop,sackOK,n
op,wscale 7], length 0

On D, tcpdump for packets containing A,B,C network prefix:
$ sudo tcpdump -flnt -i ens4 | grep 66.109.141
IP 66.109.141.60.55110 > 10.138.0.3.80: Flags [S], seq 438717762, win 64240, options [mss 1400,nop,wscale 8,nop,nop,sackOK], length
0
IP 10.138.0.3.80 > 66.109.141.60.55110: Flags [S.], seq 77401776, ack 438717763, win 65320, options [mss 1420,nop,nop,sackOK,nop,wsc
ale 7], length 0
IP 66.109.141.60.55110 > 10.138.0.3.80: Flags [.], ack 1, win 257, length 0
IP 66.109.141.60.55111 > 10.138.0.3.443: Flags [S], seq 3129142493, win 64240, options [mss 1400,nop,wscale 8,nop,nop,sackOK], lengt
h 0
IP 10.138.0.3.443 > 66.109.141.60.55111: Flags [S.], seq 833868082, ack 3129142494, win 65320, options [mss 1420,nop,nop,sackOK,nop,
wscale 7], length 0

Thanks for any clues,

Gary





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?10f8d534-8e2a-169a-388f-5df8a2304fd2>