namespace linux, Como conectar a internet no namespace da rede?

5

Eu quero testar o namespace da rede linux.

O problema atual é que não consigo conectar a internet no namespace

aqui estão meus comandos:

1 Crie um namespace de rede netns1, crie um par de veths (A e B) conjunto B no namespace

ip netns add netns1
ip link add A type veth peer name B
ip link set B netns netns1

2 crie uma ponte para conectar o veth A

brctl addbr bridge0
ip addr add 172.17.42.1/16 dev bridge0
ip link set dev bridge0 up
brctl addif bridge0 A
ip link set A up

3 No namespace, defina a rede

ip netns exec netns1 ip link set dev B name eth0
ip netns exec netns1 ip link set eth0 up
ip netns exec netns1 ip addr add 172.17.42.99/16 dev eth0
ip netns exec netns1 ip route add default via 172.17.42.1

Quando eu ping no google, eu tenho isso:

ping: unknown host www.google.com

Como posso me conectar à internet nesse namespace?

Aqui estão alguns outros detalhes:

Obrigado

atualização 1

Eu também tento definir o NAT:

iptables -t nat -A POSTRODUÇÃO -s 172.17.0.0/16 -d 0.0.0.0/0 -j MASQUERADE

Mas ainda host desconhecido

    
por vvilp 22.09.2014 / 15:30

4 respostas

1

Estou assumindo que você está recebendo ping: unknown host www.google.com porque sua resolução de nome falhará devido a problemas de conectividade de rede mencionados abaixo. No entanto, você provavelmente desejará verificar se esse não é um problema de DNS fazendo ping de um endereço IP.

Do que você forneceu, parece que você não adicionou uma interface física à ponte da rede. Sem uma interface física na ponte, o tráfego nessa ponte não tem jeito para o resto da rede.

Uma alternativa para adicionar uma interface física à bridge seria ativar o encaminhamento de IP e configurar regras de NAT com iptables .

    
por 22.09.2014 / 15:57
1

Se você estiver tentando diagnosticar um possível problema de rede, não tente executar ping em um FQDN. Poxa, não use ping.

Tente isso: traceroute -n 8.8.8.8

Isso produzirá informações mais úteis por dois motivos:

  1. não requer um resolvedor funcionando (se você não consegue acessar a internet, não pode fazer uma pesquisa de DNS, então você obtém 'host desconhecido', mas se seu resolvedor não está funcionando você obterá a mesma resposta, mesmo se a conexão estiver correta).

  2. Ele tentará obter uma resposta de cada host ao longo do que acha que deveria ser a rota para 8.8.8.8, que mostrará onde a conexão está errada ao invés de simplesmente < em> se faz.

por 21.01.2016 / 11:35
1

Pense em um namespace de rede como outro computador. Pense em um par de veth como duas placas Ethernet com um cabo cruzado entre elas.

Existem três maneiras principais de conectar um namespace de rede à Internet, NAT, roteamento IP convencional, ponte Ethernet.

O NAT é geralmente o mais fácil de configurar, pois funciona com qualquer tipo de conexão de Internet upstream e não requer a cooperação da rede upstream.

Para o NAT funcionar, várias coisas precisam estar em vigor.

  1. O gateway padrão precisa ser configurado no namespace da rede secundária (parece que você fez isso)
  2. O
  3. encaminhamento de IP precisa ser ativado no namespace da rede principal (você não mostrou como essa configuração está definida).
  4. As regras iptables no namespace da rede principal precisam permitir que o tráfego seja transmitido (no lado do kernel, isso é ok por padrão, mas alguns softwares de firewall podem ter configurado regras que bloqueiam o encaminhamento).
  5. Uma regra adequada de SNAT ou masqurade precisa estar no lugar no namespace da rede principal (parece que você fez isso).

Você também precisa garantir que um /etc/resolv.conf apropriado esteja disponível para programas no namespace da rede secundária. Lembre-se de que, mesmo se você abrir a interface de loopback local no namespace de rede secundário (o que você deve fazer), ela ainda é local para cada namespace de rede.

É melhor executar ping / traceroute por endereço IP ao configurar inicialmente redes para separar problemas de resolução de nomes de problemas gerais de conectividade.

    
por 14.11.2016 / 19:48
0

Você tentou configurar a interface para cima? Eu vi a rede não funcionar em um namespace quando não está ativo, então tente isto:

ip netns exec netns1 ip link set lo up

    
por 08.05.2015 / 14:29