Configurando um gateway entre duas sub-redes na mesma rede física

1

Eu preciso configurar uma rede habilitada para DHCP (192.168.2.) em uma camada física onde reside uma rede já existente (192.168.1.) com IPs estáticos. Eu tenho um servidor Debian 7 com duas interfaces (servidor e interfaces são todos virtuais) e eu quero configurar o ip como o gateway para a minha rede. Eu usei eth0 para rotear pacotes para a rede original (para acessar o gatewat da internet em 192.168.1.5) e eth1 para lidar com tráfego de / para minha rede.

ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0c:29:d4:02:1b  
          inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed4:21b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21668983 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10044848 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10931368249 (10.1 GiB)  TX bytes:2383839079 (2.2 GiB)

eth1      Link encap:Ethernet  HWaddr 00:0c:29:d4:02:25  
          inet addr:192.168.2.1  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fed4:225/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14113604 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11269734 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1871598524 (1.7 GiB)  TX bytes:10331981618 (9.6 GiB)

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:16436  Metric:1
          RX packets:8158 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8158 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:629690 (614.9 KiB)  TX bytes:629690 (614.9 KiB)

rota

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.5     0.0.0.0         UG    0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth0
192.168.2.0     *               255.255.255.0   U     0      0        0 eth1

iptables -vL

Chain INPUT (policy ACCEPT 5603K packets, 822M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy DROP 138K packets, 8597K bytes)
 pkts bytes target     prot opt in     out     source               destination         
  14M 9542M ACCEPT     all  --  any    any     anywhere             anywhere             state RELATED,ESTABLISHED
 398K   27M ACCEPT     all  --  eth1   any     anywhere             anywhere            

Chain OUTPUT (policy ACCEPT 2915K packets, 1432M bytes)
 pkts bytes target     prot opt in     out     source               destination         

iptables -tnat -vL

Chain PREROUTING (policy ACCEPT 607K packets, 49M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 112K packets, 17M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6893 packets, 977K bytes)
 pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 2391 packets, 374K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 363K   24M MASQUERADE  all  --  any    eth0    anywhere             anywhere   

Depois disso, ativei um servidor DHCP autoritativo em eth1.

Agora o problema: conexões com o servidor estão sempre funcionando (eu tenho um compartilhamento de samba e um servidor MySQL lá) mas às vezes (parece aleatoriamente) os clientes (principalmente o Windows 7 ou XP) não conseguem se conectar à internet para uma variável período de tempo. Quando nesta condição eu sou capaz de ping para 192.168.1.110 mas não para 192.168.1.5.

Adendo

O fato de a cadeia FORWARD ter descartado pacotes parece suspeito, então eu temporariamente desabilitei essa filtragem com:

iptables -A FORWARD -j ACCEPT

Com essa nova regra, tudo funciona. Eu ainda preciso esclarecer o que está acontecendo, embora ...

Adendo 2

Estas são as regras reais do iptables:

iptables-save

# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*mangle
:PREROUTING ACCEPT [28129147:14012989399]
:INPUT ACCEPT [8479051:1218948772]
:FORWARD ACCEPT [19639349:12792010625]
:OUTPUT ACCEPT [4434912:3183821941]
:POSTROUTING ACCEPT [23940877:15968783924]
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*nat
:PREROUTING ACCEPT [931027:74896097]
:INPUT ACCEPT [153578:23398245]
:OUTPUT ACCEPT [9169:1292388]
:POSTROUTING ACCEPT [3186:492868]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
# Generated by iptables-save v1.4.14 on Fri Jun 27 20:53:32 2014
*filter
:INPUT ACCEPT [2415796:331288771]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [1218435:1654003511]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j ACCEPT
COMMIT
# Completed on Fri Jun 27 20:53:32 2014
    
por fetasail 25.06.2014 / 12:28

1 resposta

0

Para ajudar você a diagnosticar onde os pacotes estão fluindo através das cadeias de iptables, você pode usar o parâmetro -j LOG e, eventualmente, o prefixo --log "algum texto para identificar facilmente o log em kern.log ou syslog" Você pode deixar a política Aceitar padrão e adicionar uma regra de negar todas as regras no final da cadeia FORWARD com o log ativado para que você possa entender melhor o tipo de pacotes que estão sendo descartados.

Você pode dar uma olhada neste link , que mostra o fluxo básico de pacotes dentro do iptables. cadeias.

Seria interessante ter as regras iptable completas que você definiu para dar uma resposta melhor.

    
por 27.06.2014 / 00:13