Linux Gateway: Uma placa de rede como se mascarar de uma sub-rede para outra

5

Bom dia um e todos. Em nossa rede, temos uma única máquina Linux que tem alias de endereços IP. Cada um desses endereços IP fica em uma rede controlada por um roteador remoto para um ISP.

Queremos usar nossa caixa Linux como o gateway para a nossa rede interna (10.0.0.x) e para a caixa Linux, em seguida, encaminhar o tráfego de saída para um dos nossos roteadores em outra rede.

Todas as coisas que li são sobre o disfarce entre duas placas de interface física; no entanto, temos apenas uma placa de rede, ouvindo vários endereços IP.

Na própria caixa do Linux; ele pode fazer ping e acessar a internet usando um dos roteadores como o gateway upstream.

Portanto, nossa configuração é a seguinte:

: Linux Box 
  eth0:0 = 10.0.0.5
  eth0:1 = 192.168.137.5
  GW: 192.168.137.1


: Router#1
  IP: 192.168.137.1
  Connection to internet via ISP


: Network Machines
  IP: 10.0.0.x
  GW: 10.0.0.5

Então a questão é, qual é a minha configuração para o iptables / nat na caixa Linux para permitir que ele aceite pacotes na sub-rede 10.0.0.x e direcione-os para o endereço IP específico configurado para o gateway. Quando eu tento usar eth0: 1 como meu -d então iptables reclama de caracteres inválidos e pelo que eu li na internet, isso foi desabilitado no iptables ( link ).

Alguém pode ajudar por favor? Tenho certeza de que estou sentindo falta de algo óbvio aqui; todo o meu conhecimento histórico tem sido duas interfaces separadas de rede ethX.

obrigado

Atualização; aqui está o script "hackity" do iptables

WIFIBACKUP=192.168.137.1

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F -t nat

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t nat -A PREROUTING -s 10.0.0.0/32 -j REDIRECT --to $WIFIBACKUP

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
    
por Alan Williamson 06.04.2011 / 11:07

1 resposta

6

-d é para --destination e espera um endereço (ou net). Se o destino for "qualquer", simplesmente não o especifique.

O redirecionamento não faz NAT.
Como você está usando aliases, usar -i e -o não funciona. A solução alternativa é usar -d e -s. Você pode negar com "!". Assim, para todo o tráfego de 10.0.0.0/24, que tem um destino que NÃO é 10.0.0.0/24, faça o mascaramento:

iptables -t nat -A POSTROUTING -s 10.0.0.0/24! -d 10.0.0.0/24 -j MASQUERADE

    
por 06.04.2011 / 11:20