WiKi na cokoliv

Informace na jednom místě

Uživatelské nástroje

Nástroje pro tento web


openwrt:tl-wr1043nd

TP-LINK TL-WR1043ND v2

Tento návod jsou spíše zápisky při zprovoznění DVB-T tuneru na mém routeru TL-WR1043ND. Postupně se rozrostl o instalaci OpenVPN klienta, Samby atd. Jsou zde věci, které jsou ušité na míru mé síti a nastavení mého serveru a periférií (IP kamery, VDR atd.). Předpoklad pro instalaci OpenVPN klienta je tedy mít OpenVPN server, vytvořené klíče (které v tomto návodu kopíruji interně ze svého serveru) atd.. I přes tyto drobnosti si ale myslím, že ucelený návod by mohl být užitečný pro ostatní, a proto je veřejně přístupný. Snad se bude někomu hodit:)

TL-WR1043ND v2

Upgrade OpenWRT

Kvůli zkompilovaným modulům pro DVB je potřeba update na FW OpenWRT od EkoOne.pl pro TL-WR1043ND »» v2 «« http://dl.eko.one.pl/chaos_calmer/ar71xx/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v2-squashfs-sysupgrade.bin. Vycházím zde z předpokladu, že na routeru již nějakou verzi OpenWRT máme.

Vytvoření root hesla

Po upgradu je potřeba nastavit heslo pro uživatele root, aby bylo možné mj. přistupovat přes ssh

telnet
telnet> open 192.168.1.1
passwd
exit

Přístup přes ssh

ssh root@192.168.1.1

Web rozhraní Luci

Můžeme nainstalovat webové rozhraní LUCI

opkg update ; opkg install luci

OpenVPN

Instalace OpenVPN klienta pro vytvoření tunelu k serveru

Instalace balíčků

opkg update ; opkg install openvpn-polarssl

Kopírování klíčů

Zkopírujeme klíče ze serveru

scp root@10.0.10.1:'/etc/ssl/private/rtr_mar.key /etc/ssl/certs/rtr_mar.crt /etc/ssl/certs/ca_fp.crt' /etc/openvpn

Konfigurace

cat <<'EOF' > /etc/config/openvpn
package openvpn

config openvpn
        option enable 1
        option config /etc/openvpn/openvpn.conf
        option log /tmp/openvpn.log
EOF
cat <<'EOF' > /etc/openvpn/openvpn.conf
remote p33.cz
#port 1194
port 443
proto tcp-client
tls-client
dev tap
pull

ns-cert-type server

mute 10
ca /etc/openvpn/ca_fp.crt
cert /etc/openvpn/rtr_mar.crt
key /etc/openvpn/rtr_mar.key

persist-key
persist-tun

comp-lzo
verb 3

user nobody
group nogroup
EOF

Nastavíme nově vytvořené rozhraní tap0

uci set network.vpn=interface ;
uci set network.vpn.proto='dhcp' ;
uci set network.vpn.ifname='tap0' ;
uci commit network ;

Restartujeme router

reboot

Spustíme OpenVPN klienta a nastavíme po startu routeru

/etc/init.d/openvpn start ; /etc/init.d/openvpn enable

MJPEG-Streamer

USB kamera jako IP kamera

Instalace balíčků

opkg update ; opkg install kmod-usb-core kmod-usb2 kmod-video-core kmod-video-uvc mjpg-streamer

Restartujeme router

reboot

Spustíme a nastavíme po startu routeru

/etc/init.d/mjpg-streamer start ; /etc/init.d/mjpg-streamer enable
cat <<'EOF' > /etc/config/mjpg-streamer
config mjpg-streamer 'core'
	option enabled '1'
	option input 'uvc'
	option output 'http'
	option device '/dev/video0'
	option resolution '640x360'
	option fps '15'
	option www '/www/webcam'
	option port '8080'
EOF

Akce po připojení wifi

Jakmile se k wifi připojí zařízení ze seznamu, spustí se skript

Instalace balíčků

opkg update ; opkg install iptables-mod-iprange wget ip

Skript

Popis akcí je uveden ve skriptu

cat <<'EOF' > /root/wifi_cam_stop.sh
#!/bin/sh

