Estou configurando um servidor doméstico (usando o servidor Ubuntu 22.04) com vários serviços implantados em várias portas. Por exemplo, meu servidor de página inicial está implantado na porta 3000.
Quando estiver na rede local:
- O acesso Ssh está OK
- Os serviços HTTP implantados diretamente no servidor estão OK
- Os serviços HTTP implantados via docker com uma rede bridge estão OK
Quando uso o meshnet nordvpn:
- O acesso Ssh está OK
- Os serviços HTTP implantados diretamente no servidor estão OK
- Os serviços HTTP implantados via docker com uma rede bridge NÃO SÃO ACESSÍVEIS
Aqui está o docker compose para o meu servidor de página inicial
version: "3.9"
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- "3000:3000"
volumes:
- /config:/app/config
- /var/run/docker.sock:/var/run/docker.sock
environment:
PUID: $PUID
PGID: $PGID
networks:
- homepage_net
networks:
homepage_net:
driver: bridge
Aqui está minha interface Ethernet principal:
enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.XXX netmask 255.255.255.0 broadcast 192.XXX
ether XXX txqueuelen 1000 (Ethernet)
RX packets 257310280 bytes 326111324526 (326.1 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 157444527 bytes 168981936261 (168.9 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 20 memory 0xf3a00000-f3a20000
Aqui está a interface de rede do Nordlynx (os recursos meshnet do Nordvpn a criam):
nordlynx: flags=81<UP,POINTOPOINT,RUNNING> mtu 1420
inet XXX netmask 255.255.255.255 destination XXX
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
RX packets 236544852 bytes 298874606486 (298.8 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 52996561 bytes 13275751612 (13.2 GB)
TX errors 0 dropped 34313 overruns 0 carrier 0 collisions 0
Aqui estão minhas rotas:
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 0 0 0 enp0s25
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-9066eab87b15
172.19.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-e7a37ce3a7bd
172.20.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-e6e5e235ac3b
172.21.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-64f3f670aea1
172.22.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-f624ee4026b8
172.23.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-90ed8d1cb5ca
192.XXX 0.0.0.0 255.255.255.0 U 0 0 0 enp0s25
EDITAR:
Aqui está minha lista de permissões nordvpn:
Allowlisted subnets:
172.0.0.0/8
100.0.0.0/8
192.168.50.0/24
Como está funcionando na rede local, acho que pode ser um problema de janela de encaixe ou de roteamento. Sou praticamente um novato quando se trata de administração de sistemas e redes. Qualquer ajuda é apreciada.
TL;WR - Habilite a permissão de acesso à rede local no Meshnet na máquina Docker para pares que devem poder acessar os contêineres.
por exemplo
No momento, estamos cientes de um problema de que, se uma porta de contêiner do Docker tiver sido exposta à máquina host, ainda será necessário fornecer permissão de acesso à rede local aos pares no Meshnet para acessar serviços dentro dos contêineres do Docker.
Isso é causado pela exposição das portas do Docker ao inserir regras de iptables na cadeia PREROUTING.
Exemplo de tal regra:
Isso significa que quando um pacote entra na cadeia INPUT/FORWARD, ele será visto como tendo o endereço IP da rede definida pelo Docker dentro da sub-rede 172.16.0.0/16 (172.24.0.2 neste caso). Por causa disso, o Meshnet descartará esses pacotes de acordo com as regras predefinidas definidas para descartar o tráfego destinado a intervalos de IP privados, como:
Em outras palavras, o Meshnet trata o intervalo de IP do Docker como uma rede local e é por isso que você precisa definir o acesso à rede local com o seguinte comando:
Observação:
Esta lista de permissões se aplica apenas a conexões NordVPN e não altera as permissões do Meshnet.
Se o Docker ou um registro de sub-rede local tiver sido adicionado à lista de permissões, livre-se dele com o seguinte comando:
Além disso, se o NordVPN estiver conectado, certifique-se de que a descoberta de LAN esteja ativada com o seguinte: