Rafael F. Rodríguez escribió:
Hola Lista.
Bien, estoy intentando hacer lo siguiente, permitir nat pero sólo algunos
puertos, y hago lo siguiente:
--- Código ---
echo 1 > /proc/sys/net/ipv4/ip_forward
$iptables -t nat -A POSTROUTING -s $red_nat -d 0/0 -j
MASQUERADE
$iptables -P FORWARD DROP
$iptables -A FORWARD -s $red_nat -p all --dport 22 -j ACCEPT
$iptables -A FORWARD -s $red_nat -p all --dport 80 -j ACCEPT
---- Fin código ---
Según mi poco entender con esto quiero conseguir que se haga nat pero sólo
pero sólo si se quieren hacen para web y ssh.
La linea MASQUERADE enmascara todo, y como es la plrimera, sale por
default todo.
Lo que tendrias que hacer es omitirla, y definir reglas para enmascarar
la salida haceia cada puerto especificamente:
iptables -t nat -A POSTROUTING -i eth0 -p tcp \
--destination-port 22 -j MASQUERADE
Para el http, seria lo mismo, pero cambiando el numero de puerto. Nota
que hay sitios web que usan puertos distintos al 80. Con esta
configuraiocn tus usuarios no podran acceder a ellos, la solucion seria
implementar un proxy.
Nota esto:
No le pongo "-s IP", le pongo "-i eth0". Esto es mas flexible, ya que no
le importa en que rango de IP's esta tu red, ademas te aseguras que no
haya una conexion spofeada desde afuera, aunque usar "-s" es muy viable
(de hecho asi lo tengo)
Le pongo "-p tcp", es el protocolo que usa ssh y http.
man iptables
Pero en cambio me sale lo siguiente iptables v1.2.11: Unknown arg `--dport'
Try `iptables -h' or 'iptables --help' for more information.
E intentaste lo que se te sugiere? :)
--
Alexander aka alk[ anoide | olico | ulero | ero | atraz]
(mi materializacion es fisica, mi escencia es matematica)