Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previaPróxima revisiónAmbos lados, revisión siguiente |
es:howtos:network_services:running_an_access_point_from_a_slackware_box [2019/06/15 03:54 (UTC)] – [4.3 DNS and DHCP Servers] antares_alf | es:howtos:network_services:running_an_access_point_from_a_slackware_box [2019/06/25 23:29 (UTC)] – [4.5 PPP] antares_alf |
---|
* conf-dir=/etc/dnsmasq.d | * conf-dir=/etc/dnsmasq.d |
| |
The options except-interface bind-interfaces and listen-address are particularly useful if you want to run more then one instance of dnsmasq. | Las opciones except-interface bind-interface y listen-address son particularmente útiles si desea ejecutar más de una instancia de dnsmasq. |
For the bridge to work correctly don't forget to allow forwarding either by using rc.ip_forward or by executing | Para que el puente funcione correctamente, no olvide permitir el reenvío utilizando rc.ip_forward o ejecutando |
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward | /bin/echo 1 > /proc/sys/net/ipv4/ip_forward |
See section 3.1.1 for the other useful run-time kernel parameters. | Mirar la sección 3.1.1 para los otros parámetros útiles del kernel en tiempo de ejecución. |
| |
===== 4.4 Firewalling ===== | |
Now is a good time to configure your firwall protection. | |
Supposing that the box will be routing packages thought it I'll show some rules that you might find helpfull. | |
This is the output of iptables-save, you can edit it to make the changes you require and then pipe your edited file to iptables-restore. | |
The iptables-save/iptables-restore is a handy way of keeping configuration for easy firewall activation and editing. | |
| |
| ===== 4.4 Cortafuegos ===== |
| Ahora es un buen momento para configurar su protección de firewall. |
| Suponiendo que la caja estará enrutando paquetes, creo que le mostraré algunas reglas que le pueden resultar útiles. |
| Esta es la salida de iptables-save, puede editarla para realizar los cambios que necesita y luego canalizar su archivo editado a iptables-restore. |
| Iptables-save / iptables-restore es una forma práctica de mantener la configuración para una fácil activación y edición del cortafuegos. |
| |
*mangle | *mangle |
COMMIT | COMMIT |
| |
NOTE *: Clamping MSS to PMTU can get internet browsing from your LAN working but can brake VPN packets. The proposed workaround has been made necessary by the increasing tendency of failing to find PMTU. It is not always necessary for you to activate the workaround but be warned that it can equally inadvertently stop working leaving you with an intermittent problem that is difficult to debug. It can be intermittent because the path your packets take to arrive to any destination on internet is not always the same dew to the necessity of fault tolerance. This note could become a whole article on it's own so [[https://blog.cloudflare.com/path-mtu-discovery-in-practice/|here's]] an intresting read on the issue. | NOTA *: La fijación de MSS a PMTU puede hacer que la navegación por Internet funcione desde su LAN, pero puede frenar los paquetes VPN. La solución propuesta se ha hecho necesaria por la creciente tendencia a no encontrar PMTU. No siempre es necesario que active la solución alternativa, pero tenga en cuenta que también puede dejar de funcionar de manera inadvertida, lo que le deja un problema intermitente que es difícil de depurar. Puede ser intermitente porque la ruta que toman sus paquetes para llegar a cualquier destino en Internet no siempre es la misma necesidad de tolerancia a fallas. Esta nota podría convertirse en un artículo completo por sí mismo, por lo que [[https://blog.cloudflare.com/path-mtu-discovery-in-practice/|here]] es una lectura interesante sobre el tema. |
| |
I generally put the content above in /ect/firewall.cf and add "/usr/sbin/iptables-restore < /etc/firewall.cf" to rc.local. | Generalmente pongo el contenido arriba en /ect/firewall.cf y agrego "/usr/sbin/iptables-restore < /etc/firewall.cf" a rc.local. |
| |
If you want to manage your AP via ssh now is a good time to restart sshd that did not appreciate taking down the interfaces it was binding on (back in section 4.2). | Si desea administrar su AP a través de ssh ahora es un buen momento para reiniciar sshd que no estaba de acuerdo en eliminar las interfaces con las que estaba enlazado (en la sección 4.2). |
/etc/rc.d/rc.sshd restart | /etc/rc.d/rc.sshd restart |
If you're going to share internet connection you might want to stop ssh access from internet by adding a firewall rule to regulate it or making sshd bind only to the address assigned to br0. The config shown above will not allow incoming ssh traffic from the internet link (by the connection tracking rule) but you may want to back that up with further safety. | Si va a compartir la conexión a Internet, es posible que desee detener el acceso a ssh desde Internet agregando una regla de firewall para regularlo o haciendo que sshd se enlace solo a la dirección asignada a br0. La configuración que se muestra arriba no permitirá el tráfico ssh entrante desde el enlace de Internet (según la regla de seguimiento de la conexión), pero es posible que desee realizar una copia de seguridad con mayor seguridad. |
Longer iptabls chains generally have bad impact on firewall performance so you might want to add something like this to /etc/ssh/sshd_config: | Las cadenas de iptabls más largas generalmente tienen un impacto negativo en el rendimiento del firewall, por lo que es posible que desee agregar algo como esto a /etc/ssh/sshd_config: |
ListenAddress 192.168.0.1 | ListenAddress 192.168.0.1 |
| En este punto, debe poder asociar clientes al AP. |
| Con las reglas de iptables anteriores, el cliente con MAC 0a:0b:0c:0d:0e:0f puede asociarse y acceder al AP en sí, pero no puede enrutar a través del AP (con la excepción de las consultas dns que son enviadas por dnsmasq),el cliente con MAC 00:01:02:03:04:05 puede enrutar el AP pero no acceder al AP en sí. El ejemplo fue simplemente para mostrar claramente la diferencia de tener paquetes que van a la caja y enrutar paquetes a través de la caja ya que este comportamiento fue radicalmente diferente en las ip_chains. |
| Otra forma de implementar MAC ACL aún más compleja para decidir quién administra AP, quién solo puede enrutar y quién puede hacer ambas cosas se puede hacer mediante ebtables (es necesario agregar eso a la lista de software que no está presente en Slackware) y jugar con el cadena de broute En todos los casos, puede encontrar interesante el [[http://en.wikipedia.org/wiki/Iptablesmediaviewer/File:Netfilter-packet-flow.svg | diagrama de flujo de filtros de red]]. |
| |
At this point you should be able to associate clients to the AP. | Si no desea la ACL de la dirección MAC o solo implementa la ACL de MAC para el AP, puede reemplazar |
With the above iptables rules client with MAC 0a:0b:0c:0d:0e:0f can associate and access the AP itself but not route trough the AP (with the exception of dns querys that get forwarded by dnsmasq), | |
client with MAC 00:01:02:03:04:05 can route thought the AP but not access the AP itself. The example was just to show clearly the difference of having packets go into the box and routing packets trough the box as this behavior was radically different in the ip_chains. | |
An other way to implement even more complex MAC ACL to decide who manages AP, who can only route trough and who can do both can be done by using ebtables (nee to add that to the software list not present in Slackware) and fiddle with the broute chain. In all cases you might find interesting the [[http://en.wikipedia.org/wiki/Iptables#mediaviewer/File:Netfilter-packet-flow.svg | netfilter flow diagram]]. | |
| |
| |
| |
If you don't want MAC address ACL or you only implement MAC ACL for the AP you could replace | |
| |
-A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT | -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT |
-A INPUT -p tcp --dport 53 -s 192.168.0.0/24 -j ACCEPT -m comment --comment "allow dns from LAN" | -A INPUT -p tcp --dport 53 -s 192.168.0.0/24 -j ACCEPT -m comment --comment "allow dns from LAN" |
-A FORWARD -m mac --mac-source 00:01:02:03:04:05 -j ACCEPT -m comment --comment "some other comment" | -A FORWARD -m mac --mac-source 00:01:02:03:04:05 -j ACCEPT -m comment --comment "some other comment" |
| |
With something like this | Con algo como esto |
| |
-A INPUT -p all -i br0 -j ACCEPT | -A INPUT -p all -i br0 -j ACCEPT |
-A FORWARD -p all -i br0 -j ACCEPT | -A FORWARD -p all -i br0 -j ACCEPT |
| |
Most off the shelf AP also let you do a number of port forwarding, this is also an iptables job. Remember that we are masquerading all outgoing traffic to look like it's coming from the AP itself so we only need to create rules of the incoming traffic. Supposing you want to run a web server on 192.168.0.2 you might want to add a rule like this in the FORWARD chain of the filter table: | La mayoría de los AP disponibles también le permiten hacer una cantidad de reenvío de puertos, esto también es un trabajo de iptables. Recuerde que estamos enmascarando todo el tráfico saliente para que parezca que viene del propio AP, por lo que solo necesitamos crear reglas del tráfico entrante. Suponiendo que desea ejecutar un servidor web en 192.168.0.2 es posible que desee agregar una regla como esta en la cadena FORWARD de la tabla de filtro: |
| |
-A FORWARD -p tcp -d 192.168.0.2 -m multiport --dports 80,443 -j ACCEPT -m comment --comment "allow http traffic to be routed thought the box only to the correct server" | -A FORWARD -p tcp -d 192.168.0.2 -m multiport --dports 80,443 -j ACCEPT -m comment --comment "allow http traffic to be routed thought the box only to the correct server" |
| |
and a rule like this in the PREROUTING chain of the nat table: | y una regla como esta en la cadena PREROUTING de la tabla nat: |
| |
-A PREROUTING -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.0.2 -m comment --comment "nat incomming http requests to local destination before routing" | -A PREROUTING -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 192.168.0.2 -m comment --comment "nat incomming http requests to local destination before routing" |
| |
To understand how this works you need to look at the [[http://en.wikipedia.org/wiki/Iptables#mediaviewer/File:Netfilter-packet-flow.svg | netfilter flow diagram]]: | Para entender cómo funciona esto, debe consultar el [[http://en.wikipedia.org/wiki/Iptablesmediaviewer/File:Netfilter-packet-flow.svg | diagrama de flujo de filtro de red]]: |
As a http request arrives to the AP from the internet link it will first have the DNAT changed in the nat prerouting stage, but it would get dropped by the filter policy if we don't find a way to let it in, that's where the forward filter rule comes in to play. | Cuando una solicitud http llega al AP desde el enlace de Internet, primero se cambiará el DNAT en la etapa de pre-enrutamiento nat, pero la política de filtro la eliminará si no encontramos una manera de déjalo entrar, ahí es donde entra en juego la regla de filtro de avance. |
| |
| Si comienza a volverse loco con la transferencia de archivos grandes a través de redes rápidas para un problema que parece estar relacionado con mtu pero no es posible que desee considerar la posibilidad de desactivar net.ipv4.tcp_sack. |
| |
If you start going crazy over transferring large files over fast networks for a problem that seems like mtu related but is not you might want to consider turning net.ipv4.tcp_sack off. | Si su ISP le da algún tipo de cuota de tráfico, es posible que desee agregar algunas cuotas a la configuración de su firewall. Es posible que entienda completamente las consecuencias de la transmisión en su cuota de ISP, pero tal vez el resto de la familia no lo haga: darles una cuota podría ahorrarle un ajuste cuando necesite hacer un trabajo urgente que requiera conexión a Internet. Hay varias maneras en las que podría establecer cuotas en clientes específicos en su LAN, solo tenga en cuenta algunas cosas: |
| |
If your ISP gives you some sort of traffic quota you may want to add some quotas to your firewall configuration. You may fully understand the consequences of streaming on your ISP quota but maybe the rest of the family may not: giving them a quota might save you a fit when you need to do an urgent job that requires internet connection. There a re various ways you could go about putting quotas on specific clients on your LAN just keep in mind a few things: | * las reglas con cuotas dejan de coincidir una vez que se excede la cuota |
* rules with quotas stop matching once quota is exceeded | * el lavado de sus tablas reiniciará todos los contadores de cuotas |
* flushing your tables will reset all quota counters | * los contadores de cuota no se reinician cuando su ISP restablece su cuota de Internet |
* quota counters do not reset themselves whenever your ISP resets your internet quota | |
| |
Here's an example of how you could go about putting a quota on the FORWARD chain to stop a client using more then 300Mb daily: | Este es un ejemplo de cómo podría poner una cuota en la cadena FORWARD para detener a un cliente que usa más de 300Mb diarios: |
| |
-A FORWARD -p all -m conntrack --ctstate ESTABLISHED,RELATED ! -d 192.168.0.200 -j ACCEPT -m comment --comment "allow related traffic but not for 192.168.0.200 that has a quota" | -A FORWARD -p all -m conntrack --ctstate ESTABLISHED,RELATED ! -d 192.168.0.200 -j ACCEPT -m comment --comment "allow related traffic but not for 192.168.0.200 that has a quota" |
-A FORWARD -s 192.168.0.200 -d 192.168.0.0/24 -j ACCEPT -m quota --quota 314572800 -m comment --comment "allow LAN traffic anyway for 192.168.0.200" | -A FORWARD -s 192.168.0.200 -d 192.168.0.0/24 -j ACCEPT -m quota --quota 314572800 -m comment --comment "allow LAN traffic anyway for 192.168.0.200" |
| |
Or you could use a user-defined chain to group all your quoted traffic into a single quota like this: | O puede usar una cadena definida por el usuario para agrupar todo su cuota de tráfico en una sola cuota como esta: |
| |
-A FORWARD -d 192.168.1.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow quota related traff. to quoted LAN" -j QUOTA | -A FORWARD -d 192.168.1.0/24 -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment "allow quota related traff. to quoted LAN" -j QUOTA |
-A QUOTA -m comment --comment "when quota is exceeded start rejecting" -j REJECT --reject-with icmp-port-unreachable | -A QUOTA -m comment --comment "when quota is exceeded start rejecting" -j REJECT --reject-with icmp-port-unreachable |
| |
Along with this you need to flush the iptables counters every day (or every how often you wnat the quota counters to reset) with something like this | Junto con esto, debe vaciar los contadores de iptables todos los días (o cada vez que quiera reiniciar los contadores de cuotas) con algo como esto |
iptables -Z | iptables -Z |
I generally do this with an AT job because AT has less adverse effects then CRON on readonly systems. | |
Here's one possible way of making an AT job re schedule itself every day at 00:30: | Generalmente hago esto con un trabajo de AT porque AT tiene menos efectos adversos que CRON en sistemas de solo lectura. |
| Aquí hay una manera posible de hacer que un trabajo de AT se programe todos los días a las 00:30: |
# cat /usr/local/bin/flush_iptables_counters | # cat /usr/local/bin/flush_iptables_counters |
/usr/sbin/iptables -Z | /usr/sbin/iptables -Z |
/usr/bin/at -f /usr/local/bin/flush_iptables_counters "0030 tomorrow" | /usr/bin/at -f /usr/local/bin/flush_iptables_counters "0030 tomorrow" |
# | # |
Just run it once and it should then re schedule itself. On a readonly system you will need to have atjobs directory on tmpfs and run it the first time from rc.local. | |
| |
| Simplemente ejecútelo una vez y luego debería volver a programarse. En un sistema de solo lectura, deberá tener el directorio atjobs en tmpfs y ejecutarlo la primera vez desde rc.local. |
| |
| |
===== 4.5 PPP ===== | ===== 4.5 PPP ===== |
Tectonically you're not going to need this on a pure access point (AP) but it's common that the AP also acts as router for your internet access, in this case you will need to configure your PPP link from your AP. | Tectónicamente, no va a necesitar esto en un punto de acceso puro (AP), pero es común que el AP también actúe como enrutador para su acceso a Internet, en este caso necesitará configurar su enlace PPP desde su AP. |
Depending on how your ISP provides your internet access you might or might not have an external modem which may or may not understand pppoe protocol. Nowadays it seems to have become less common to have internal *DSL modem wile external modems have become more popular. Most of them use pppoe protocol. Technically there's not much difference between configuring an internal modem with just the use of pppd on an external modem that uses pppoe, the former will require an extra package (rp-pppoe) and just a few extra options in the configuration file. I'll show how to configure with the use of pppoe, if that's not your case just strip off a few options. | Dependiendo de la forma en que su ISP le brinde acceso a Internet, puede tener o no un módem externo que puede o no entender el protocolo pppoe. Hoy en día parece que se ha vuelto menos común tener módem *DSL interno mientras que los módems externos se han vuelto más populares. La mayoría de ellos utilizan el protocolo pppoe. Técnicamente, no hay mucha diferencia entre configurar un módem interno con solo el uso de pppd en un módem externo que usa pppoe, el primero requerirá un paquete adicional (rp-pppoe) y solo algunas opciones adicionales en el archivo de configuración. Mostraré cómo configurar con el uso de pppoe, si ese no es su caso, solo elimine algunas opciones. |
| |
If you have installed both ppp and rp-pppoe you will find a that most of the configuration has already been done with most commonly usefull options in /etc/ppp, still there is a limited amount of work that needs to be done and I also advise to detour from the use of pppoe-start to initiate the connection to stick to something that remains the same regardless of whether you're using pppoe or not. To do this I configure a peer for my ISP and add in there a few options instructing pppd to use pppoe plugin. | Si ha instalado tanto ppp como rp-pppoe, encontrará que la mayoría de la configuración ya se ha realizado con las opciones más comunes en /etc/ppp, aún hay una cantidad limitada de trabajo que debe hacerse y también se aconseja desviarse del uso de pppoe-start para iniciar la conexión para mantener algo que permanece igual, independientemente de si está utilizando pppoe o no. Para hacer esto, configuro un igual para mi ISP y agrego algunas opciones que le indican a pppd que use el complemento pppoe. |
| |
To do this you need to create a file in /etc/ppp/peers, call it something that will make it obvious to you what the peer will connect to: for instance if your ISM is called "Telco" you might want to create a file called something like /etc/ppp/peers/telco and here's what needs to go in there typically: | Para hacer esto, necesita crear un archivo en /etc/ppp/peers, llámelo como algo que le haga evidente a qué se conectará el peer: por ejemplo, si su ISM se llama "Telco", es posible que desee crear un archivo llamado algo así como /etc/ppp/peers/telco y esto es lo que debe incluir normalmente: |
| |
plugin rp-pppoe.so | plugin rp-pppoe.so |
updetach | updetach |
| |
If your ISM charges you based on time rather than band usage you might want to uncomment the idle and demand options so that the PPP connection will not stay alive when it's not actually in use. | Si su ISM le cobra por tiempo en lugar del uso de la banda, es posible que desee descomentar las opciones de inactividad y demanda para que la conexión PPP no permanezca activa cuando no esté en uso. |
Pot as much as you can here in the peer and as little as possible in the /etc/ppp/options file so that you can possibly have one or more backup peres that are functional without editing any configuration. | Haga lo mejor que pueda aquí en el par y tan poco como sea posible en el archivo /etc/ppp/options, de modo que posiblemente pueda tener una o más tareas de copia de seguridad que funcionen sin editar ninguna configuración. |
If these options do not work for you I suggest you read the /usr/doc/rp-pppoe-3.11/HOW-TO-CONNECT documentation and use pppoe-setup for a guided configuration, fire up the connection with pppoe-start and take not of the options used, then edit accordingly your peer and revert back to using pppd call <peer>. | Si estas opciones no funcionan para usted, le sugiero que lea la documentación /usr/doc/rp-pppoe-3.11/HOW-TO-CONNECT y use pppoe-setup para una configuración guiada, inicie la conexión con pppoe-start y tome No es una de las opciones utilizadas, luego edite en consecuencia a su par y vuelva a usar pppd call <peer>. |
| |
We're not done yet we need to edit pap-secrets or chap-secrets so that pppd can complete authentication. Which file needs to be addressed may depend on your isp but if you put the same content in both then you should be ok whatever your ISP requires. | Aún no hemos terminado. Necesitamos editar pap-secrets o chap-secrets para que pppd pueda completar la autenticación. El archivo que deba abordarse puede depender de su ISP, pero si coloca el mismo contenido en ambos, debería estar bien, independientemente de lo que requiera su ISP. |
| |
| |
# Secrets for authentication using PAP | # Secrets for authentication using PAP |
# client server secret IP addresses | # client server secret IP addresses |
"username your ISM gave you" * "password your ISM gave you" | "username your ISM gave you" * "password your ISM gave you" |
| |
You can now fire up your internet connection with | Ahora puede activar su conexión a Internet con |
pppd call telco | pppd call telco |
| |