Simplesmente falando, a porta encaminhada 45922 é acessível no host via 127.0.0.1:45922, mas não acessível no próprio host através de seu IP público mais o número da porta 45922. Os detalhes são os seguintes.
Sistema operacional do host: Ubuntu 14.04.2 LTS
Convidado OS: CentOS 6.6 (Final)
Máquina Virtual: VMware Player 7
A VM é iniciada no terminal usando o seguinte comando:
vmrun -T player start vmware/CentOS/CentOS.vmx nogui
O host tem um endereço IP público que é 128.x.x.221
O convidado tem dois adaptadores de rede, um é interligado e tem um endereço IP público que é 128.x.x.219, o outro funciona no modo NAT e tem um endereço IP local que é 192.168.106.129.
Conteúdo do arquivo de configuração do host /etc/vmware/vmnet8/nat/nat.conf
45922 = 192.168.106.129:22
45911 = 192.168.106.129:5911
O primeiro encaminhamento de porta é para SSH, o segundo para VNC. Basicamente, eles estão sofrendo do mesmo problema, então eu gostaria de colocá-los juntos aqui.
Problemas observados:
-
No convidado do CentOS:
ssh 127.0.0.1 trabalhando
ssh 192.168.106.129 trabalhando
-
No host do Ubuntu:
ssh 192.168.106.129 trabalhando
ssh -p 45922 127.0.0.1 trabalhando
ssh -p 45922 128.x.x.221 NÃO está funcionando
-
De uma máquina pública aleatória:
ssh -p 45922 128.x.x.221 NÃO está funcionando
No entanto, ao mesmo tempo, a rede interligada funciona bem. De uma máquina pública aleatória:
ssh 128.x.x.219 trabalhando
Nem o host nem o convidado têm o firewall ativado. iptables -L
retorna listas vazias.
Não parece ser um problema de firewall de gateway, já que o host tem outra porta 45940 aberta e é acessível a partir de uma máquina pública aleatória.
Informação adicional
Executando netstat
no host:
$ netstat -ano | grep 459
tcp 0 0 0.0.0.0:45911 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:45922 0.0.0.0:* LISTEN off (0.00/0/0)
tcp 0 0 0.0.0.0:45940 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 :::45940 :::* LISTEN off (0.00/0/0)
udp 0 0 0.0.0.0:45932 0.0.0.0:* off (0.00/0/0)
A execução de tcpdump port 45922
no host não captura nenhum pacote quando eu faço ssh -p 45922 128.x.x.221
no próprio host.
A execução de ssh -vvv -p 45922 128.x.x.221
em uma máquina aleatória gera isso:
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 128.x.x.221 [128.x.x.221] port 45922.
debug1: Connection established.
debug1: identity file /home/x/.ssh/id_rsa type -1
debug1: identity file /home/x/.ssh/id_rsa-cert type -1
debug1: identity file /home/x/.ssh/id_dsa type -1
debug1: identity file /home/x/.ssh/id_dsa-cert type -1
debug1: identity file /home/x/.ssh/id_ecdsa type -1
debug1: identity file /home/x/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/x/.ssh/id_ed25519 type -1
debug1: identity file /home/x/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2
ssh_exchange_identification: read: Connection reset by peer
A execução de tcpdump port 45922 -vv
no host gera as seguintes informações quando tento conectar-me ao convidado de uma máquina aleatória na rede pública:
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:56:56.942537 IP (tos 0x0, ttl 60, id 64633, offset 0, flags [DF], proto TCP (6), length 60)
vcv069158.x.x.x.44417 > dhcp-x221.x.x.x.45922: Flags [S], cksum 0x13ee (correct), seq 584972499, win 25820, options [mss 1291,sackOK,TS val 2545185 ecr 0,nop,wscale 7], length 0
12:56:56.942603 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
dhcp-x221.x.x.x.45922 > vcv069158.x.x.x.44417: Flags [S.], cksum 0x7d30 (incorrect -> 0xfd9e), seq 2889461335, ack 584972500, win 28960, options [mss 1460,sackOK,TS val 1093302 ecr 2545185,nop,wscale 0], length 0
12:56:57.042734 IP (tos 0x0, ttl 60, id 64634, offset 0, flags [DF], proto TCP (6), length 52)
vcv069158.x.x.x.44417 > dhcp-x221.x.x.x.45922: Flags [.], cksum 0x9c9f (correct), seq 1, ack 1, win 202, options [nop,nop,TS val 2545212 ecr 1093302], length 0
12:56:57.046954 IP (tos 0x0, ttl 60, id 64635, offset 0, flags [DF], proto TCP (6), length 93)
vcv069158.x.x.x.44417 > dhcp-x221.x.x.x.45922: Flags [P.], cksum 0x7748 (correct), seq 1:42, ack 1, win 202, options [nop,nop,TS val 2545212 ecr 1093302], length 41
12:56:57.046973 IP (tos 0x0, ttl 64, id 151, offset 0, flags [DF], proto TCP (6), length 52)
dhcp-x221.x.x.x.45922 > vcv069158.x.x.x.44417: Flags [.], cksum 0x7d28 (incorrect -> 0x2c06), seq 1, ack 42, win 28960, options [nop,nop,TS val 1093328 ecr 2545212], length 0
12:57:01.371307 IP (tos 0x0, ttl 64, id 50327, offset 0, flags [DF], proto TCP (6), length 52)
dhcp-x221.x.x.x.45922 > vcv069158.x.x.x.44416: Flags [R.], cksum 0x7d28 (incorrect -> 0x58b6), seq 81219880, ack 929809342, win 28960, options [nop,nop,TS val 1094409 ecr 2542228], length 0
12:57:27.042892 IP (tos 0x0, ttl 64, id 152, offset 0, flags [DF], proto TCP (6), length 52)
dhcp-x221.x.x.x.45922 > vcv069158.x.x.x.44417: Flags [R.], cksum 0x7d28 (incorrect -> 0x0eb7), seq 1, ack 42, win 28960, options [nop,nop,TS val 1100827 ecr 2545212], length 0
^C
7 packets captured
7 packets received by filter
0 packets dropped by kernel
Parece que todo pacote que o host (221) enviou tem cksum incorrect
. Eu não tenho ideia do porquê isso aconteceu ...