Redirecionar o tráfego SSH através do túnel GRE

2

Estou tentando redirecionar todas as conexões locais com a porta de correspondências de destino 22 para o túnel especificado usando o iptables MARK, mas algo está errado.

1.1.1.1 my public address
2.2.2.2 tunnel public address
1.2.3.4 my local tunnel address

Aqui estão as configurações:

# ip rule show 
1:      from all fwmark 0x14 lookup 20 

# ip route show table 20 
default via 1.2.3.4 dev tun0

E eu criei as seguintes regras no iptables:

iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 20 
iptables -t mangle -A OUTPUT -s 1.2.3.4 -j MARK --set-mark 20

E quando eu tento ssh algum servidor (dreamhost neste caso) eu recebo:

tcp      6 299 ESTABLISHED src=1.1.1.1 dst=69.163.202.189 sport=37152 dport=22 packets=4 bytes=221 src=69.163.202.189 dst=1.1.1.1 sport=22 dport=37152 packets=2 bytes=133 [ASSURED] mark=0 secmark=0 use=2

O pacote não está sendo marcado e saindo pela rota padrão, que é 1.1.1.1

Eu não sei o que estou fazendo errado ..

Alguém tem alguma ideia?

    
por user158720 13.02.2013 / 00:50

1 resposta

0

mangle PREROUTING é para alterar pacotes de entrada antes do roteamento e OUTPUT para alterar gerado localmente pacotes antes do encaminhamento. Portanto PREROUTING é desnecessário (para conexões locais). Mas OUTPUT deveria ter funcionado, no entanto. Você não precisa especificar o endereço de origem nas regras de firewall normalmente, pois seria "pacotes gerados localmente" de qualquer maneira.

E outra coisa a lembrar é que ninguém vai mudar o IP de origem apenas porque você marcou o pacote e ele seria roteado com outra tabela de rotas - você precisaria usar o NAT explicitamente para isso . Em termos de iptables do Linux, tem que ser SNAT . E "Este alvo só é válido na tabela nat, na cadeia POSTROUTING", como diz o homem. Embora eu pessoalmente prefira sua subespécie MASQUERADE , que é mais útil para isso, porque você não precisa se preocupar com a codificação de endereços IP.

    
por 13.02.2013 / 01:43