Podstawowa konfiguracja OpenWrt
Zbiór podstawowych poleceń pozwalających na konfigurację OpenWrt
Ostatnia zmiana: 2013-04-17 14:51

1. Strefa czasowa
2. USB storage
3. Zabezpieczanie WiFi
4. Włączenie obsługi 12 i 13 kanału
5. Klonowanie adresu MAC
6. Otworzenie portu ze strony wan
7. Przekierowanie portu na inny komputer
8. Dodanie nazwy hosta
9. Dodanie hosta do static dhcp
10. Podbijanie TTL (TTL + 1)
11. Inny DNS lub gateway dla klientów dhcp
12. Blokada dostępu do internetu
13. Logowanie zdarzeń systemowych do pliku
14. Logowanie zdarzeń systemowych do zdalnego serwera syslog
15. VPN passthrough
 15.1. IPSec
 15.2. PPTP
16. DMZ


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 rutera przez wifi
- brak hasła administracyjnego - trzeba je ustawić logując się telnetem do rutera 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 rutera i wszystko powinno działać prawidłowo.

UWAGA1 po każdym restarcie rutera a przed instalacją nowego pakietu trzeba zrobić opkg update!
UWAGA2 po skonfigurowaniu danej usługi trzeba ją zrestartować lub wykonać restart rutera!
UWAGA3 większość rzeczy można wyklikać w gui, łącząc się z ruterem pod adresem http://192.168.1.1, o ile oczywiście używa się standardowego obrazu z openwrt.org lub zainstalowało się samodzielnie gui.
UWAGA4 po zmianie danych w firewallu wymagany jest restart routera lub samego firewalla: /etc/init.d/firewall restart
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.
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 (np. Asusa WL-500gP) wymagany jest jeszcze pakiet kmod-usb-uhci-iv. Dla innych - 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, 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ń wyposażonych w interfejs N (150-300Mbps) warto dodać jeszcze kilka opcji:

    # uci set wireless.@wifi-device[0].hwmode=11ng
    # uci set wireless.@wifi-device[0].htmode=HT20
    # uci set wireless.@wifi-device[0].country=PL
    # uci set wireless.@wifi-device[0].country_ie=1
    # uci set wireless.@wifi-device[0].noscan=1
    # uci add_list wireless.@wifi-device[0].ht_capab="HT40-"
    # uci add_list wireless.@wifi-device[0].ht_capab="HT40+"
    # uci commit wireless
    # wifi

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

UWAGA: 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, torrentów itd zainstalowanych NA ruterze

    # 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
    ...

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
    # /etc/init.d/dnsmasq restart

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

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.
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.
Logowanie zdarzeń systemowych do zdalnego serwera syslog

    # uci set system.@system[0].log_ip=192.168.1.111 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

    # opkg install kmod-ipt-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.2

lub

    config redirect
        option src wan
        option proto 'tcp udp'
        option src_dport 1-65535
        option dest_ip 192.168.1.2

W tym drugim przypadku aktywny będzie nat reflection więc działać to będzie także dla urządzeń w lan.