# kontroluji seznam pripojenych zarizeni, ktera nastavi omezeni
   cat /proc/net/arp | grep -f mac_stop_list.txt | grep 0x2

if [[ $? -eq 0 ]] ; then

# zarizeni jsou pripojena (vypne se motion detect a nastavi pravidlo, ktere zamezi pristupu na IP camery)
# vypinam motion detect
   wget --delete-after --no-check-certificate "https://admin:H3slo.2O15@10.0.14.137:8083/param.cgi?action=update&root.BackgroundMode=off" ;
# zapinam rele u bazenu
   wget --delete-after "http://10.0.14.111/cgi_login?passw=test" "http://10.0.14.111/cgi_rctl?rmode=d0on&rn=3" "http://10.0.14.111/cgi_logout" ;

# nastavuji omezeni (pokud neni nastaveno)
   if ! iptables -L | grep kamery_off ; then
      iptables -I FORWARD -m iprange --src-range 10.0.14.5-10.0.14.10 -d 10.0.10.0/24,10.0.11.0/24 -m comment --comment "kamery_off" -j DROP ;
   fi

else

# zarizeni jsou odpojena (zapne se motion detect a zrusi pravidlo, ktere obnovi pristup na IP camery)
# zapinam motion detect
   wget --delete-after --no-check-certificate "https://admin:H3slo.2O15@10.0.14.137:8083/param.cgi?action=update&root.BackgroundMode=on" ;
# vypinam rele u bazenu
   wget --delete-after "http://10.0.14.111/cgi_login?passw=test" "http://10.0.14.111/cgi_rctl?rmode=d0off&rn=3" "http://10.0.14.111/cgi_logout" ;

# rusim omezeni (pokud je nastaveno)
  if iptables -L | grep kamery_off ; then
      iptables -D FORWARD -m iprange --src-range 10.0.14.5-10.0.14.10 -d 10.0.10.0/24,10.0.11.0/24 -m comment --comment "kamery_off" -j DROP ;
  fi

fi

# mazu ARP tabulku
   ip neigh flush dev br-lan

# ping na leasy probere "zive" zarizeni a zapise je do ARP tabulky
   for i in `cat /tmp/dhcp.leases | cut -d ' ' -f 3`
     do
       ping -c 1 -W 1 $i
   done

EOF

Nastavíme jako spustitelný

chmod +x /root/wifi_cam_stop.sh

Seznam zařízení

cat <<'EOF' > /root/mac_stop_list.txt
ac:22:0b:02:23:a5
28:e3:1f:5d:31:a4
74:23:44:df:da:6c
b0:e2:35:4a:90:2f
24:77:03:19:3a:08
a0:86:c6:cd:03:c1
78:52:1a:2c:19:f2
00:18:60:8b:32:d6
88:70:8c:14:3d:26
d8:50:e6:21:3d:6b
EOF

Cron

Kontrola bude probíhat každých pět minut

cat <<'EOF' >> /etc/crontabs/root
# odrizne kamery od site 10.0.10.0/24 po pripojeni wifi zarízeni
*/5 * * * * /root/wifi_cam_stop.sh >/tmp/wifi_cam_stop.log 2>&1
EOF

Restart cronu

/etc/init.d/cron restart

ExtRoot

V routeru je nedostatečná velikost paměti, TVHeadend a další balíčky by se nám tam nevešely. Proto ji roztáhneme na USB flashku, kterou máme naformátovanou na ext4. Ideální je si připravit dva oddíly, z čehož druhý bude naformátovaný pro swap.

Instalace balíčků

opkg update ; opkg install block-mount kmod-fs-ext4 kmod-usb-storage-extras

Konfigurace

mount -t ext4 /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt
block detect > /etc/config/fstab; \
   sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
   sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; \
   cat /etc/config/fstab;
echo option force_space >> /etc/opkg.conf

DVB-T

Instalace balíčků

opkg update ; opkg install kmod-i2c-mux kmod-input-core

Zavedení modulů

Stáhneme moduly pro DVB-T tuner z http://dl.eko.one.pl/chaos_calmer/ar71xx/media-3.18.45 nebo z p33.cz a rovnou je zkopírujeme na správné místo

