Eu tenho duas máquinas desktop, Windows 10 e Debian 11. Ambas as máquinas têm portas Ethernet 1G únicas nas placas-mãe, bem como uma placa adicional ASUS 10G PCI-e.
Não possuo um switch 10G para conectar essas máquinas, mas quero poder configurar uma conexão 10G entre elas para uso em desktop remoto.
Existem várias maneiras possíveis de abordar este problema
- Compartilhe uma conexão com a Internet do Windows 10 para o Debian 11
- Configure uma conexão estática entre as duas máquinas, mas mantenha as conexões 1G para acesso à Internet (configuração triangular)
- Compartilhe uma conexão com a Internet do Debian 11 para o Windows 10
Eu tentei os dois primeiros métodos e falhei. Eu não sei muito sobre como o Windows funciona, então não consegui diagnosticar/descobrir por que o primeiro método não funcionou.
O segundo método que tentei antes, mas as coisas não pareciam funcionar bem e não pareciam muito estáveis. Pode funcionar uma semana e não funcionar na próxima. Eu nunca cheguei ao fundo de por que isso aconteceu.
Acho que tenho mais chance de fazer o último método funcionar. Aquilo é
Windows 10 -> Debian 11 -> Network
Até agora fiz as seguintes coisas:
sudo apt install dnsmasq
vim /etc/dnsmasq.conf
interface=enp4s0
listen-address=127.0.0.1
dhcp-range=192.168.10.50,192.168.10.150,24h
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sudo apt install iptables-persistent
Não alterei o conteúdo de /etc/iptables/rules.v4
porque isso veio configurado automaticamente com algumas coisas:
# Generated by iptables-save v1.8.7 on Sat Apr 9 11:27:33 2022
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:DOCKER - [0:0]
:DOCKER-ISOLATION-STAGE-1 - [0:0]
:DOCKER-ISOLATION-STAGE-2 - [0:0]
:DOCKER-USER - [0:0]
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
COMMIT
# Completed on Sat Apr 9 11:27:33 2022
# Generated by iptables-save v1.8.7 on Sat Apr 9 11:27:33 2022
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -o enp4s0 -j MASQUERADE
-A DOCKER -i docker0 -j RETURN
COMMIT
# Completed on Sat Apr 9 11:27:33 2022
O primeiro problema que tenho é que não sei se estou perdendo algum conteúdo da configuração do iptables. Para referência, eu estava seguindo este guia .
- Na verdade, não tenho certeza se preciso instalar o iptables. É uma "coisa" de firewall, no entanto, se bem me lembro, acredito que seja necessário, caso contrário, o comportamento padrão do kernel é "bloquear tudo que não seja destinado à máquina local" - e acho que isso continua sendo verdade, mesmo que o kernel esteja definido para encaminhar pacotes ip com
net.ipv4.ip_forward=1
.
Se eu estiver enganado sobre isso ou minhas informações estiverem desatualizadas, por favor me corrija.
O segundo problema que tenho é que não sei como a configuração pode ser diferente, considerando que esta é uma máquina Desktop com uma GUI. (Ambiente de desktop Xfce.) Isso vem com o Network Manager, a partir do qual os adaptadores podem ser configurados com endereços IP estáticos. O guia vinculado acima não menciona nada sobre a configuração de um IP estático para o adaptador enp4s0
, que é configurado como o adaptador que o dnsmasq usará para ouvir solicitações de DHCP.
No entanto, certamente seria necessário configurar um IP estático, caso contrário, como outras máquinas poderiam estabelecer uma conexão ethernet com essa interface?
Nesse caso, posso configurar um IP estático com o gerenciador de rede, porém não sei de que maneira a execução do ambiente de desktop Xfce pode interferir em outras partes da configuração. (Talvez eu esteja preocupado com algo que não é um problema?)
Eu fiz duas coisas para que isso funcionasse, embora em relação à segunda eu não entenda por que o que eu fiz funciona.
A principal mudança que parecia fazer este trabalho foi a adição
-A INPUT -i enp4s0 -j ACCEPT
de .Eu não tenho idéia por que isso funcionou.
enp4s0
é a interface do adaptador de rede 10G. Esta máquina não deveria estar aceitando tráfego nesta interface, deveria estar encaminhando -o. (Se conectar a este host diretamente, por exemplo, via área de trabalho remota ou ssh, posso entender por que adicionar àINPUT
cadeia faria diferença, mas não entendo por que adicionar àINPUT
cadeia faz diferença na capacidade de ping das máquinas conectadas8.8.8.8
, por exemplo.)Deve haver algo que eu não entendo sobre como
iptables
funciona. Comente se souber a resposta.