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.

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ń)


    # opkg install ntfs-3g

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



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