Conectividade com a Internet usando o namespace da rede linux

1

Eu experimento com namespaces do Linux no Ubuntu 17.1 distro. O objetivo final é forçar um aplicativo a usar uma interface de rede específica por meio de um modem 3G e não a conexão com fio da intranet. Meu PC tem 3 interfaces de rede.

enp0s25: conectado a um roteador de intranet sem conectividade com a Internet
inet 10.18.0.101

wlp3s0: wireless, usado para gerenciamento remoto, não estará disponível no ambiente de produção
inet 10.11.1.116

enx8cae4cff1c86: com fio, simulando um modem móvel USB 4G eventualmente será usado em ambiente de produção | inet 10.11.1.142

wlp3s0 e enx8cae4cff1c86 estão conectados ao mesmo roteador. Eu usei o seguinte código para criar um espaço de nome chamado mobilens

ip netns add mobilens
ip link set dev enx8cae4cff1c86 netns mobilens
ip netns exec mobilens ifconfig enx8cae4cff1c86 10.1.1.10/24 up
ip netns exec mobilens ifconfig lo 127.0.0.1/8 up
ip netns exec mobilens route add default gw 10.1.1.1
ip netns exec mobilens dhcpcd enx8cae4cff1c86

Eu também criei um arquivo /etc/netns/mobilens/resolv.conf com as seguintes entradas

nameserver 10.11.1.1
nameserver 8.8.8.8
search google.com

Executando o ifconfig no namespace com o

ip netns exec mobilens ifconfig

retorna para
Inet 10.1.1.10 netmask 255.255.255.0
e se eu consultar servidores DNS usados no namespace da seguinte forma

ip netns exec mobilens nmcli dev show | grep DNS

retorna

IP4.DNS [1]: 10.11.1.1

Eu tento pingar google.com usando esse namespace que ele resolve, mas falha.

ip netns exec mobilens ping www.google.com

PING www.google.com (172.217.7.4) 56 (84) bytes de dados.
De 10.1.1.10 (10.1.1.10) icmp_seq = 1 Host de destino inacessível
De 10.1.1.10 (10.1.1.10) icmp_seq = 3 Host de destino inacessível

O que mais preciso fazer para acessar a internet por meio desse namespace?

EDIT 1: Usando o xterm no namespace, de fato facilita o teste.
Eu também comecei a usar

dhclient -d enx8cae4cff1c86

em vez do servidor DHSCP no namespace. No entanto problema continua.estou pensando que isso é um pouco devido ao roteamento. A seguir está o resultado do comando route das interfaces fora do namespace

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         router.asus.com 0.0.0.0         UG    303    0        0 wlp3s0
10.11.1.0       0.0.0.0         255.255.255.0   U     303    0        0 wlp3s0
10.18.0.0       0.0.0.0         255.255.255.0   U     0      0        0 enp0s25
10.18.0.0       0.0.0.0         255.255.255.0   U     100    0        0 enp0s25

e este do namespace

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.1.1.1       0.0.0.0         UG    0      0        0 enx8cae4cff1c86
10.11.1.0       0.0.0.0         255.255.255.0   U     0      0        0 enx8cae4cff1c86
10.1.1.0       0.0.0.0         255.255.255.0   U     0      0        0 enx8cae4cff1c86

Alguma sugestão sobre possíveis modificações no roteamento no namespace?

    
por tkalay 13.11.2017 / 21:22

2 respostas

0

Resposta parcial:

Primeiro, inicie um xterm no namespace da rede, para facilitar o teste. Eu prefiro o meu colorido, e com o meu userid em vez de root:

ip netns exec mobilens su -c "xterm -bg yellow &" my_userid

Segundo, você está executando um servidor DHCP nesse namespace, em vez de um cliente, e você está também executando o Network Manager. O que você quer é um cliente DHCP nesse namespace, ou uma configuração estática. E não tenho idéia do que o Network Manager fará quando confrontado com múltiplos namespaces (eu tive uma experiência ruim com o NM, nunca consigo fazê-lo para fazer o que eu quero).

Então: Ou veja o que o NM está fazendo nas interfaces do seu namespace (e pare o NM se estiver atrapalhando), ou configure-as estaticamente com o gateway, route e namerserver corretos, ou usam um cliente DHCP, por exemplo dhclient -d enx8cae4cff1c86 e observe a saída para ver se está atribuindo tudo corretamente.

Em caso de dúvida, execute tcpdump na interface e veja se os pacotes saem corretamente.

    
por 13.11.2017 / 22:17
0

[Resolvido]
A solução foi modificar o gateway padrão. Eu adicionei a seguinte linha ao arquivo de configuração do namespace.

ip netns exec mobilens ip route change default via 10.11.1.1 dev enx8cae4cff1c86

Este passo foi o suficiente para eu pingar www.google.com
No entanto, quando desativei a conexão wifi de gerenciamento, o ping deu erros relacionados à resolução de nomes. Eu resolvi esse problema criando um arquivo em \ etc \ netns \ mobilens \ resolv.conf
Arquivo contido:

nameserver 10.11.1.1
nameserver 8.8.8.8
search google.com

Agora posso acessar a internet para qualquer domínio.

    
por 14.11.2017 / 02:46