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?