Exceção de interceptação de tabelas IP

1

Eu tenho um conjunto de regras de iptable que se parecem com isso:

-A PREROUTING  --jump intercept-nat
-A intercept-nat --jump DNAT -s 10.10.1.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.10.1.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.1.2.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -s 10.1.2.0/24 ! -d 10.10.1.1/32 -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"

Ele foi projetado para enviar tráfego 80 e 443 para o Squid, um proxy de cache http. Eu gostaria de colocar algumas linhas nas regras do iptables que NÃO direcionariam o 443 tráfego para endereços IP específicos para 10.10.1.1:3127 (squid)

Caso de uso: Eu tenho um servidor websocket que os clientes por trás do proxy precisam se conectar, mas o squid não suporta websockets. Então eu quero que o tráfego contorne o squid

    
por Erik Petersen 24.08.2017 / 19:08

3 respostas

1

Eu faria o seguinte:

-A PREROUTING -s 10.10.1.0/24 ! -d 10.10.1.1/32 --jump intercept-nat
-A PREROUTING -s 10.1.2.0/24 ! -d 10.10.1.1/32 --jump intercept-nat
-A intercept-nat -d target-ip -p tcp -m tcp --dport 443 -j RETURN
-A intercept-nat --jump DNAT -p tcp -m tcp --dport 80 --to-destination 10.10.1.1:3126 -m comment --comment "intercept-nat"
-A intercept-nat --jump DNAT -p tcp -m tcp --dport 443 --to-destination 10.10.1.1:3127 -m comment --comment "intercept-nat"

Toda vez que um destino de pacote corresponder a target-ip , ele ignorará o resto das regras intercept-nat. Eu também mudei um pouco suas regras para torná-las mais legíveis e fáceis de mudar; -).

    
por 07.09.2017 / 05:58
0

A forma mais simples de ignorar o NAT é ACEITAR o pacote, o que terminará o caminho na tabela (PREROUTING), bem como na cadeia (interceptação-nat). RETURN deixará a cadeia (interceptado-nat) e continuará pela tabela (PREROUTING).

iptables -t nat -A PREROUTING <some criterium> -j ACCEPT

ou

iptables -t nat -A intercept-nat <some criterium> -j ACCEPT

Embora eu tenha escrito -A , você precisa colocar essa linha antes da ação NAT ou inseri-la na primeira posição.

    
por 07.09.2017 / 15:11
0

Dado que você deseja excluir o tráfego de algum NAT para seu proxy, uma regra para isso deve ser colocada antes dos outros. E eu não incluí-lo na sua cadeia definida pelo usuário intercept-nat , já que a cadeia é logicamente destinada a fazer NAT, não para não fazê-lo.

Simplesmente:

iptables -t nat -A PREROUTING -d w.x.y.z -p tcp --dport 443 -j ACCEPT

em que w.x.y.z é o endereço do servidor websocket.

Além disso, eu modificaria suas regras atuais (embora eu esteja adivinhando algumas coisas aqui):

  • Acho que você não precisa especificar os endereços IP de origem na seção de correspondência, já que provavelmente deseja redirecionar todo o tráfego de suas lan (s) internas. Assumirei que eth0 é a lan externa e eth1 e eth2 os internos.
  • Você provavelmente não precisa especificar o endereço IP de destino, economizando alguns ciclos de CPU. Presumo que o tráfego da web não seja direcionado para a máquina proxy, a menos que você tenha um servidor da web em execução nele.
  • Se o proxy estiver sendo executado na mesma máquina que o firewall, você também poderá evitar especificar o IP de destino a ser usado no DNAT target usando REDIRECT .

A eliminação da especificação de endereços IP melhora a manutenção, permite a reutilização e mantém as coisas mais simples. Todos juntos seriam:

-A PREROUTING -d w.x.y.z/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A PREROUTING ! -i eth0 -j intercept-nat
-A intercept-nat -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3126 -m comment --comment "intercept-nat"
-A intercept-nat -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3127 -m comment --comment "intercept-nat"
    
por 08.09.2017 / 01:29