Redirecionando conexões
SSH para um outro gateway
Por: Flavio Torres - flaviotorres[@]linuxmasters.info
Publicado em: 01/09/2008
O objetivo desta dica é fazer com que conexões destinadas
à um serviço, por exemplo: SSH, MySQL, Postgres, TS,
etc... saiam por um único gateway de sua rede.
Por exemplo: Temos 3 links/3 gateways de diferentes operadoras e
com diferentes velocidades, entretanto para conexões SSH devemos
utilizar apenas um gateway. Para evitar a troca de gateway na hora
do rush, que tal criarmos uma tabela de roteamento e dizer ao firewall
que apenas as conexões destinadas a SSH sairão pelo
gateway 2?
Mão na massa!
No Debian, necessitaremos do pacote iproute2, o que facilmente conseguimos
com:
apt-get install iproute2
Então, vamos dar um nome a nossa tabela de roteamento, basta
adicionar no arquivo /etc/iproute2/rt_tables a linha:
200 ssh
Valor 200, nome ssh.
Agora, vamos as regras:
ip route add 192.168.0.0/24 dev eth0 table ssh
ip route add default dev eth0 via 192.168.0.2 table ssh
ip route flush cached
iptables -t mangle -A POSTROUTING -p tcp --sport 22 -s 192.168.0.0/24
-j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --sport 22 -s 192.168.0.0/24
-j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark
1
iptables -t mangle -A INPUT -p tcp --dport 22 -j MARK --set-mark
1
iptables -t mangle -A OUTPUT -p tcp --sport 22 -s 192.168.0.0/24
-j MARK --set-mark 1
iptables -t mangle -A FORWARD -p tcp --sport 22 -s 192.168.0.0/24
-j MARK --set-mark 1
iptables -t mangle -A FORWARD -p tcp --dport 22 -j MARK --set-mark
1
ip rule add fwmark 1 lookup ssh
ip route flush cached
Feito, já está tudo funcionando, simples, não?
Considerações:
Rede interna: eth0
Primeira linha: Digo para adicionar na tabela ssh
a rede 192.168.0.0/24 que é acessível
pelo dispositivo eth0
Segunda linha: Digo que o gateway da tabela ssh é
a máquina 192.168.0.2 que é acessível pelo dispositivo
eth0
Da quarta à décima linha: São tratamentos
especiais do pacote (tabela mangle) onde eu adiciono regras dizendo
que o pacote com origem (--sport), destino (--dport) a porta 22 devem,
após ser roteado (POSTROUTING), antes de ser roteado (PREROUTING),
na entrada (INPUT), na saída (OUTPUT) e no encaminhamento (FORWARD),
marcado com a flag 1
Décima primeira linha: Enfim, crio uma regra dizendo
que os pacotes marcados devem ser tratados pela tabela ssh
Décima segunda linha: flush e lenha!
|