Alterar o IP de origem para um host de destino específico

0

Este é um acompanhamento para esta pergunta minha. (Ainda no Debian 7.8)

O problema não está realmente relacionado ao IPSec nem nada, porque não consigo nem executar ping no host remoto com o IP de origem "correto" (através de ping -I eth1: ipsec).

Aqui estão as informações necessárias:

inet xxx.xxx.xxx.94/24 brd xxx.xxx.xxx.255 scope global eth1
inet xxx.xxx.xxx.92/29 brd xxx.xxx.xxx.95 scope global secondary eth1:ipsec

Eu quero que minhas conexões usem o gw padrão e o IP padrão de eth1: .94, mas uma conexão com um host remoto use eth1: ipsec: .92.

Eu acredito que este é um problema de roteamento, por isso adicionei uma tabela de regras de roteamento:

0:      from all lookup local
2:      from all to xxx.xxx.xxx.21 lookup 17
32766:  from all lookup main
32767:  from all lookup default

e 17 tem:

xxx.xxx.xxx.21 via xxx.xxx.xxx.91 dev eth1  src xxx.xxx.xxx.92

Mas mesmo agora, se eu efetuar ping nos pacotes, obtive o IP de origem de .94 (mesmo com ping -I eth1: ipsec ou -I xxx.xxx.xxx.92):

xxx.xxx.xxx.94 > xxx.xxx.xxx.21: ICMP echo request, id 20865, seq 9, length 64
IP xxx.xxx.xxx.21 > xxx.xxx.xxx.94: ICMP echo reply, id 20865, seq 9, length 64

Também SNATting os pacotes via iptables não faz nada, ainda o IP de origem errado.

... Estou completamente perdido aqui.

Lenniey
fonte

Respostas:

1

Após vários dias dolorosos de depuração e roteamento e tabelas de roteamento e uma cabeça furiosa, desisti e reconfigurei todos os clientes IPSec sob meu controle direto para usar o IP .92 e tudo funciona como esperado agora.

Ainda estou sem entender por que não consegui buscar ou SNAT os pacotes ... tempo para alguns testes sérios no meu ambiente de testes (suspeito de alguma incompatibilidade louca entre alias de IP, marcapasso e tabelas de roteamento ou algo assim, ou simplesmente estupidez).

Lenniey
fonte