Uma pergunta sobre a Internet / ConnectionSharing (NAT) via iptables

3

Estou seguindo este tutorial para configurar um gateway NAT: link

Com eth0 simples como WAN e eth1 como LAN, funciona. Então eu tentei ligar eth1 e eth2 em br0 como LAN, e modifiquei o script um pouco:

sudo iptables -A FORWARD -o eth0 -i **br0** -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Isso não está funcionando como esperado. O resultado é apenas clientes conectados a eth1 é capaz de passar pelo NAT.

Basicamente eu quero que todos os clientes conectados a eth1 e eth2 estejam na mesma LAN e que ambos possam passar pelo NAT para a internet.

Eu cometi algum erro no roteiro? Obrigado!

Atualização 1:

Aqui está minha configuração:

wexia@ubuntu12:/etc$ ifconfig -a
br0       Link encap:Ethernet  HWaddr 00:15:5d:83:5f:0c  
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:5dff:fe83:5f0c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:7454 (7.4 KB)

eth0      Link encap:Ethernet  HWaddr 00:15:5d:83:5f:07  
          inet addr:10.122.122.97  Bcast:10.122.123.255  Mask:255.255.254.0
          inet6 addr: 2001:4898:20:1:215:5dff:fe83:5f07/64 Scope:Global
          inet6 addr: 2001:4898:20:1:2d00:ef97:5f57:33d9/64 Scope:Global
          inet6 addr: fe80::215:5dff:fe83:5f07/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:78422 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2591 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:11743173 (11.7 MB)  TX bytes:479989 (479.9 KB)

eth1      Link encap:Ethernet  HWaddr 00:15:5d:83:5f:0c  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:390 errors:0 dropped:0 overruns:0 frame:0
          TX packets:316 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26740 (26.7 KB)  TX bytes:41439 (41.4 KB)

eth2      Link encap:Ethernet  HWaddr 00:15:5d:83:5f:0e  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:483 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3702 (3.7 KB)  TX bytes:57163 (57.1 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1278 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1278 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:139832 (139.8 KB)  TX bytes:139832 (139.8 KB)

wexia@ubuntu12:/etc$ brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.00155d835f0c   no      eth1
                            eth2
wexia@ubuntu12:/etc$ cat network/interfaces 
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto br0
iface br0 inet static
bridge_ports eth1 eth2
  address 192.168.1.1
  netmask 255.255.255.0
    
por Wei Xia 08.05.2014 / 02:51

1 resposta

0

Certifique-se de que todas as interfaces envolvidas com a ponte estejam configuradas para cima. (É possível ter uma interface como parte de uma ponte, mas não configurá-la como estando, portanto, nenhum tráfego passará por essa "porta").

sudo ifconfig eth1 up
sudo ifconfig eth2 up
sudo ifconfig br0 up

Além disso, verifique seu trabalho na ponte para garantir que ela tenha as interfaces que você espera:

sudo brctl show

Certifique-se de que você tenha o endereço IP da LAN atribuído na interface da bridge em vez de qualquer uma das interfaces Ethernet que fazem parte da bridge / switch:

ifconfig eth1
ifconfig eth2

(Nenhum deles deve listar um endereço IP). Se um deles fizer isso, tente algo como:

sudo ip addr del 192.168.0.1/24 dev eth1

Certifique-se de que sua interface de ponte tenha:

ifconfig br0

(deve listar o endereço). Se não tiver o endereço, faça o seguinte:

 sudo ip addr add 192.168.0.1/24 dev br0

Outra coisa que eu tentaria verificar: Veja se algum cliente conectado à eth2 pode fazer ping em qualquer coisa na eth1. Em caso afirmativo, a ponte e as interfaces (e seu estado ativo / inativo) provavelmente estão configuradas corretamente, e eu verificaria as regras do IPtables. Se eles não podem falar um com o outro, então provavelmente não é com o IPtables, e provavelmente algo com a bridge ou interfaces que fazem parte dele.

    
por Azendale 08.05.2014 / 05:15