Sinal Wi-Fi “pipe” através do cabo Ethernet

8

Atualmente, as portas Ethernet do prédio em que trabalho estão inativas, mas o Wi-Fi funciona. Eu tenho um laptop habilitado para Wi-Fi ( Ubuntu 14.04 LTS (Trusty Tahr)) e uma área de trabalho não habilitada para Wi-Fi ( Debian 8 (Jessie)) com apenas um plugue Ethernet.

É possível conectar os dois por meio de um cabo Ethernet e obter conectividade de rede na estação de trabalho?

mbiokyle
fonte
Duvidoso, mas você pode conectar o cabo Ethernet diretamente em seu roteador ..
ryekayo
Veja esta pergunta no askubuntu - askubuntu.com/questions/359856/… . Isso pressupõe que pelo menos uma das portas de rede detecta automaticamente (ou você possui um cabo cruzado).
Andy C

Respostas:

9

Sim, você pode fazer isso, e não é tão difícil assim. Eu tenho um laptop com uma placa sem fio e uma porta Ethernet. Liguei um RapberryPi executando o Arch Linux nele, através de um cabo Ethernet "crossover". Essa é uma coisa especial que você pode precisar - nem todas as placas Ethernet podem fazer uma conexão direta máquina a máquina.

A outra parte complicada é o endereçamento IP. É melhor ilustrar isso. Aqui está o meu pequeno script de configuração. Novamente, enp9s0 é a porta Ethernet do laptop e wlp12s0 é o dispositivo sem fio do laptop.

#!/bin/bash
/usr/bin/ip link set dev enp9s0 up
/usr/bin/ip addr add 172.16.1.1/24 dev enp9s0
sleep 10

modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE
iptables -A FORWARD -o enp9s0 -i wlp12s0 -s 172.16.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

dhcpd -cf /etc/dhcpd.enp9s0.conf enp9s0

O script define um endereço IP estático para a placa Ethernet 172.16.1.1 e, em seguida, configura o NAT carregando um módulo do kernel. Ativa o roteamento IP (no laptop) e, em seguida, faz alguma iptablesmágica para obter os pacotes roteados da placa sem fio pela Ethernet e vice-versa.

Estou dhcpdexecutando na porta Ethernet para fornecer endereços IP porque é isso que o Raspberry Pi deseja, mas você pode fazer um endereço estático em sua estação de trabalho, juntamente com roteamento estático, servidor DNS e servidor NTP.

O arquivo /etc/dhcpd.enp9s0.conffica assim, caso você siga por esse caminho:

option domain-name "subnet";
option domain-name-servers 10.0.0.3;
option routers 172.16.1.1;
option ntp-servers 10.0.0.3;
default-lease-time 14440;
ddns-update-style none;
deny bootp;
shared-network intranet {
        subnet 172.16.1.0 netmask 255.255.255.0 {
                option subnet-mask 255.255.255.0;
                pool { range 172.16.1.50 172.16.1.200; }
        }
}

A escolha do endereço IP é bastante crítica. Eu usei 172.16.1.0/24 para o cabo Ethernet saindo do laptop. A placa sem fio do laptop termina com 192.161.1.0/24. Você precisa verificar o endereço IP sem fio do laptop e escolher outra sub-rede para a placa Ethernet. Além disso, você precisa escolher uma das redes "falsas" ou "não roteáveis". No meu exemplo, 172.16.1.0/24 é dos intervalos oficiais não roteáveis ​​de endereços IP, como é 192.168.1.0/24, e o endereço 10.0.0.3 dhcpd.enp9s0.confé distribuído para um servidor DNS e servidor NTP. Você terá que usar sua cabeça para descobrir o que é apropriado para sua configuração.

Bruce Ediger
fonte
PS: é mais fácil pedir perdão do que obter permissão. Apenas faça.
Bruce Ediger 12/02
Esta é uma ótima resposta. Vou trabalhar nisso. Obrigado!
mbiokyle
0

É possível? Absolutamente. Tudo o que você precisa fazer é configurar o encaminhamento IP, o roteamento ou outra maneira (simples) de mover pacotes da porta Ethernet no laptop para o Wi-Fi no laptop e vice-versa. É uma boa ideia? Provavelmente não - seus administradores de rede podem ficar um pouco chateados com você.

John
fonte
0

Por Wikipedia, se uma das portas Ethernet for gigabit, o cabo comum funcionará, não há necessidade de cruzamento, eu tenho gigabit nos dois lados e o cabo comum funciona.

A pergunta é feita em 2016, então, suponho que o gerenciador de rede esteja sendo executado nas duas máquinas Linux, você pode usar sua GUI para configurar ip-s; caso contrário, você provavelmente já fez a configuração personalizada e sabe como configurar o ip no prompt de comando, portanto Eu omito esses detalhes.

Após conectar-se com o cabo, você obterá nomes de interfaces de rede na GUI relacionadas à Ethernet no laptop e na estação de trabalho.

Supondo que você não se preocupe em conectar estações de trabalho (e / ou laptops por ethernet) periodicamente a outros equipamentos de rede, você pode configurar o IP estático nos dois para interfaces ethernet.

Defina o seu IP estático como a mesma sub-rede do wi-fi, por exemplo, se o wi-fi for 192.168.1.0/16, definido como 192.168.2.1 e 192.168.2.2, a máscara de sub-rede é 255.255.255.0, pois apenas o último número de IP difere , O DNS na estação de trabalho deve ser definido com o mesmo IP DNS do Wi-Fi no laptop para poder usar o DNS (sites abertos por nome, não apenas IP) na estação de trabalho.

Você precisa habilitar o encaminhamento de IP no laptop:

sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Como é muito provável que o seu gerente de rede no laptop considere a Ethernet de melhor qualidade do que o wi-fi, ele tentará enviar tudo para ele por padrão e você perderá a Internet após configurar a Ethernet. Para voltar a usar o wi-fi, no laptop, você precisa na seção [ipv4] do arquivo relacionado à conexão Ethernet (nome que você vê na GUI do gerenciador de rede para Ethernet) na localização /etc/NetworkManager/add line

never-default=true

(se a sua GUI tiver algo como a caixa de seleção "Use apenas recursos nesta conexão" para ethernet - na minha está na seção ip4 das propriedades da conexão, você pode usá-la).

E, finalmente, supondo que as regras das tabelas IP permaneçam por padrão ACEITAR tudo, seus pacotes da estação de trabalho irão para a Internet, mas não encontrarão o caminho de volta apenas para laptops até que você configure a regra NAT no laptop por um comando (onde eth0 deve ser o nome da sua conexão wi-fi, você pode descobrir o nome por sudo ifconfig):

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Se não funcionar depois, tente reiniciar o gerenciador de rede:

sudo service network-manager restart

Você deve estar pronto.

Alexei Martianov
fonte