Http proxy para selecionar interface externa com base no cabeçalho do host

2

Eu tenho um caso de uso muito específico no trabalho em que tenho vários endereços IP externos (uma classe C completa) e preciso selecionar o endereço IP de saída que estou usando. As solicitações são http e o servidor de aplicativos é uma máquina diferente na rede interna. Para simplificar, gostaria de manter isso como um proxy HTTP, para que eu não precise alterar o código do aplicativo.

Requisitos:

  • O proxy procura um cabeçalho como "External-Ip: x.y.z.a" e envia tráfego pela interface com esse endereço IP externo. Eu sou capaz de modificar facilmente o cabeçalho, então se eu precisar enviar o nome da interface, tudo bem.
  • Se o cabeçalho não existir, o proxy selecionará um aleatório e, em seguida, retornará qual interface ele usou como cabeçalho http.

Qual é a maneira mais fácil de conseguir isso?

    
por Bryan Boettcher 17.05.2013 / 23:36

1 resposta

1

Por que vale a pena, o Squid tem isso nativo.

Eu usei 'acl outbound0 req_header .2 $' para definir uma ACL chamada 'outbound0' para o IP externo .2. Gerei as ACLs restantes com um script e codifiquei-as no arquivo de configuração.

Em seguida, combinei com tcp_outgoing_address, que escolhe um IP externo com base em ACLs. O resultado parece:

acl outbound0 req_header TS-Outbound-IP \.20$
acl outbound1 req_header TS-Outbound-IP \.21$
acl outbound2 req_header TS-Outbound-IP \.22$
acl outbound3 req_header TS-Outbound-IP \.23$
acl outbound4 req_header TS-Outbound-IP \.24$
acl outbound5 req_header TS-Outbound-IP \.25$

tcp_outgoing_address 192.168.1.20 outbound0
tcp_outgoing_address 192.168.1.21 outbound1
tcp_outgoing_address 192.168.1.22 outbound2
tcp_outgoing_address 192.168.1.23 outbound3
tcp_outgoing_address 192.168.1.24 outbound4
tcp_outgoing_address 192.168.1.25 outbound5

Por enquanto, isso funciona perfeitamente para o que precisamos. Vou manter a questão em aberto porque esse método parece meio desajeitado e estou interessado em alternativas.

    
por 21.05.2013 / 05:13