I want hostapd to assign each station a given VLAN based on MAC address. BTW, my network is quite small. Using RADIUS would be an overkill.
According to the hostapd manual:
Optionally, the local MAC ACL list (accept_mac_file) can be used to set static client MAC address to VLAN ID mapping.
Let's assume I only have 1 station (with MAC DE:AD:BE:EF:CA:FE). I've created a VLAN using:
sudo ip link add link wlan0 name vlan.100 type vlan id 100 sudo ip addr add 192.168.100.1/24 brd 192.168.100.255 dev vlan.100 sudo ip link set dev vlan.100 up
On hostapd.conf I'm using:
# Interface to use interface=wlan0 # Driver driver=nl80211 # Name of the network ssid=YaddaYadda # Use the 2.4GHz band: g = IEEE 802.11g (2.4 GHz) hw_mode=g # Use channel 6 channel=6 # Enable 802.11n ieee80211n=1 # Enable 40MHz channels with 20ns guard interval ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] # Accept only known MAC addresses macaddr_acl=1 accept_mac_file=/etc/hostapd/accept # Use WPA authentication auth_algs=1 # Send empty SSID in beacons and ignore probe request frames that do not specify full SSID ignore_broadcast_ssid=1 # Use WPA2 wpa=2 # Use a pre-shared key wpa_key_mgmt=WPA-PSK # Enable the wireless multimedia extensions wmm_enabled=1 # The network hashed passphrase wpa_psk=786451648446NotReallyTheHashedPassphrase849989654651651651654564 # Use AES, instead of TKIP rsn_pairwise=CCMP # Isolate Clients ap_isolate=1 # HOSTAPD event logger configuration logger_syslog=-1 logger_syslog_level=2 logger_stdout=-1 logger_stdout_level=2 # Country code country_code=NO
On file /etc/hostapd/accept I have included the following:
hostapd starts without any issues. However, after connecting my station with MAC DE:AD:BE:EF:CA:FE, I'm still getting all the traffic on wlan0 and not on vlan.100...
hostapd does not say much about how the file accept_mac_file should look like to map MAC <-> VLAN ID. I've tried comma, with and without spaces, but no luck...
Has anyone been able to get this MAC <-> VLAN mapping to work?