Use o endereço IP da interface para resposta ao pacote multicast recebido

Use o endereço IP da interface para resposta ao pacote multicast recebido

Eu tenho uma configuração de roteamento multicast com encaminhamento no lado receptor, como segue (todo Linux):

+----------------+            +----------------+                   +-------------+
| openvpn-server |tun0    tun0| openvpn-client |  forward port 53  | application |
|    10.8.0.1    |============|    10.8.0.2    |-------------------| 172.16.3.3  |
+----------------+            +----------------+                   +-------------+
                               joined 239.1.2.3
                               multicast group

Nesta configuração, o openvpn-serverlado envia pacotes UDP para o grupo multicast 239.1.2.3 na porta 53. Especificamente, os pacotes são mensagens DNS NOTIFY, mas não acho que isso seja relevante aqui. (Existem vários casos em openvpn-clientque o multicast é usado.)

openvpn-clientem seguida, encaminha o tráfego para application. Este host confirma o recebimento do pacote respondendo com outro pacote UDP.

O pacote de resposta é enviado de volta para openvpn-clientondeO Linux traduz o IP de origem de volta para o endereço IP de destino do pacote inicial conforme ele chegavado openvpn-server (assumindo que o destino original será agora o remetente da resposta), ou seja, 239.1.2.3.Este é o problema:Devido a este IP de origem, o pacote não é transmitido ao remetente original do primeiro pacote e o remetente pensa que o pacote não foi transmitido. Isso resulta em várias tentativas desnecessárias e muitos registros.

Operguntaé se é possível openvpn-clientinstruirreescrever o endereço de origem da resposta 10.8.0.2para. Mais especificamente, gostaria que fosse o endereço associado interface tun0, de modo que as coisas permanecessem em ordem caso uma reconexão da VPN levasse a uma alteração do endereço IP.

Eu suspeito que isso seja possível porque o iptables MASQUERADE faz algo semelhante (mas para conexões originadas em application). Além disso, acredito que se eu configurar isso, o pacote de resposta será entregue. Isso é possível?

Observei que quando faço ping de 10.8.0.1 para 239.1.2.3, o pacote de eco se origina de 10.8.0.2 (e não de 239.1.2.3). (Observe que o caso de ping não envolve encaminhamento de porta.) Como posso obter o mesmo comportamento para meu caso UDP?

informação relacionada