wget https://p33.cz/modules.tar.gz -P /tmp; tar xzvf /tmp/modules.tar.gz -C /lib/modules/3.18.45

Ruční zavedení - možno vynechat

Zjištění závislostí modulů

strings /lib/modules/3.18.45/rc-core.ko | grep depends

Zavedení modulů ručně !!! je nutné zachovat pořadí !!!

insmod dvb-core ; insmod input-core ; insmod rc-core ; insmod rtl2832 ; insmod dvb_usb_v2 ; insmod rtl2830 ; insmod dvb-usb-rtl28xxu ; insmod r820t

Automatické zavedení

Pokud byly moduly úspěšně zavedeny, můžeme vytvořit soubor /etc/modules.d/dvb s vypsanými moduly pod sebou

cat <<'EOF' > /etc/modules.d/dvb
dvb-core
input-core
rc-core
rtl2832
dvb_usb_v2
rtl2830
dvb-usb-rtl28xxu
r820t
EOF

Instalace TVHeadend

Nainstalujeme balíček TVHeadend

opkg update ; opkg install tvheadend

Výchozí adresa je:

http://ip_routeru:9981

LTE Modem Huawei E3372

Instalace modemu Huawei a připojení přes NDIS (NCM)

Instalace balíčků

opkg update ; opkg install kmod-usb-core kmod-usb2 kmod-usb-serial kmod-usb-serial-option usb-modeswitch comgt-ncm comgt chat wwan kmod-usb-net-huawei-cdc-ncm picocom

Přepneme modem, viz https://www.kyou.cz/forum/viewtopic.php?t=1743

picocom --send-cmd AT^SETPORT="FF;10,12,13,14,16" /dev/ttyUSB0

Abychom mohli nastavit NCM protokol přes webové rozhraní Luci, nainstalujeme balíček, který není ale v repo

wget https://p33.cz/luci-proto-ncm_svn-r9961-1_ar71xx.ipk -P /tmp ; opkg install /tmp/luci-proto-ncm_svn-r9961-1_ar71xx.ipk

Nakonfigurujeme nové síťové rozhraní (v závislosti na poskytovateli internetu)

uci set network.lte=interface ;
uci set network.lte.ifname='wwan0' ;
uci set network.lte._orig_ifname='wwan0' ;
uci set network.lte._orig_bridge='false' ;
uci set network.lte.proto='ncm' ;
uci set network.lte.device='/dev/ttyUSB0' ;
uci set network.lte.mode='lte' ;
uci set network.lte.apn='internet.t-mobile.cz' ;
uci set network.lte.authtype='none' ;
uci set network.lte.delay='20' ;
uci commit network ;

a přidáme ho do firewall zóny wan, která je již vtvořena

uci set firewall.@zone[1].network='lte wan wan6' ;
uci commit firewall ;

Šifrovaný externí USB disk

Abychom mohli připojit šifrovaný disk LUKS, je nutné nainstalovat balíčky

Instalace balíčků

opkg update ; opkg install usbutils blkid e2fsprogs kmod-crypto-xts kmod-crypto-iv kmod-crypto-sha1 cryptsetup

Ruční připojení/odpojení USB disku

Stažení a zkopírování klíče

mkdir /etc/ssl ; scp root@10.0.10.33:/etc/ssl/usbbackup_key /etc/ssl/

Dešifrování a připojení

cryptsetup --key-file /etc/ssl/usbbackup_key luksOpen /dev/sdb1 backup ; mkdir /mnt/usbbackup ; mount /dev/mapper/backup /mnt/usbbackup

Zašifrování a odpojení

umount /mnt/usbbackup ; cryptsetup luksClose backup ; rmdir /mnt/usbbackup

Auto připojení/odpojení USB disku

Vytvoříme soubor, který bude automaticky spouštět scripty po připojení USB disku

cat <<'EOF' > /etc/hotplug.d/usb/10-usb 
#!/bin/sh

PRODID="1058/25a2/1019"  ## zjistime pomoci lsusb -v (idVendor/idProduct/bcdDevice)

case "$ACTION" in

    add)
        
        if [ "${PRODUCT}" = "${PRODID}" ];
        
         then
         
            /root/mount_luks.sh
        
        fi
        
        ;;

    remove)

         if [ "${PRODUCT}" = "${PRODID}" ];
         
          then            
         
             /root/umount_luks.sh
         
         fi           

        ;;
