Skip to content

Instantly share code, notes, and snippets.

@Koratsuki
Last active January 6, 2023 15:28
Show Gist options
  • Save Koratsuki/e6f0d9f8a64ae9f41bf9ec94f2cf1a84 to your computer and use it in GitHub Desktop.
Save Koratsuki/e6f0d9f8a64ae9f41bf9ec94f2cf1a84 to your computer and use it in GitHub Desktop.

Access Point dentro de una VM en Proxmox

Ejecutar este procedimiento en una VM con Debian/Ubuntu con el dongle WiFi attached/passthrough.

systemctl stop systemd-resolved
systemctl disable systemd-resolved
systemctl mask systemd-resolved

Actualizamos el sistema:

apt update && apt dist-upgrade -y && apt clean

Si se va a compilar el driver del dongle WiFi:

apt install mc net-tools iw git dkms \
 build-essential dkms libelf-dev \
 linux-headers-`uname -r`

De ser necesario utilitarios:

apt install dnsutils sudo rsync wget \
 mc net-tools p7zip-full htop iftop \
 telnet screen multitail lzma xz-utils \
 rar unrar && apt clean

Agregar:

nano /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevnames=0"

Ejecutar:

update-grub2

Y reniciar.

De ser necesario, compilar el driver del dongle USB y ponerlo a funcionar. Si el driver está en el repo, perfecto. El dispositivo debe soportar el modo AP, si no, no va a funcionar:

iw wlan0 info

o:

iw phy0 info

Ver apartado:

- Supported interface modes:
	* IBSS
    * managed
    * AP 		<------------ Este modo!!!
    * monitor
    * P2P-client
    * P2P-GO

Configurar/ajustar la configuración de red:

auto eth0
iface eth0 inet static
	address 10.0.0.251
	netmask 255.255.255.0
	gateway 10.0.0.10
allow-hotplug eth0

auto wlan0
iface wlan0 inet static
	address 192.168.1.250
	netmask 255.255.255.0

E instalar lo necesario:

apt install -y hostapd dnsmasq iptables-persistent

Diálogo: Save rules for iptables v4/6

Redirigir todo el trafico entrante por la interfaz wifi para eth0:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Salvar y aplicar las reglas:

iptables-save > /etc/iptables/rules.v4

Para habilitar el forwarding del kernel:

nano /etc/sysctl.conf
net.ipv4.ip_forward=1

Aplicar los cambios:

sysctl -p

Habilitar los servicios:

systemctl unmask hostapd
systemctl enable hostapd
systemctl enable dnsmasq

Editar la config[hostapd]:

nano /etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.conf"
DAEMON_OPTS="-dd -t -f /var/log/hostapd.log"

nano /etc/hostapd/hostapd.conf
driver=nl80211
country_code=US
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
auth_algs=1
beacon_int=100
channel=6
hw_mode=g

# If 40MHz supported
ht_capab=[SHORT-GI-40][HT40+][HT40-][DSSS_CCK-40]

interface=wlan0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

# SSID
ssid=AP_WIFI
# WiFi password
wpa_passphrase=112233*-+
# HiddenSSID
ignore_broadcast_ssid=1

# Isolate clients
ap_isolate=1

# Testing for 802.11n standard - WORKS
ieee80211n=1
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0

Ahora vamos a configurar DNSMasq:

mv /etc/dnsmasq.conf{,.orig}
nano /etc/dnsmasq.conf
# Options
dhcp-authoritative
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
log-dhcp
#log-queries

# Use the require wireless interface - usually wlan0
interface=wlan0
dhcp-range=192.168.1.149,192.168.1.200,255.255.255.0,24h

# Allowed cients
dhcp-host=34:de:1a:0e:a0:e2,192.168.1.150,laptop_pepe
dhcp-host=84:2e:27:4b:f0:34,192.168.1.151,celular_pepe
dhcp-host=0a:0b:10:a4:bd:39,192.168.1.152,tablet_chicho

# All not listed before, GTFO!
dhcp-ignore=tag:!known

Y ahora reiniciar los servicios:

/etc/init.d/hostapd restart
/etc/init.d/dnsmasq restart

Y listo.

Notas y otros detalles:

Ver usuarios conectados

iw dev wlan0 station dump

o:

hostapd_cli all_sta

Si esta última opción le da error, es porque no tienen las siguientes dos directivas en la configuración:

ctrl_interface=/var/run/hostapd
ctrl_interface_group=0

Para ver los usuarios por IP/MAC:

arp -an | grep "192.168.1"

Siendo 192.168.1.x/24 el direccionamiento de la red wifi.

Des-autenticar y bloquear usuarios: Solo 3 líneas

hostapd_cli deauthenticate 00:11:22:AA:BB:CC
hostapd_cli disassociate 00:11:22:AA:BB:CC
iptables -A INPUT -m mac --mac-source 00:11:22:AA:BB:CC -j DROP

Filtrado de MAC directamente en el hostapd.conf:

Será necesario añadir un par de parámetros al archivo /etc/hostapd/hostapd.conf:

macaddr_acl=0
#deny_mac_file=/etc/hostapd/hostapd.deny
accept_mac_file=/etc/hostapd/hostapd.accept

Existe otro método, pero esta es el más común, donde se van a aceptar todas las direcciones físicas que aparezcan dentro del fichero /etc/hostapd/hostapd.accept y bloqueando las demás.

Un ligero detalle que se me pasó. Si desean que el dnsmasq haga forwarding de todas las encuestas dns a otro dns, debemos escribir lo siguiente en la config:

no-resolv
server=/localnet/192.168.1.1 # change ip for your ip-server
server=10.0.0.10
server=8.8.8.8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment