[LUG.ro] IPTABLES - MSS - DNAT

Mey mey en mey-online.com.ar
Mie Feb 23 11:17:09 ART 2011


Hola listeros!
Los ubico en el escenario.
Mediante DNS Round Robin se balancea el acceso a una web
(www.mey.example) mediante tres ISPs (supongamos las ips 1.1.1.1 -
2.2.2.2 - 3.3.3.3 para cada conexion).
Uno de estos ISPs (3.3.3.3) me genera problemas con el MTU ya que si
pongo su ip directamente no responde, los otros funcionan bien.
Como se que es el MTU? porque si lo cambio en la iface del webserver a
1400 todo funciona de maravillas. Pero por 3.3.3.3 tambien hay RDP, SSH,
POP3, SMTP y unas aplicaciones propietarias de la empresa, por lo que
cambiar el MTU en cada servidor no es una opcion y no es prolijo
tampoco.
Mi idea es cambiar el MSS desde el firewall (Debian etch de 64 bist)
pero las pruebas que he realizado hasta ahora no me funcan...

Vamos a acotarnos a HTTP.. las reglas de nateo son:

iptables -t nat -A PREROUTING -d 3.3.3.3 -p tcp --dport 80 -m state
--state NEW,ESTABLISHED,RELATED -j DNAT --to 192.168.100.1:80
iptables -t filter -A FORWARD -d 192.168.100.1 -p tcp --dport 80 -m
state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -s 192.168.100.1 -p tcp --sport 80 -m
state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -d 192.168.100.1 -p tcp --dport 80 -m
state --state ESTABLISHED,RELATED -j ACCEPT

He intentado mediante la tabla mangle cambiando el MSS de todo paquete
que saldria por eth2 (la iface que conecta a ese ISP):

iptables -t mangle -A POSTROUTING -o eth2 -p tcp --tcp-flags SYN,RST SYN
-m tcpmss --mss 1401:1500 -j TCPMSS --set-mss 1400

Pero el cliente y el servidor siempre arreglan un MSS=1460 en los
paquetes SYN:

11:09:07.697699 IP x.x.x.x.49559 > 192.168.100.1.www: S
71511714:71511714(0) win 8192 <mss 1460,nop,wscale 2,nop,nop,sackOK>
11:09:07.697818 IP 192.168.100.1.www > x.x.x.x.49559: S
2183441239:2183441239(0) ack 71511715 win 16384 <mss 1460,nop,wscale
0,nop,nop,sackOK>

Probe tambien sin exito con la cadena FORWARD

iptables -A FORWARD -s 192.168.100.1 -p tcp --sport 80 --tcp-flags
SYN,RST SYN -m tcpmss --mss 1401:1500 -j TCPMSS --set-mss 1400

Alguno podria ayudarme a dar con la regla correcta?

Gracias!

MEY


PD: Utilizar --clamp-mss-to-mtu no creo que sea bueno debido a que envia
paquetes con el bit NF en 1, entonces si hay un router que necesita
fragmentarlo lo descarta y envia un ICMP tipo 3 (necesita fragmentar) y
siempre hay un paranoico que bloquea ICMP por lo que se pierden los
paquetes






Más información sobre la lista de distribución Lugro