Peço desculpas antecipadamente pela seguinte novela.
Eu tenho uma unidade USB conectada a um Raspberry Pi executando Raspbian; crashplan não funciona mais com Raspbian, infelizmente, então não posso fazer o backup no meu servidor Crashplan (criativamente chamado de "backup"). O que eu estou tentando fazer é que o NFS compartilhe o sistema de arquivos com o meu servidor Crashplan e deixe-o rsync para um sistema de arquivos local, mas não consigo montá-lo no servidor de backup.
"backup" é uma VM do CentOS 6 em execução no ESXi e está em uma sub-rede diferente da Pi; Estou usando o VyOS como um roteador. Até agora, geralmente está funcionando muito bem, mas eu suspeito que algo sobre o VyOS pode estar estragando tudo. O VyOS está configurado para rotear entre meu 10.47.6.0/24 (onde o pi é) e 10.47.7.0/24 (onde a maioria das minhas VMs está). Quando eu faço um rpcinfo do pi (ou de outro servidor na mesma sub-rede), é bem sucedido; quando eu faço isso da outra sub-rede eu recebo:
rpcinfo: can't contact portmapper: RPC: Unable to receive; errno = Connection reset by peer
Funciona também a partir da VM do VyOS.
O pi é o caminho para a minha rede (meu roteador Verizon encaminha certas portas para ele para acesso externo), e o iptables é configurado para bloquear a maioria das coisas. No entanto, ele está totalmente aberto para todas as portas nas minhas duas sub-redes:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 165.160.2.0/24 anywhere tcp dpt:https
ACCEPT all -- localhost anywhere
ACCEPT all -- 10.47.6.0/23 anywhere
ACCEPT tcp -- 165.160.32.0/24 anywhere tcp dpt:ssh
ACCEPT tcp -- 165.160.2.0/24 anywhere tcp dpt:ssh
ACCEPT all -- 10.8.0.0/24 anywhere
ACCEPT udp -- anywhere anywhere udp dpt:http-alt
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
LOGGING all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain LOGGING (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 2/min burst 5 LOG level warning prefix "IPTables-logged: "
DROP all -- anywhere anywhere
O próprio VyOS não possui nenhum firewall configurado entre as duas sub-redes:
vyos@vyos:~$ show firewall
-----------------------------
Rulesets Information
-----------------------------
vyos@vyos:~$
Tem a configuração de roteamento mais básica possível:
vyos@vyos:~$ show configuration
interfaces {
ethernet eth0 {
address 10.47.6.11/24
duplex auto
hw-id 00:0c:29:de:e1:e1
smp_affinity auto
speed auto
}
ethernet eth1 {
address 10.47.7.1/24
duplex auto
hw-id 00:0c:29:de:e1:eb
smp_affinity auto
speed auto
}
loopback lo {
}
}
nat {
source {
rule 10 {
outbound-interface eth0
protocol all
source {
address 10.47.7.0/24
}
translation {
address 10.47.7.0/24
}
}
}
}
protocols {
static {
route 0.0.0.0/0 {
next-hop 10.47.6.1 {
distance 1
}
}
}
}
<snippety snip snip>
Eu posso fazer ping em todo o lugar, posso ssh, posso acessar a web e outros serviços em execução na VLAN 10.47.7.0/24 em várias portas, portanto, não acho que tenha um problema de firewall. Mais importante, quando eu conecto um strace ao daemon rpcbind no meu pi, ele vê a conexão entrar e então o despeja por alguma razão que eu não sou inteligente o suficiente para traduzir dos dados de rastreio. Isso já é 5 vezes muito longo, então eu vou poupar você da saída strace completa, porque é idêntico antes de um certo ponto.
Quando eu me conecto com sucesso a partir do VyOS, o pi diz:
write(12, "0write(12, "0root@splunk:~> rpcinfo -p pi
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 60044 status
100024 1 tcp 55702 status
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 2 tcp 2049
100227 3 tcp 2049
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 2 udp 2049
100227 3 udp 2049
100021 1 udp 38666 nlockmgr
100021 3 udp 38666 nlockmgr
100021 4 udp 38666 nlockmgr
100021 1 tcp 44067 nlockmgr
100021 3 tcp 44067 nlockmgr
100021 4 tcp 44067 nlockmgr
100005 1 udp 51123 mountd
100005 1 tcp 57740 mountd
100005 2 udp 39024 mountd
100005 2 tcp 53219 mountd
100005 3 udp 40590 mountd
100005 3 tcp 47949 mountd
t4525%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 632) = -1 ECONNRESET (Connection reset by peer)
close(12) = 0
tz2%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%"..., 632) = 632
poll([{fd=5, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=6, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=7, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=8, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=9, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=10, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=11, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}, {fd=12, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 8, 30000) = 1 ([{fd=12, revents=POLLIN|POLLRDNORM}])
read(12, "", 4) = 0
close(12) = 0
... então ele abre uma enquete para esperar por outra conexão. Quando faço isso no meu servidor de backup:
%pre%Suponho que possa ser um problema de firewall, mas o VyOS não tem nenhum firewall, nem o servidor de backup; outros dispositivos na mesma sub-rede que o servidor de backup podem rpcinfo -p backup muito bem, e nenhum deles pode rpcinfo meu pi. Estranhamente: servidores na rede 10.47.7 podem servidores rpcinfo na rede 10.47.6 diferente do pi . Mas o pi permite conexão em qualquer protocolo e qualquer porta de qualquer coisa que ele veja em 10.47.6.0/23 (aka, ambas as sub-redes), e o strace em rpcbind indica que faz a conexão de entrada. A única coisa que posso pensar é que ele está bloqueando suas próprias conexões de saída para 10.47.7.0/24, mas não tenho regras de saída de qualquer tipo e uma política ACCEPT padrão, e quando corri a tabela inteira para um teste rápido eu ainda tem falhas. o que esta acontecendo aqui? O pi está escutando em todas as portas usuais:
%pre%Argh !!!
Tags networking nfs iptables linux