Zbiór podstawowych poleceń pozwalających na konfigurację OpenWrt
Ostatnia zmiana: 2016-08-20 08:06

Po zainstalowaniu (i ew czyszczeniu pamięci) 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 wpiąć już komputery - działa tam dns cache oraz serwer dhcp przydzielający adresy z określonego zakresu
- domyślnie wyłączona jest sieć wifi - nie można podłączyć się do routera przez wifi
- brak hasła administracyjnego - trzeba je ustawić logując się telnetem do routera lub z gui (LuCI)

Wystarczy więc wpiąć 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.

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. Domyślnie zainstalowany jest w systemie program ntpd, więc nie ma potrzeby instalacji ntpclienta aby otrzymywać bieżący czas z sieci.

USB storage

Wraz z obsługą systemu plików Ext2, Ext3, Ext4, Fat16/Fat32


    # opkg install kmod-usb-core kmod-usb2 kmod-usb-storage 
    # 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


    # opkg install ntfs-3g

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 (niezależnie od stosowanej karty i wersji jądra):


    # 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

HT40+, HT40- zależy od ustawionego kanału

Praca jako APClient

Przy założeniu domyślnej konfiguracji (nazwa sieci: moja_sieć, 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)

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, o ile jest zainstalowany pakiet iw oraz włączona odpowiednia opcja (REGDOMAIN) podczas kompilacji systemu. Moje obrazy mają to już włączone domyślnie.

Klonowanie adresu MAC



    # 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


    # uci add firewall redirect
    # uci set firewall.@redirect[-1].name=torrenty
    # uci set firewall.@redirect[-1].src=wan
    # uci set firewall.@redirect[-1].proto=tcpudp
    # 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
    ...

Z powodu zmian w firewallu otworzenie portu przez przekierowanie portu na lokalny adres routera (192.168.1.1) nie działa. Należy otworzyć port (patrz wyżej) a nie przekierowywać go. Port na komputerze 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



    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)



    # opkg install kmod-ipt-ipopt iptables-mod-ipopt
    # echo "iptables -t mangle -I PREROUTING 1 -i eth0.1 -j TTL --ttl-inc 1" >> /etc/firewall.user
    # /etc/init.d/firewall restart

(uwaga na wielkość liter), gdzie eth0.1 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.ipaddr=192.168.1.2
    # 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


    # echo "iptables -I FORWARD 1 -p tcp -s 192.168.1.100 -j REJECT" >> /etc/firewall.user
    # /etc/init.d/firewall restart

lub


    config rule
        option src lan
        option dest wan
        option src_ip 192.168.1.100
        option target REJECT

- blokowanie na podstawie MAC komputera


    # echo "iptables -I FORWARD 1 -p tcp -m mac --mac-source 01:02:03:04:05:06 -j REJECT" >> /etc/firewall.user
    # /etc/init.d/firewall restart

lub


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


    # echo "iptables -I FORWARD 1 -p tcp -d nasza-klasa.pl -j REJECT" >> /etc/firewall.user
    # /etc/init.d/firewall restart

lub


    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. wspomniana nasza-klasa.pl) ma kilka adresów IP!

- blokowanie komputera który zmienił adres ip


    # echo "iptables -I FORWARD ! -s 192.168.1.100 -i br-lan -m mac --mac-source 01:02:03:04:05:06 -j DROP" >> /etc/firewall.user
    # /etc/init.d/firewall restart

lub


    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

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)
/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:


    # opkg install kmod-nf-nathelper-extra



    #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 udptcp
        option dest_port 1723
        option target ACCEPT

DMZ



    config redirect
        option src wan
        option proto all
        option dest_ip 192.168.1.100

lub


    config redirect
        option src wan
        option proto 'tcp udp'
        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.