esac
EOF

A skripty, které budou disk připojovat

cat <<'EOF' > /root/mount_luks.sh
#!/bin/sh

UUID="80a934f4-752c-4061-8ba2-8a9fa4e7f72d"

until [ $LUKS ]; do LUKS="$(blkid -U ${UUID})"; sleep 1; done

/usr/sbin/cryptsetup --debug --key-file /etc/ssl/usbbackup_key luksOpen ${LUKS} backup > /tmp/crypt.log 2>&1 &&

/bin/mkdir /mnt/usbbackup && /bin/mount /dev/mapper/backup /mnt/usbbackup

exit 0
EOF

a odpojovat

cat <<'EOF' > /root/umount_luks.sh
#!/bin/sh

/bin/umount /mnt/usbbackup && /bin/rmdir /mnt/usbbackup &&

/usr/sbin/cryptsetup --debug --key-file /etc/ssl/usbbackup_key luksClose backup > /tmp/crypt.log 2>&1

exit 0
EOF

Nastavíme oba skripty jako spustitelné

chmod +x /root/mount_luks.sh ; chmod +x /root/umount_luks.sh

Sdílení SAMBA

Instalace balíčků

opkg update ; opkg install samba36-server luci-app-samba

Vytvoření uživatele

echo "xbmc:*:1027:513:xbmc:/mnt/usbbackup:/bin/false" >> /etc/passwd

Musíme vytvořit Samba heslo, které bude totožné s tím, co máme na serveru

smbpasswd -a xbmc

Vytvoření skupin

cat <<'EOF' >> /etc/group
fotky:x:151:xbmc
public:x:153:xbmc
filmy:x:155:xbmc
audio-da:x:154:xbmc
EOF

Konfigurace Samby

cat <<'EOF' > /etc/samba/smb.conf.template
[global]
	netbios name = |NAME| 
	display charset = |CHARSET|
	interfaces = |INTERFACES|
	server string = |DESCRIPTION|
	unix charset = |CHARSET|
	workgroup = |WORKGROUP|
	browseable = yes
	deadtime = 30
	domain master = yes
	encrypt passwords = true
	enable core files = no
	guest account = nobody
	guest ok = yes
	invalid users = root
	local master = yes
	load printers = no
	map to guest = Bad User
	max protocol = SMB2
	min receivefile size = 16384
	null passwords = yes
	obey pam restrictions = yes
	os level = 20
	passdb backend = smbpasswd
	preferred master = yes
	printable = no
	security = user
	smb encrypt = disabled
	smb passwd file = /etc/samba/smbpasswd
	socket options = TCP_NODELAY IPTOS_LOWDELAY
	syslog = 2
	use sendfile = yes
	writeable = yes
	ntlm auth = no
	lanman auth = no
	client NTLMv2 auth = yes
EOF

Přípojné body

cat <<'EOF' > /etc/config/samba
config samba
	option name 'mar-ap-share'
	option description 'Shared Content'
	option workgroup 'p33.cz'
	option homes '0'

config sambashare
	option name 'FILMY'
	option path '/mnt/usbbackup/FILMY'
	option users 'xbmc'
	option read_only 'yes'
	option guest_ok 'no'

config sambashare
	option name 'FOTKY'
	option path '/mnt/usbbackup/FOTKY'
	option users 'xbmc'
	option read_only 'yes'
	option guest_ok 'no'

config sambashare
	option name 'AUDIO-DA'
	option path '/mnt/usbbackup/AUDIO-DA'
	option users 'xbmc'
	option read_only 'yes'
	option guest_ok 'no'

config sambashare
	option name 'PUBLIC'
	option path '/mnt/usbbackup/PUBLIC'
	option users 'xbmc'
	option read_only 'yes'
	option guest_ok 'no'

config sambashare
	option name 'DATA'
	option path '/mnt/DATA'
	option users 'xbmc'
	option read_only 'yes'
	option guest_ok 'no'
EOF

Zdroje informací

openwrt/tl-wr1043nd.txt · Poslední úprava: 2021/01/01 12:37 autor: David Helcl

Nástroje pro stránku