Um servidor linux, uma rede, dois gateway - o servidor pode lidar com conexões provenientes de ambos os gateways?

1

Temos o servidor OpenSUSE com um serviço em execução. Nós temos dois gateways na rede. Um desses gateways é definido como um gateway padrão para o servidor. Neste caso, o servidor pode aceitar conexões que estão chegando somente através deste gateway. Mas ele não pode servir conexões vindas de outro gateway (até onde eu entendi, ele envia respostas de volta ao gateway padrão, mas não ao gateway de onde vieram essas solicitações).

Podemos configurar o servidor para poder servir conexões de ambos os gateways? (Eu ouvi palavras "roteamento baseado em fonte", mas não tenho certeza se é o caso).

    
por QeySee 23.11.2009 / 07:59

2 respostas

1

É possível e muito fácil de configurar. Usaremos iproute2 e iptables MARK e CONNMARK para isso.

A idéia é que marcaremos os pacotes vindos do segundo gateway (não o gateway padrão que o servidor está usando), e na resposta rotearemos esses pacotes pela mesma interface.

Suponha que o endereço IP do segundo gateway seja 2.2.2.2 e a interface no servidor conectado ao gateway seja eth2.

Primeiro, vamos configurar uma tabela de roteamento para o segundo gateway (usamos a tabela 20 para isso):

# ip route add default via 2.2.2.2 table 20

E defina uma regra que diz que os pacotes marcados com 200 serão roteados usando a tabela 20:

# ip rule add fwmark 200 table 20

Você pode verificar usando:

# ip route list table 20
# ip rule list

Agora usando iptables , marcamos os pacotes vindos do segundo gateway (na interface eth2) com a marca 200:

1 # iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
2 # iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT
3 # iptables -t mangle -A PREROUTING -i eth2 -j MARK --set-mark 200
4 # iptables -t mangle -A PREROUTING -j CONNMARK --save-mark

Para mais explicações sobre o funcionamento desses MARK e CONNMARK, consulte aqui

Se 2 de seus gateways estiverem na mesma rede, e seu servidor usando apenas uma interface para conectar-se a ambos, então definitivamente o comando número 3 do iptables acima não funcionará. Você pode usar outro, com base no endereço MAC como este:

# iptables -t mangle -A PREROUTING -m mac --mac-source AA:BB:CC:DD:EE:FF -j MARK --set-mark 200

Claro, AA: BB: CC: DD: EE: FF é o endereço MAC do segundo gateway.

    
por 22.12.2009 / 11:25
2

Se sua tabela de roteamento estiver ok, o servidor tem para enviar as respostas para o GW correto

Como você apontou corretamente, você deve configurar o roteamento baseado em origem, este link deve ser um bom ponto de partida para uma base de conhecimento sobre o assunto.

    
por 23.11.2009 / 08:52