Dynamic VLAN to konfiguracja, która umo?liwia nam autoryzowanie u?ytkownika oraz automatyczne przypisanie do zdefiniowanej dla niego sieci VLAN. Dzi?ki temu uzyskujemy ca?kowit? izolacj? i kontrol? poszczególnych grup roboczych np. w firmie. W wyniku przedstawionej poni?ej konfiguracji ka?da z grup roboczych otrzyma dost?p do sieci z innym adresem sieciowym. Je?li jaki? u?ytkownik nie zostanie zautoryzowany poprawnie , b?d? nie ma odpowiedniego certyfikatu zostanie przypisany do grupy domy?lnej gosc która b?dzie ca?kowicie odizolowana od pozosta?ych grup. Do tej pory tylko switche zarz?dzalne, które jeszcze do tego musz? wspiera? t? konkretn? opcj? obs?ugiwa?y dynamic vlan. Z punktów bezprzewodowych te? by?o ci??ko wybiera? co? co to wspiera. Przedstawi? konfiguracj? pod OpenWrt, która wspiera t? funkcjonalno?? tylko na jednym identyfikatorze SSID (nie ma potrzeby mie? kilku identyfikatorów SSID w AP). A wszystko to obs?uguje hostapd (inaczej wpad)
Wszystko co opisz? by?o testowane na routerze AG241V2-EU, WR1043ND, switch SRW208G (switch nie wspiera niestety dynamic vlan ale ma zwyk?e statyczne vlany) - wersja OpenWrt Backfire 10.03.x
Jakie sterowniki wspieraj? ? Powinny wszystkie wedle mac80211. Czyli atk9 (no to radio ma wr1043nd), atk5 (nie testowa?em)
Sterowniki madwifi - brak wsparcia. Chocia? pokaza?y si? patche do sterownika i ludzie podobno uruchomili na Ubiquiti patrz http://www.ubnt.com/forum/showthread.php?t=20194
Pe?na dokumentacja osi?galna jest na stronie hostapd (patrz pliki hostapd.conf i hostapd.vlan).
Skrypty, pakiety, patche do tego artyku?u s? w moim repozytorium.
Schemat sieci testowej:
Instalacja oprogramowania na routerze AG241V2-EU:
Nale?y zainstalowa? serwer freeradius2 np. na podstawie mojego tekstu: Konfiguracja radius jako kontrolera autoryzacji WIFI pod OpenWrt
Instalacja oprogramowania na routerze WR1043ND:
S? dwie mo?liwo?ci instalacji oprogramowania: samodzielna kompilacja lub instalacja z gotowych przygotowanych przeze mnie paczek hostapd-full lub wpad-full.
Pobranie i instalacja pakietu wpad-full z mojego repozytorium:
opkg install http://rpc.one.pl/pliki/openwrt/backfire/10.03.x/atheros/hostapd/wpad_20100418-1-rpc_ar71xx.ipk
Samodzielna kompilacja:
a. Dodajemy r?cznie na samym dole opcj? do pliku package/hostapd/files/hostapd-full.config
CONFIG_FULL_DYNAMIC_VLAN=y
b.Podmieniamy plik w katalogu package/hostapd/files/hostapd.sh na plik przygotowany przeze mnie w moim repozytorium - zmieniony hostapd.sh do pobrania z tej lokalizacji.
c.Kompilujemy pakiet albo dystrybucj? wedle opisu ze strony http:\\openwrt.pl
Teraz mamy ju? mo?liwo?? skonfigurowania sobie nowych opcji poprzez UCI lub w pliku /etc/config/wireless
Konfiguracja routera AG241V2-EU:
Ca?? konfiguracj? routera opisa?em w tek?cie: Instalacja OpenWRT na Modemie/Routerze LINKSYS AG241V2-EU
Konfiguracj? VLAN przeprowadzamy w pliku /etc/config/network w przedstawionym przyk?adzie wygl?da nast?puj?co:
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' lan'
option 'ifname' 'eth0'
option 'proto' 'static'
option 'ipaddr' '192.168.1.1'
option 'netmask' '255.255.255.0'
config 'interface' 'wan'
# PPPoA:
option 'ifname' 'ppp0'
option 'unit' '0'
option 'proto' 'pppoa'
option 'encaps' 'vc'
option 'vpi' '0'
option 'vci' '35'
option 'keepalive' '5,5'
option 'username' 'xxxxxxx'
option 'password' 'xxxxxxxx'
config 'interface' 'vlan9'
option 'ifname' 'eth0.9'
option 'proto' 'static'
option 'ipaddr' '192.168.9.1'
option 'netmask' '255.255.255.0'
config 'interface' 'vlan10'
option 'ifname' 'eth0.10'
option 'proto' 'static'
option 'ipaddr' '192.168.10.1'
option 'netmask' '255.255.255.0'
config 'interface' 'vlan11'
option 'ifname' 'eth0.11'
option 'proto' 'static'
option 'ipaddr' '192.168.11.1'
option 'netmask' '255.255.255.0'
Konfigurujemy dnsmasq w pliku /etc/config/dhcp:
config dnsmasq
option domainneeded 1
option boguspriv 1
option filterwin2k '0' #enable for dial on demand
option localise_queries 1
option local '/lan/'
option domain 'lan'
option expandhosts 1
option nonegcache 0
option authoritative 1
option readethers 1
option leasefile '/tmp/dhcp.leases'
option resolvfile '/tmp/resolv.conf.auto'
config dhcp lan
option interface lan
option ignore 1
config dhcp wan
option interface wan
option ignore 1
config dhcp vlan9
option interface vlan9
option start 100
option limit 150
option leasetime 12h
config dhcp vlan10
option interface vlan10
option start 100
option limit 150
option leasetime 12h
config dhcp vlan11
option interface vlan11
option start 100
option limit 150
option leasetime 12h
Konfigurujemy firewalla w pliku /etc/config/firewall:
config 'defaults'
option 'syn_flood' '1'
option 'input' 'ACCEPT'
option 'output' 'ACCEPT'
option 'forward' 'ACCEPT'
#zone
config 'zone'
option 'name' 'wan'
option 'input' 'REJECT'
option 'output' 'ACCEPT'
option 'forward' 'ACCEPT'
option 'masq' '1'
config 'zone'
option 'name' 'vlan9'
option 'input' 'ACCEPT'
option 'output' 'ACCEPT'
option 'forward' 'ACCEPT'
config 'zone'
option 'name' 'vlan10'
option 'input' 'ACCEPT'
option 'output' 'ACCEPT'
option 'forward' 'ACCEPT'
config 'zone'
option 'name' 'vlan11'
option 'input' 'ACCEPT'
option 'output' 'ACCEPT'
option 'forward' 'ACCEPT'
#rule
config 'rule'
option 'src' 'wan'
option 'proto' 'udp'
option 'dest_port' '68'
option 'target' 'ACCEPT'
config 'rule'
option 'src' 'wan'
option 'proto' 'icmp'
option 'icmp_type' 'echo-request'
option 'target' 'ACCEPT'
config 'rule'
option 'proto' 'tcp'
option 'dest_port' '22'
option 'target' 'ACCEPT'
#forwarding
config 'forwarding'
option 'src' 'vlan9'
option 'dest' 'wan'
config 'forwarding'
option 'src' 'vlan10'
option 'dest' 'wan'
config 'forwarding'
option 'src' 'vlan11'
option 'dest' 'wan'
#other
config 'include'
option 'path' '/etc/firewall.user'
Konfiguracja freeradius2 na AG241V2-EU:
Podam tylko zawarto?? plików, które mog? si? zmienia?. Reszta jest tak samo jak moim arcie o radiusie.
Plik /etc/freeradius2/clients.conf uzupe?niamy o definicje wr1043nd tak aby móg? autoryzowa?:
client 192.168.1.10 {
secret = haslo
shortname = 192.168.1.10
nastype = other
}
Plik /etc/freeradius2/users winien mniej wi?cej by? w formacie poni?szym:
###############################################################################
## Wpisy dla Linksys SRW208G
################################################################################
"username" Cleartext-Password := "haslo", NAS-IP-Address == 192.168.1.2, NAS-Port == 1
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-ID := 10,
Reply-Message = "Witam w grupie marketing, %{User-Name}"
DEFAULT Auth-Type == EAP, NAS-IP-Address == 192.168.1.2
Reply-Message := "Witam w grupie sprzedaz %{User-Name}",
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-ID := 11,
################################################################################
## Wpisy dla hostapd w WR1043ND
################################################################################
"username" Cleartext-Password == "haslo", Called-Station-Id == "00-23-CD-36-B4-BA:eap_vl"
Tunnel-Type = VLAN,
Tunnel-Medium-Type = IEEE-802,
Tunnel-Private-Group-ID := 10,
Reply-Message = "Witam w grupie sprzedaz, %{User-Name}"
DEFAULT Auth-Type == EAP, Called-Station-Id == "00-23-CD-36-B4-BA:eap_vl"
Reply-Message := "Witam w grupie marketing %{User-Name}",
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-ID := 11
DEFAULT Auth-Type := Accept, Called-Station-Id == "00-23-CD-36-B4-BA:eap_vl"
Tunnel-Type = 13,
Tunnel-Medium-Type = 6,
Tunnel-Private-Group-ID := 9,
Reply-Message = "Witam goscia, %{User-Name}"
Pierwszy wiersz sekcji to s? warunki (w jednej linii) a pod spodem parametry jakie s? wysy?ane do hostapd lub switcha.
Reszt? opisa?em w tek?cie: Konfiguracja radius jako kontrolera autoryzacji WIFI pod OpenWrt
Konfiguracja routera WR1043ND:
Router AG241V2-EU jest po??czony z portem RJ-45 nr.4 w routerze WR1043ND i do tej konfiguracji ustawi? obs?ug? VLAN na poszczególnych portach.
Wi?cej na temat VLAN w artykule: Konfiguracja switcha i vlan na podstawie swconfig w routerze WR1043ND pod OpenWrt
Konfigurujemy VLAN w pliku /etc/config/network:
config 'interface' 'loopback'
option 'ifname' 'lo'
option 'proto' 'static'
option 'ipaddr' '127.0.0.1'
option 'netmask' '255.0.0.0'
config 'interface' 'lan'
option 'ifname' 'eth0.1'
option 'type' 'bridge'
option 'proto' 'static'
option 'ipaddr' '192.168.1.10'
option 'netmask' '255.255.255.0'
config 'switch'
option 'name' 'rtl8366rb'
option 'reset' '1'
option 'enable_vlan' '1'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '1'
option 'ports' '0 1 2 3 4 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '2'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '3'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '4'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '5'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '6'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '7'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '8'
option 'ports' '0 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '9'
option 'ports' '4t 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '10'
option 'ports' '4t 5t'
config 'switch_vlan'
option 'device' 'rtl8366rb'
option 'vlan' '11'
option 'ports' '4t 5t'
oraz MUSIMY dopisa? do pliku /etc/rc.local przypisanie portu 4:
swconfig dev rtl8366rb port 4 set pvid 1
swconfig dev rtl8366rb port 0 set pvid 1
Ps. ja sobie jeszcze przypisa?em port nr.0 w routerze do sieci lan (chc? wykorzysta? ca?ego switcha i niepotrzebny mi wan) - nie jest to wymagane. Generalnie skupiamy si? tylko na porcie RJ-45 nr.4
Konfigurujemy wireless w pliku /etc/config/wireless:
config 'wifi-device' 'radio0'
option 'type' 'mac80211'
option 'channel' '1'
option 'macaddr' '00:23:cd:36:b4:ba'
option 'hwmode' '11ng'
option 'htmode' 'HT20'
option 'ht_capab' 'SHORT-GI-40 DSSS_CCK-40'
option 'disabled' '0'
option 'country' 'PL'
config 'wifi-iface'
option 'device' 'radio0'
option 'network' 'lan'
option 'ssid' 'eap_vl'
option 'mode' 'ap'
option 'encryption' 'wpa2'
option 'server' '192.168.1.1'
option 'port' '1812'
option 'key' 'haslo'
option 'dynamic_vlan' '2'
option 'vlan_file' '/etc/config/hostapd.vlan'
option 'vlan_tagged_interface' 'eth0'
Plik /etc/config/hostapd.vlan winien wygl?da?:
* wlan0.#
Jak wida? pojawi?y si? nowe opcje:
dynamic_vlan
- 0 - wy??cza wsparcie dla dynamic vlan
- 1 - opcjonalnie; u?ywa domy?lnie interfejsu je?li server RADIUS nie przypisuje identyfikatora VLAN
- 2 - wymagane; odrzuca ka?de po??czenie je?li server RADIUS nie przypisze identyfikatora VLAN
vlan_tagged_interface
- definiuje g?ówny interfejs sieciowy na którym hostapd ma tworzy? VLAN. Za?ó?my, ?e u?ytkownikowi przypisali?my VLAN 9. W tym wypadku hostapd utworzy do interfejsu eth0 interfejs wirtualny vlan9(inaczej eth0.9) a potem utworzy bridge mi?dzy vlan9 a interfejsem wifi(o tym czytaj dalej)
vlan_file
- plik w którym trzymamy definicje vlan. Format pliku hostapd.vlan jest nast?puj?cy:
1 wlan0.1
2 wlan0.2
#wildcard
* wlan0.#
- Przeanalizujmy nasze opcj?. Pierwsza kolumna (1,2) definiuje nr VLAN wedle standardu 802.1Q. Druga kolumna definiuje interfejs wirtualny (wlan0.1,wlan0.2), który jest automatycznie tworzony w czasie startu hostapd. Tutaj ma?a uwaga nie musi by? to nazwa interfejsu mo?e by? np. co? takiego:
9 marketing
10 sprzedaz
11 gosc
ten interfejs jest tylko widoczny pod openwrt. Na zewn?trz nigdzie nie jest widoczny. On s?u?y tylko i wy??cznie po to aby utworzy? bridge mi?dzy np. eth0.9 a wlan0.9.
Zamiast tworzy? statyczne VLAN mo?emy zrobi? konfiguracj? dynamiczn?. Wpis w pliku hostapd.vlan
* wlan0.#
to zapis, który tworzy odpowiednie VLAN i BRIDGE mi?dzy nimi dla obu interfejsów (eth0 i wlan0) w czasie logowania si? u?ytkownika do sieci. Czyli normalnie w routerze nie ma vlan - s? tworzone dynamicznie w momencie logowania.
BRIDGE który jest automatycznie tworzony przez hostapd mo?e si? nazywa? np.: brvlan9=vlan9+wlan0.9
Wszystkie te opcje s? osi?galne poprzez UCI:
wireless.radio0=wifi-device
wireless.radio0.type=mac80211
wireless.radio0.channel=1
wireless.radio0.macaddr=00:23:cd:36:b4:ba
wireless.radio0.hwmode=11ng
wireless.radio0.htmode=HT20
wireless.radio0.ht_capab=SHORT-GI-40 DSSS_CCK-40
wireless.radio0.disabled=0
wireless.radio0.country=PL
wireless.@wifi-iface[0]=wifi-iface
wireless.@wifi-iface[0].device=radio0
wireless.@wifi-iface[0].network=lan
wireless.@wifi-iface[0].ssid=eap_vl
wireless.@wifi-iface[0].mode=ap
wireless.@wifi-iface[0].encryption=wpa2
wireless.@wifi-iface[0].server=192.168.1.1
wireless.@wifi-iface[0].port=1812
wireless.@wifi-iface[0].key=haslo
wireless.@wifi-iface[0].dynamic_vlan=2
wireless.@wifi-iface[0].vlan_file=/etc/config/hostapd.vlan
wireless.@wifi-iface[0].vlan_tagged_interface=eth0
UWAGA:
Je?li mamy na WR1043ND uruchomionego dnsmasq to musimy dokonfigurowa? go dodaj?c do pliku /etc/config/dhcp poni?sze opcje w sekcji "config dnsmasq"
list notinterface brvlan9
list notinterface brvlan10
list notinterface brvlan11
Je?li tego nie zrobimy mog? wyst?pi? poni?sze komunikaty:
OpenWrt daemon.warn dnsmasq-dhcp[1240]: DHCP packet received on brvlan11 which has no address
Jak wida? pojawi?y si? nam nowe interfejsy. S? one tworzone przez hostapd automatyczne. Krótko mówi?c to bridge.
Konfiguracja switcha Linksys SRW208G:
Przedstawi? tylko prost? konfiguracj? switcha ze statycznymi vlan. Switch SRW208G nie posiada opcji dynamic vlan dla protoko?u autoryzacji 802.1x, b?d? nie posiada opcji default guest vlan a tylko taki mia?em w zasi?gu r?ki. Implikuje to to, i? musimy z góry zdefiniowa? VLAN na swichu - tzn. musimy przypisa? VLAN do konkretnych portów. Krótko mówi?c switch b?dzie nam tylko autoryzowa? u?ytkowników.
Jeszcze ma?a uwaga. Mo?emy usera ograniczy? do numeru portu NAS-port. Ale dzia?a to tylko przy autoryzacji PEAP, nie dzia?a niestety przy TLS i TTLS.
Konfiguracj? wykona?em dla poni?szych za?o?e?:
- VLAN 9 - Porty 1,2
- VLAN 10 - Porty 3,4
- VLAN 11 - Porty 5,6
- TRUNK - Porty 7,8,9
Logowanie si? do sieci WIFI:
Logujemy si? identycznie jak opisa?em w artykule : Konfiguracja radius jako kontrolera autoryzacji WIFI pod OpenWrt
U?ytkownik nawet nie wie, ?e wszystko si? robi automatycznie i przezroczy?cie dla niego.
Zosta?y wykorzystane dodatkowe poni?sze opcje pakietu hostapd:
vlan_tagged_interface
vlan_file
dynamic_vlan
Pe?ny plik konfiguracyjny hostapd mo?e wygl?da? nast?puj?co:
ctrl_interface=/var/run/hostapd-phy0
driver=nl80211
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
tx_queue_data3_aifs=7
tx_queue_data3_cwmin=15
tx_queue_data3_cwmax=1023
tx_queue_data3_burst=0
tx_queue_data2_aifs=3
tx_queue_data2_cwmin=15
tx_queue_data2_cwmax=63
tx_queue_data2_burst=0
tx_queue_data1_aifs=1
tx_queue_data1_cwmin=7
tx_queue_data1_cwmax=15
tx_queue_data1_burst=3.0
tx_queue_data0_aifs=1
tx_queue_data0_cwmin=3
tx_queue_data0_cwmax=7
tx_queue_data0_burst=1.5
hw_mode=g
channel=1
country_code=PL
ieee80211n=1
ht_capab=[HT20][SHORT-GI-40][DSSS_CCK-40]
interface=wlan0
auth_server_addr=192.168.1.1
auth_server_port=1812
auth_server_shared_secret=haslo
nas_identifier=
eapol_key_index_workaround=1
radius_acct_interim_interval=300
dynamic_vlan=2
vlan_file=/etc/config/hostapd.vlan
vlan_tagged_interface=eth0
dump_file=/mnt/sda1/hostapd.dump
ieee8021x=1
auth_algs=1
wpa_key_mgmt=WPA-EAP
wpa_group_rekey=300
wpa_gmk_rekey=640
wpa=2
wpa_pairwise=CCMP
ssid=dyn_vlan
bridge=br-lan
wmm_enabled=1
bssid=00:23:cd:36:b4:ba
ignore_broadcast_ssid=0
Wszystkie zmienione pliki znajdziesz w moim repozytorium.
Najaktualniejsz? wersj? tego dokumentu znajdziesz zawsze pod adresem http://rpc.one.pl