DNAT con iptatables
Nuevamente yo por aca señores :) bueno en realidad gracias a la ayuda de
Iñaki y de otros, en realidad funcionó bastante bien era sólo el
problema de redirección pero poque no había probado el masquerade con la
dirección ip estática sólo con dinámica y logicamente no funcionaba con
el echo "1" > /proc/net/sys/ipv4/ip_formward y las demás reglas.
Bueno ahora el problema que tengo y que quiero consultarle es en el caso
de DNAT, ya que no me ha funcionado, les explico:
tengo en el /etc/network/interfaces:
auto eht0
iface eth0 inet static
address 200.241.133.100
netmask 255.255.255.248
network 200.241.133.0
broadcast 200.241.133.255
gateway 200.241.133.99 #IP modem
auto eth0:1
iface eth0:1 inet static
address 200.241.133.101
netmask 255.255.255.248
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
...
o sea, haciendo alias el cual no es ni será soportado por iptables aquí
viene el problema como poder hacer una regla desde una ip externa a un
equipo interno sabiendo porqué interfaz lógica esta pasando ???
lo que tengo es lo siguiente :
IPT="/sbin/iptables"
iface_salida="eth0" # declaro al interfaz externa sin # direccion
para poder redirigir
# cualquier ip que ingrese por este
# medio
iface_lan="eth1" # declaracion de la interfaz de LAN
lan_ip="192.168.1.1"
lan_net="192.168.1.0/24"
lan_bcast="192.168.1.255"
iface_lo="lo" # localhost
lo_ip="127.0.0.1"
después cargo todos los módulos, cargo las reglas necesarias, esas que
vieron el otro día de "MASQUERADE" y redireccionamiento al puerto 3128
cuando las solicitudes vienen desde el interior al puerto 80, para el
proxy transparente y por último creo nuevas reglas :
$IPT -N tcp_ingreso
$IPT -N tcp_egreso
$IPT -N udp_ingreso
$IPT -N udp_egreso
después de esto acepto el puerto 53 porque tengo un DNS interno que es
consultado desde el exterior, el puerto 80 en teoría para un servidor
web interno y el ssh para administrarlo remotamente.
$IPT -A udp_ingreso -p UDP -s 0/0 --destination-port 53 -j ACCEPT
$IPT -A udp_ingreso -p TCP -s 0/0 --destination-port 53 -j ACCEPT
$IPT -A tcp_ingreso -p TCP -s 0/0 --destination-port 80 -j ACCEPT
$IPT -A tcp_ingreso -p TCP -s 0/0 --destination-port 22 -j ACCEPT
elimino las salidas desde el interior, esto es para redundar en la orden
de que nada salga directamente por el puerto 80 y se redireccione hacia
el 3128.
$IPT -A tcp_egreso -p TCP -s 0/0 --destination-port 80 -j REJECT
$IPT -A tcp_egreso -p TCP -s 0/0 --destination-port 443 -j REJECT
ingreso las tablas del INPUT
$IPT -A INPUT -p ALL -i $iface_lan -s $lan_net -j ACCEPT
$IPT -A INPUT -p ALL -i $iface_lan -d $lan_bcast -j ACCEPT
$IPT -A INPUT -p TCP -i $iface_salida -j tcp_ingreso
$IPT -A INPUT -p UDP -i $iface_salida -j udp_ingreso
ingreso las tablas FORWARD
$IPT -A FORWARD -p tcp -i $iface_lan -j tcp_egreso
$IPT -A FORWARD -p udp -i $iface_lan -j udp_egreso
$IPT -A FORWARD -p ALL -i $iface_lan -j ACCEPT
$IPT -A FORWARD -i $iface_lan -m state --state ESTABLISHED,RELATED -j
ACCEPT
ingreso las tablas OUTPUT
$IPT -A OUTPUT -p ALL -s $ip_lo -j ACCEPT
$IPT -A OUTPUT -p ALL -o $iface_lo -j ACCEPT
$IPT -A OUTPUT -p ALL -s $lan_ip -j ACCEPT
$IPT -A OUTPUT -p ALL -o $iface_lan -j ACCEPT
$IPT -A OUTPUT -p ALL -o $iface_salida -j ACCEPT
ingreso las tablas de nat y de dnat y aquí comienza el problema ....
$IPT -t nat -A PREROUTING -p tcp -i $iface_salida --destination-port 80
-j DNAT --to-destination 192.168.1.1:80
$IPT -t nat -A PREROUTING -p tcp -i $iface_salida --destination-port 53
-j DNAT --to-destination 192.168.1.1:53
$IPT -t nat -A PREROUTING -p udp -i $iface_salida --destination-port 53
-j DNAT --to-destination 192.168.1.1:53
$IPT -t nat -A PREROUTING -p tcp -i $iface_lan --destination-port 80
--destination 200.241.133.101 -j DNAT --to-destination 192.168.168.1:80
$IPT -t nat -A PREROUTING -p tcp -i $iface_lan --destination-port 53
--destination 200.241.133.101 -j DNAT --to-destination 192.168.168.1:53
$IPT -t nat -A PREROUTING -p udp -i $iface_lan --destination-port 53
--destination 200.241.133.101 -j DNAT --to-destination 192.168.168.1:53
"esto es lo que necesito hacer y no me funciona" ya estoy medio
desquiciado porque he buscado en muchas documentaciones y me ha
resultado varias veces anteriormente... por lo mismo no se en que estoy
equivocado ...., bueno la idea es que tendría que funcionar de esta
forma ... pero no ....
$IPT -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT
--to-ports 3128 #este es el conocido redireccionamiento al proxy
$IPT -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT
--to-ports 3128 # y este al https ..
$IPT -t nat -A POSTROUTING -o $iface_salida -j SNAT --to-source
200.241.133.100
$IPT -t nat -A POSTROUTING -o $iface_salida -j SNAT --to-source
200.241.133.101
$IPT -t nat -A POSTROUTING -o $iface_lan -j SNAT --to-source
200.241.133.100
$IPT -t nat -A POSTROUTING -o $iface_lan -j SNAT --to-source
200.241.133.101
bueno eso es todo espero que me puedan ayudar, trate de comentar lo
mejor posible lo que estoy tratando de hacer, en realidad necesito mucho
de ayuda, bueno y lo mismo podrá ser utilizado como una buena
documentación ya que no hay mucho sobre DNAT con varias Ips estáticas
sobre una interfaz ...
salu2 a to2 y gracias por la ayuda ...
Reply to: