Zbiór poleceń pozwalających na podstawową konfigurację OpenWrt
Ostatnia zmiana: 2025-03-29 21:14
Po zainstalowaniu (lub przywróceniu ustawień domyślnych) router jest już pełni funkcjonalnym urządzeniem:
- router ma ustawiony adres (od strony lan) 192.168.1.1
- port wan oczekuje pobrania adresu z dhcp
- do portów lan można podłączyć już komputery - działa tam serwer dhcp przydzielający adresy z określonego zakresu oraz cache dns
- sieć wifi jest domyślnie wyłączona - nie można podłączyć się do routera przez wifi, trzeba ją włączyć i ew nadać hasło
- brak hasła administracyjnego - trzeba je ustawić logując się telnetem do routera lub z gui (LuCI)
Wystarczy więc podłączyć go z jednej strony np. do modemu kablówki czy modemu adsl w wyjściem RJ45, podłączyć komputer przy pomocy kabla do portu LAN routera i wszystko powinno działać prawidłowo.
Po każdym restarcie routera a przed instalacją nowego pakietu trzeba zrobić opkg update!
Po skonfigurowaniu danej usługi trzeba ją zrestartować lub wykonać restart routera!
Większość rzeczy można
wyklikać w gui, łącząc się z routerem pod adresem http://192.168.1.1, o ile oczywiście używa się obrazu który standardowo ma już wbudowanego środowisko graficzne.
Strefa czasowa
# uci set system.@system[0].timezone=CET-1CEST,M3.5.0,M10.5.0/3
# uci commit system
w/w wpis to strefa czasowa
Europe/Warsaw. W systemie jest już klient serwera czasu, po podłączeniu do internetu powinien samodzielnie ustawić prawidłowy czas jeżeli tylko będzie dostęp do sieci.
USB storage
Wraz z obsługą systemu plików Ext2, Ext3, Ext4, Fat16/Fat32
# opkg install kmod-usb-core kmod-usb2 kmod-usb3 kmod-usb-storage kmod-usb-storage-uas
# opkg install kmod-fs-ext4
# opkg install kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1
Dla niektórych platform może być wymagany pakiet
kmod-usb-uhci lub
kmod-usb-ohci.
Dla Backfire do obsługi Ext2/Ext3 należy zainstalować pakiety
kmod-fs-ext2 oraz kmod-fs-ext3.
Do obsługi NTFS należy zainstalować pakiet
ntfs-3g (dla starszych wydań) lub
kmod-fs-ntfs3 (dla nowszych wydań)
lub
# opkg install kmod-fs-ntfs3
Do obsługi Exfat należy zainstalować pakiet
kmod-fs-exfat
# opkg install kmod-fs-exfat
Zabezpieczanie WiFi
Jeżeli nie chcemy mieć otwartego łącza wifi i użyczać sąsiadom internetu, należy odpowiednio włączyć zabezpieczenia. W pokazanym przykładzie ustawiamy:
- nazwa sieci: moja_siec
- kanał: 6
- kodowanie: WPA2/PSK (AES)
- hasło: hackme12
Zakładam, że konfiguracja pliku /etc/config/wireless jest domyślna (tryb pracy AP - Access Point - punkt dostępowy), więc niezbędne zmiany wyglądają tak: (zakładając że sekcja wifi-device i wifi-iface odnosi się do radia 2.4GHz, jeżeli sekcje dotyczą 5GHz należy zmienić kanał np. na 36 oraz htmode na np. VHT80):
# uci set wireless.@wifi-device[0].disabled=0
# uci set wireless.@wifi-device[0].channel=6
# uci set wireless.@wifi-iface[0].ssid=moja_siec
# uci set wireless.@wifi-iface[0].encryption=psk2
# uci set wireless.@wifi-iface[0].key=hackme12
# uci commit wireless
# wifi
Dla urządzeń obsługujących pełny interfejs N (300Mbps) warto dodać jeszcze kilka opcji:
# uci set wireless.@wifi-device[0].htmode=HT40
# uci set wireless.@wifi-device[0].noscan=1
# uci commit wireless
# wifi
Dla WPA2 (psk2 w oznaczeniu OpenWrt) hasło musi mieć 8 lub więcej znaków!
INFO: Nazwa sieci (SSID) nie może być dłuższa niż 32 znaki.
Włączenie fast roaming (IEEE802.11r)
Służy do szybkiego przełączania klientów pomiędzy AP
# uci set wireless.@wifi-iface[0].ieee80211r=1
# uci set wireless.@wifi-iface[0].mobility_domain=AFBC
# uci set wireless.@wifi-iface[0].nasid=ABCDEF000001
# uci commit wireless
# wifi
- jeżeli urządzenie ma kilka interfejsów radiowych to powinno być ustawione na każdym interfejsie
-
mobility_domain ma być takie samo na każdym AP. Jeżeli mamy takie samo SSID na każdym AP to można tą opcję pominąć, będzie automatycznie wyliczana z nazwy sieci
-
nasid musi być inne dla każdego AP
Praca jako APClient
Przy założeniu domyślnej konfiguracji (łączymy się bezprzewodowo do sieci Wi-Fi o następujących parametrach: nazwa sieci: moja_siec, szyfrowanie sieci to to WPA2/AES, hasło: hackme12)
# uci set wireless.@wifi-device[0].disabled=0
# uci set wireless.@wifi-iface[0].ssid=moja_siec
# uci set wireless.@wifi-iface[0].encryption=psk2
# uci set wireless.@wifi-iface[0].key=hackme12
# uci set wireless.@wifi-iface[0].mode=sta
# uci set wireless.@wifi-iface[0].network=wan
# uci del network.wan
# uci set network.wan=interface
# uci set network.wan.proto=dhcp
# uci commit
# reboot
Należy pamiętać o zmianie adresu sieci LAN jeżeli na wan dostajemy adres z zakresu 192.168.1.0/24 (192.168.1.x)
Praca jako AP (głupi AP, bez maskarady)
Kabel do routera podłączamy do jednego z portu LAN, zakładamy że główny router ma adresację 192.168.1.1.
# uci set network.lan.ipaddr=192.168.1.2
# uci set network.lan.gateway=192.168.1.1
# uci set network.lan.dns=192.168.1.1
# uci set dhcp.lan.ignore='1'
# uci commit
# reboot
Włączenie obsługi 12 i 13 kanału
# uci set wireless.@wifi-device[0].country=PL
# uci commit wireless
Nie wszystkie sterowniki to obsługują. Działa prawidłowo dla
mac80211.
Klonowanie adresu MAC
W zależności od wydania OpenWrt (w pliku /etc/config/network, sekcji może nie być i trzeba je zrobić):
- w obecnych wydaniach OpenWrt (np. 22.03, 23.05 i nowsze) wykorzystuje się sekcje device (może jej nie być i trzeba ją zrobić):
config device
option name 'eth0.2'
option macaddr '00:11:22:33:44:55'
- może istnieć sekcja związania z interfejsem wan o nazwie np.
wan_eth0_2_dev:
# uci set network.wan_eth0_2_dev.macaddr=00:11:22:33:44:55
# uci set network.wan_eth0_2_dev.name='eth0.2'
# uci commit network
(uwaga: trzeba podać konkretną nazwę interfejsu wan, nie zawsze jest to eth0.2)
- może istnieć sekcja związania z interfejsem wan o nazwie np.
wan_dev:
# uci set network.wan_dev.macaddr=00:11:22:33:44:55
# uci set network.wan_dev.name='eth0.2'
# uci commit network
(uwaga: trzeba podać konkretną nazwę interfejsu wan, nie zawsze jest to eth0.2)
Jeżeli nie ma w/w sekcji to można je utworzyć.
W starszych wydaniach OpenWrt można było także to zrobić wpisując adres MAC bezpośrednio do sekcji WAN:
# uci set network.wan.macaddr=00:11:22:33:44:55
# uci commit network
Dla mac80211 i potrzeby zmiany adresu MAC interfejsu radiowego należy wydać polecenie
# uci set wireless.@wifi-iface[0].macaddr=00:11:22:33:44:55
# uci commit wireless
Otworzenie portu ze strony wan
W tym przykładzie portu dla SSH. Tak samo robi się dla ftp'a czy klienta torrentów zainstalowanych
NA routerze
# uci add firewall rule
# uci set firewall.@rule[-1].name=ssh
# uci set firewall.@rule[-1].src=wan
# uci set firewall.@rule[-1].target=ACCEPT
# uci set firewall.@rule[-1].proto=tcp
# uci set firewall.@rule[-1].dest_port=22
# uci commit firewall
Przekierowanie portu na inny komputer
W tym przykładzie: port 15000 z wan na 192.169.1.100:15000 np. w celu otworzenia portu dla klienta sieci torrent zainstalowanego na
INNYM komputerze w sieci lokalnej (LAN)
# uci add firewall redirect
# uci set firewall.@redirect[-1].name=torrenty
# uci set firewall.@redirect[-1].src=wan
# uci add_list firewall.@redirect[-1].proto=tcp
# uci add_list firewall.@redirect[-1].proto=udp # lub uci add_list firewall.@redirect[-1].proto=all
# uci set firewall.@redirect[-1].src_dport=15000
# uci set firewall.@redirect[-1].dest_port=15000
# uci set firewall.@redirect[-1].dest_ip=192.168.1.100
# uci commit firewall
Opcja
dest_port nie jest wymagana jeżeli port ma być taki sam. Można też przekierować zakres portów odpowiednio podając wartość
src_dport
...
# uci set firewall.@redirect[-1].src_dport=10000-30000
...
Port na komputerze (w tym przypadku 192.168.1.100) musi oczywiście być otwarty na firewallu i musi tam nasłuchiwać jakaś usługa.
Dodanie nazwy hosta
# echo "192.168.1.100 malgosia" >> /etc/hosts
lub
# uci add dhcp domain
# uci set dhcp.@domain[-1].name=malgosia
# uci set dhcp.@domain[-1].ip=192.168.1.100
# uci commit dhcp
Dodanie hosta do static dhcp
# echo "00:11:22:33:44:57 192.168.1.100" >> /etc/ethers
lub
# uci add dhcp host
# uci set dhcp.@host[-1].mac=00:11:22:33:44:57
# uci set dhcp.@host[-1].ip=192.168.1.100
# uci commit dhcp
lub
config host
option name 'moj-pc'
option mac '00:11:22:33:44:57'
option ip '192.168.1.100'
option tag 'vpn'
config tag 'vpn'
list dhcp_option '6,8.8.8.8,8.8.4.4'
Podbijanie TTL (TTL + 1)
(tylko dla starszych wydań OpenWrt z iptables)
# opkg install kmod-ipt-ipopt iptables-mod-ipopt
# echo "iptables -t mangle -I PREROUTING 1 -i eth0.2 -j TTL --ttl-inc 1" >> /etc/firewall.user
# /etc/init.d/firewall restart
(uwaga na wielkość liter), gdzie
eth0.2 jest interfejsem od strony wan i restartujemy router.
Inny DNS lub gateway dla klientów dhcp
# uci add_list dhcp.lan.dhcp_option="3,192.168.200.3"
# uci add_list dhcp.lan.dhcp_option="6,8.8.8.8,8.8.4.4"
# uci commit dhcp
# /etc/init.d/dnsmasq restart
Opcja 3 to adres ip gateway podawany dla klientów przy pobraniu adresu DHCP. Opcja 6 - inne dnsy.
Dostęp do internetu po podłączeniu kablem do portu lan
# uci set network.lan.gateway=192.168.1.1
# uci set network.lan.dns='8.8.8.8 8.8.4.4'
# uci commit network
# reboot
Zakładając że router główny ma adres 192.168.1.1
Blokada dostępu do internetu
Sekcje
config do umieszczenia w
/etc/config/firewall.
- blokowanie na podstawie IP komputera
config rule
option src lan
option dest wan
option src_ip 192.168.1.100
option target REJECT
- blokowanie na podstawie MAC komputera
config rule
option src lan
option dest wan
option src_mac 01:02:03:04:05:06
option target REJECT
- blokowanie IP docelowego (uwaga: to jest ip strony, nie adres podstrony!)
config rule
option src lan
option dest wan
option dest_ip 123.45.67.89
option target REJECT
Należy pamiętać, że niektóre hosty (np. witryny internetowe) ma kilka adresów IP!
- blokowanie komputera który zmienił adres ip
config rule
option src lan
option dest wan
option src_mac 01:02:03:04:05:06
option src_ip "! 192.168.1.100"
option target DROP
- blokowanie dostępu w określonym czasie (reguła do umieszczenia w /etc/config/firewall)
config rule
option enabled '1'
option src 'lan'
option dest 'wan'
option name 'weekend'
option src_mac '01:02:03:04:05:06'
option weekdays 'sat sun'
option target 'REJECT'
option start_time '06:00:00'
option stop_time '22:00:00'
Jeżeli mamy firewall w wersji starszej niż 2017-05-09 należy jeszcze dodać
option extra '--kerneltz'
Patrz także poradnik
blokowanie użytkowników.
Logowanie zdarzeń systemowych do pliku
# uci set system.@system[0].log_type=file
# uci set system.@system[0].log_file=/mnt/sda1/logi.txt
# uci commit system
Oczywiście pod /mnt/sda1 powinien być podmontowany zewnętrzny nośnik, np. pendrive, przed uruchomieniem sysloga!
Logowanie zdarzeń systemowych do zdalnego serwera syslog
# uci set system.@system[0].log_ip=192.168.1.100 adres ip serwera syslog
# uci set system.@system[0].log_port=514
# uci commit system
# reboot
VPN passthrough
IPSec
(brak testów)
Reguła do umieszczenia w /etc/config/firewall
# AH protocol
config rule
option src wan
option dest lan
option proto ah
option target ACCEPT
# ESP protocol
config rule
option src wan
option dest lan
option proto esp
option target ACCEPT
# ISAKMP protocol
config rule
option src wan
option dest lan
option proto udp
option src_port 500
option dest_port 500
option target ACCEPT
PPTP
Dla wydania Barrier Breaker:
# opkg install kmod-ipt-nathelper-extra
Dla wydania Chaos Calmer i LEDE:
# opkg install kmod-nf-nathelper-extra
Reguła do umieszczenia w /etc/config/firewall
#GRE protocol
config rule
option src wan
option dest lan
option proto gre
option target ACCEPT
# PPTP
config rule
option src wan
option dest lan
option proto 'tcpudp'
option dest_port 1723
option target ACCEPT
Dla wydania OpenWrt 18.06 i późniejszych:
# opkg install kmod-nf-nathelper-extra
# echo "net.netfilter.nf_conntrack_helper = 1" >> /etc/sysctl.d/local.conf
# reboot
DMZ
Reguła do umieszczenia w /etc/config/firewall
config redirect
option src wan
option proto all
option dest_ip 192.168.1.100
lub
config redirect
option src wan
option proto 'tcpudp'
option src_dport '1-65535'
option dest_ip '192.168.1.100'
W tym drugim przypadku aktywny będzie
nat reflection więc działać to będzie także dla urządzeń w lan.
Poprawny reboot
Routery nie mają zegara czasy rzeczywistego (RTC - poza nielicznymi wyjątkami); czas w routerach ustawiony jest po uzyskaniu połączenia z internetem, a wcześniej, po starcie, z czasu modyfikacji plików zawartych m.in w katalogu /etc. Aby zapobiec wpadaniu routera w pętle przy starcie, przy planowanym restarcie należy ustawić w cronie polecenie restartu jako (w pliku /etc/crontabs/root):
01 3 * * * sleep 70 && touch /etc/banner && reboot
(w tym przykładzie - 3:01 w nocy).
Włączenie flow offload
Dla wydań 18.06 i późniejszych z kernelami >= 4.14
# uci set firewall.@defaults[0].flow_offloading=1
# uci set firewall.@defaults[0].flow_offloading_hw=1 #(dla niektórych Mediateków)
# uci commit firewall