воскресенье, 16 декабря 2012 г.

openvpn box of TL-MR3020

Задача: с планшета ipad  mini wifi получить доступ в интернет и к внутренней сети организации через openvpn через wifi в гостинице и, при отсутствии wifi, через сеть 3G.

Как известно, для iOS нет официального openvpn клиента, и, судя по форуму openvpn (например, https://forums.openvpn.net/topic4568.html) в ближайшее время не появится.
Один вариант решения: jailbreak -> Cydia -> GuizmOVPN.
Этот  вариант описан на сайте разработчика http://www.guizmovpn.com/
Но для iOS 6 jailbreak пока не существует, не хочется делать jail, и у меня ipad mini wifi без 3G модуля.

Второй вариант: роутер с запущенным ovpn клиентом и с возможностью коннектиться как через 3G модем, так и через wifi адаптер. Этот вариант и реализован.
Вот как выглядит :

Вот так подаю доп. питание на hub :

По железу: 
 роутер TP-Link MR3020 (выбран из-за небольшого размера и возможности установить openwrt)/
 модем ZTE MF190 от Биланта, разлоченный и перешитый на MTS (как сделать, описано в http://4pda.ru/forum/index.php?showtopic=277903)
  Замечание: на прошивке от Movistar не смог заставить модем работать под openwrt: (но, м.б. это мои кривые руки /и нежелание долго ковыряться/)
 wifi адаптер, используемый в качестве клиента для подключения к точке доступа в гостинице: ASUS USB-N13 (Ralink rt2870)
 usb hub - купил по принципу : цена < 300р и возможность работать с SD/MicroSD картами (на всякий случай :) )
 доп. диск в моем случае SD 2Gb, но, естественно, можно использовать usb flash drive.

Как установить openwrt на роутер, описано в http://wiki.openwrt.org/toh/tp-link/tl-mr3020.
Я установил прошивку Attitude Adjustment Beta 2 snapshot (рекоммендуют ее). Но, скорее всего, проблем не будет и с lastest trunk snapshot. Выполнил начальную конфигурацию (доступ в интернет с lan порта (можно и с wlan, непринципиально)). Сделал это через web-интерфейс (так проще) Network->Interfaces->LAN, Network->Firewall.
Заходим telnet-ом на роутер и проверяем, что мы видим удаленные сайты (ping www.ru) 

Теперь, собственно, кастомизация:


Замечание: чтобы посмотреть лог в случае проблем, можно использовать команду logread.

1.Т.к. нам нужны доп.пакеты, читаем, как они устанавливаются http://wiki.openwrt.org/doc/packages.
Замечание1: для установки пакетов, нужен доступ в интернет с роутера (см.выше).
Замечание2: После рестарта роутера делаем opkg update (загрузка списка пакетов в tmpfs)
Замечание3: Устанавливаем нужный пакет в NAND командой opkg install <pkg>. 
Если нужно устанавливать пакет на usb (а это будет нужно),  читаем http://wiki.openwrt.org/doc/recipes/install.packages.on.usb-stick. Чтобы указать, что пакет нужно установить в /opt, указываем opkg install <pkg> -d opt.
Вот /etc/opkg.conf  с добавленным /opt в качестве места назначения для установки.
====
src/gz attitude_adjustment http://downloads.openwrt.org/attitude_adjustment/12.09-beta2/ar71xx/generic/packages
dest root /
dest ram /tmp
dest opt /opt
lists_dir ext /var/opkg-lists
option overlay_root /overlay

====
 Но, чтобы устанавливать пакеты в /opt (flash drive), его надо сначала создать (см. ниже).


Замечание 4: пакеты, содержащие модули ядра, лучше ставить в NAND (а модули для поддержки usb storage только в NAND) чтобы не иметь проблем с их автоматической загрузкой при старте роутера.
2. подключаем доп.раздел на флешке и монтируем в /opt.

Как делается, описано в http://wiki.openwrt.org/doc/howto/usb.essentials
и http://wiki.openwrt.org/doc/howto/usb.storage
В моем случае я установил поддержку для usb2.0 (лишние модули лучше не ставить, т.к. место в NAND ограничено) и поддержку ext2 (kmod-fs-ext4).
На флешке предварительно создал раздел и на нем ext2fs на линуксовой машине (так было проще).
Проверил, что раздел монтируется (dmesg -> смотрим название устройства (в моем случае /dev/sda1), mount /dev/sda1 /mnt)
Теперь указываем, что этот раздел нужно монтировать в /opt при старте роутера:
Это деляется либо правкой /etc/config/fstab, либо из luci (System -> Mount points)

 Вот содержание /etc/config/fstab
====
config global automount
      option from_fstab 1
      option anon_mount 1
     
config global autoswap
      option from_fstab 1
      option anon_swap 0
     
config mount
      option target   /opt
      option device   /dev/sda1
      option fstype   ext2

      option options  rw,sync
      option enabled  1
      option enabled_fsck 0

====
Перегружаемся, проверяем, что /dev/sda1 смонтирован на /opt
root@tpl3020:/# mount
....
/dev/sda1 on /opt type ext2 (rw,relatime,user_xattr,barrier=1)



Теперь пакеты можно устанавливать как в nand, так и на flash drive.

Чтобы не иметь проблем с загрузкой библиотек с /opt/lib и /opt/usr/lib и с путями, правим
/etc/profile:
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/opt/usr/bin:/opt/usr/sbin:/opt/usr/local/bin
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/lib



3. настраиваем wifi адаптер, который будет клиентом 
Для этого устанвливаем kmod-rt2x00-usb, kmod-rt2800-usb, wireless-tools (их можно поставить на /opt), перегружаемся и смотрим dmesg:
дожны быть строчки:
 rt2x00usb               6848  1 rt2800usb
mac80211              252272  4 ath9k,rt2800lib,rt2x00usb,rt2x00lib



настраиваем /etc/config/wireless (добавляем radio1 и интерфейс wwan):
config wifi-device 'radio1'
      option type 'mac80211'
      option macaddr 'f4:6d:04:b1:8b:d7'
      option hwmode '11ng'
      option htmode 'HT20'
      list ht_capab 'GF'
      list ht_capab 'SHORT-GI-20'
      list ht_capab 'SHORT-GI-40'
      list ht_capab 'TX-STBC'
      list ht_capab 'RX-STBC12'
      option country 'US'
      option txpower '12'
      option disabled '0'
      option channel '1'

config wifi-iface
      option network 'wwan'
      option ssid 'MY_AP'   <- имя точки доступа, у которой мы будем клиентом
      option encryption 'psk2' <- шифрование
      option device 'radio1'
      option mode 'sta' <- режим клиента
      option bssid '90:F6:52:92:68:5E'
      option key 'XXXXXXXXXX' <- ключ 



настраиваем /etc/config/network
config interface 'wwan'
      option proto 'dhcp' <- в моем случае адрес получаем по DHCP



настраиваем /etc/config/firewall
config zone
      option name 'wan'
      option input 'REJECT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option masq '1'
      option mtu_fix '1'
      option network 'wan wlan1 wwan'

перегружаемся.

После перезагрузки должны увидеть следующее:
root@tpl3020:/# ifconfig wlan1
wlan1     Link encap:Ethernet  HWaddr F4:6D:04:B1:8B:D7 
          inet addr:192.168.10.103  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:190 errors:0 dropped:0 overruns:0 frame:0
          TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:32
          RX bytes:23056 (22.5 KiB)  TX bytes:20258 (19.7 KiB)
 

На этом с wifi все. Нстройки можно делать и из luci.

Замечание: если мы вынимаем wifi адаптер из хаба, то настройки из конфигов никуда не деваются, они просто не используются. 

4. настравиваем 3G модем.
Вместо wifi адаптера вставляем в hub модем (уже перешитый, см.выше) и перегружаемся.
Как настраивать модем, описано в http://wiki.openwrt.org/doc/recipes/3gdongle

Замечание1: chat, luci-proto-3g лучше всего ставить в NAND: они маленькие, и не будет проблем с путями и библиотеками. usb-modeswitch я поставил в /opt и сделал необх. линки на /usr/bin и т.д.

Замечание2: чтобы модем при старте роутера переключался в режим tty, в /etc/rc.local добавил:
export LD_LIBRARY_PATH=/opt/usr/lib:/opt/lib
/opt/usr/bin/usb_modeswitch -c /etc/usb_modeswitch.d/19d2\:0149 -v 19d2 -p 2000



Замечание3: можно еще поставить в /opt minicom для работы с модемом.
После перезагрузки должны увидеть (на прошивке MTS):
root@tpl3020:/# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2  /dev/ttyUSB3

на прошивке от Movistar у меня получилось 5 ttyUSB, и ни один не захотел работать.

Нам для использования нужен будет /dev/ttyUSB3.

Из luci Network->Interfaces (так проще) создаем новую сеть wan1 с интерфейсом 3g-wan1 с протоколом UMTS/GPRS/EV-DO
Из luci Network->Firewall добавляем сеть wan1 в зону wan.

перегружаемся.
После перезагрузки должны увидеть :
root@tpl3020:/# ifconfig 3g-wan1
3g-wan1   Link encap:Point-to-Point Protocol 
          inet addr:10.197.255.211  P-t-P:10.64.64.64  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:131 errors:0 dropped:0 overruns:0 frame:0
          TX packets:133 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:10558 (10.3 KiB)  TX bytes:10220 (9.9 KiB)

Модем настроили.

5. Настраиваем openvpn.

Устанавливаем kmod-tun
Устанавливаем openvpn в /opt

Дополнительно сделал:

root@tpl3020:/# ls -l /etc/init.d/openvpn
lrwxrwxrwx    1 root     root            23 Dec 26 12:10 /etc/init.d/openvpn -> /opt/etc/init.d/openvpn

создал /opt/etc/openvpn/config/up.sh
#!/bin/sh
/usr/sbin/iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source $4
exit 0



создал /opt/etc/openvpn/config/down.sh
#!/bin/sh
/usr/sbin/iptables -t nat -D POSTROUTING -o tun0 -j SNAT --to-source $4
exit 0

Эти два скрипта для настройки NAT после установления соединения, т.к. клиент openvpn коннектится к серверу и получает у него некий алрес, с которого можно ходить в частную сеть, а пользователь коннектится к точке доступа и получает адрес, про который openvpn сервер в общем случае ничего не знает.


Как настраивать из консоли, описано  в http://wiki.openwrt.org/doc/howto/vpn.openvpn.
Но, т.к. рулить с планшета удобнее через web морду (luci), лучше поставить luci-app-openvpn.
И тут нас подстерегает засада: в trunk нет этого пакета, т.к. он почему-то у разработчиков считается broken.

Я поступил так:
скачал с http://downloads.openwrt.org/ исходинки luci. http://downloads.openwrt.org/sources/luci-0.11%2bsvn9463.tar.gz
из архива вытащил applications/luci-openvpn и разложил то, что там было :
luasrc/controller/openvpn.lua -> /usr/lib/lua/luci/controller/
luasrc/model/cbi/openvpn*  -> /usr/lib/lua/luci/model/cbi/
luasrc/view/openvpn/* -> /usr/lib/lua/luci/view/openvpn/

root/etc/config/openvpn_recipes -> /etc/config/openvpn_recipes
и создал пустой /etc/config/openvpn

После этого в luci повилась вкладка Services->OpenVPN. Настраивать клинт можно оттуда.
И самое главное, там есть кнопочка start/stop, позволяющая из GUI управлять vpn соединением.

Замечание: т.к. openvpn ставится на /opt, а при запуске uhttpd нет необходимых LD_LIBRARY_PATH и PATH, я добавил в /opt/etc/init.d/openvpn строчки:
=========
#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2011 OpenWrt.org
# Copyright (C) 2008 Jo-Philipp Wich
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.

START=95

SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1

EXTRA_COMMANDS="up down"

LIST_SEP="
"

export LD_LIBRARY_PATH=/opt/lib:/opt/usr/lib
export PATH=$PATH:/opt/usr/bin:/opt/usr/sbin:/opt/usr/local/bin

 .....
==========
Еще добавил в /opt/etc/init.d/openvpn в start_instance() для того, чтобы могли запускаться скрипты up.sh/down.sh
==========
service_start /usr/sbin/openvpn --syslog "openvpn($s)" --writepid "$SERVICE_PID_FILE" --script-security 3 $ARGS
==========

После конфигурирования клиента из luci в /etc/config/openvpn
получилось следующее:
config openvpn 'client_tun'
      option nobind '1'
      option float '1'
      option client '1'
      option comp_lzo '1'
      option reneg_sec '0'
      option dev 'tun'
      option verb '3'
      option persist_tun '1'
      option persist_key '1'
      option remote_cert_tls 'server'
      option remote '111.111.222.222'
      option proto 'tcp-client'
      option port '1194'
      option up '/opt/etc/openvpn/config/up.sh'
      option down '/opt/etc/openvpn/config/down.sh'
      option ca '/opt/etc/openvpn/keys/ca.crt'
      option cert '/opt/etc/openvpn/keys/my.crt'
      option key '/etc/openvpn/keys/my.key'
      option tls_auth '/opt/etc/openvpn/keys/tls.key 1'
      option tls_timeout '30'
      option hand_window '160'
      option enabled '1'


в /etc/config/network добавлен tun0 с именем openvpn.
config interface 'openvpn'
      option proto 'none'
      option ifname 'tun0'

в /etc/config/firewall я не создавал отдельную зону для openvpn (но можно и создать отдельную при желании):
config zone
      option name 'wan'
      option input 'REJECT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option masq '1'
      option mtu_fix '1'
      option network 'wan wan1 wlan1 openvpn wwan'


Вот скриншоты, как это выглядит в luci :

 интерфейсы:








зоны в firewall:









openvpn клиент:








Если все правильно сконфигурировано, то при нажатии на кнопку start из luci, клиент должен запуститься и появиться инерфейс tun0 (см.рисунок выше). 

root@tpl3020:/# ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
 

и должны пинговаться (если разрешено на сервере,естественно) внутренние адреса:
root@tpl3020:/# ping 192.168.110.11
PING
192.168.110.11 (192.168.110.11): 56 data bytes
64 bytes from
192.168.110.11: seq=0 ttl=253 time=107.732 ms
 Из консоли клиент можно запустить 
/etc/init.d/openvpn up <имя_соединения>. У меня имя client_tun.

6. Включение/выключение openvpn нажатием на кнопку WPS.
web морда для управление это хорошо, но хочется более простого способа. На роутере есть кнопка wps, которую можно использовать для запуска/останова клиента.

Как вообще конфигурировать кнопки и лампочки, написано в
http://wiki.openwrt.org/doc/howto/hardware.button
Замечание: не забываем про установку /etc/hotplug.d/button/00-button
и
http://wiki.openwrt.org/doc/uci/system

Применительно к моему случаю, я сделал следующее:

/etc/config/system
=====
config led 'led_wps'
      option name 'WPS'
      option sysfs 'tp-link:green:wps'
      option trigger 'none'
      option default '0'

config button
      option button 'wps'
      option action 'pressed'
      option handler '/opt/etc/init.d/ovpn-trigger'
=====

/opt/etc/init.d/ovpn-trigger:
=====
#!/bin/sh
pid_file=/var/run/openvpn-client_tun.pid

if [ -f $pid_file ]
then
      logger 'openvpn client stopping'
      /opt/etc/init.d/openvpn down client_tun
      /bin/echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
else
      logger 'openvpn client starting'
      /opt/etc/init.d/openvpn up client_tun
      /bin/echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
     
      cnt=0
      while [ $cnt -lt 30 ]
      do
              sleep 1
              #echo $cnt
              cnt=`expr $cnt + 1`
              state=`cat /sys/class/leds/tp-link\:green\:wps/brightness`
              #echo $state
              if [ $state -eq 1 ]
              then
                      echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
              else
                      echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
              fi
              ifconfig tun0 >/dev/null 2>&1
              if [ $? -eq 0 ]
              then
                      echo 1 >/sys/class/leds/tp-link\:green\:wps/brightness
                      break
              fi
      done
      # tun0 did not up: shutdown openvpn
      ifconfig tun0 >/dev/null 2>&1
      if [ ! $? -eq 0 ]
      then
              echo 0 >/sys/class/leds/tp-link\:green\:wps/brightness
              /opt/etc/init.d/openvpn down client_tun
              logger 'openvpn client shutdown (could not connect)'
      fi
fi
exit 0
=====

 /etc/init.d/openvpn
=====
stop_instance() {
      local s="$1"

      section_enabled "$s" || return 1

      SERVICE_PID_FILE="/var/run/openvpn-$s.pid"
      service_stop /usr/sbin/openvpn
      rm $SERVICE_PID_FILE <- при остановке клиента pid файл не удалался по-умолчанию.
}
=====

Теперь, если нажать кнопку, когда клиент остановлен, то он будет пытаться запуститься, и при успешном запуске лампочка wps будет включена.
При нажатии на кнопку, если клиент запущен, он будет остановлен.

На этом все.
========================================================================
Использованные доп. ссылки (м.б. найдется что-то интересное)

 OpenWrt: Configure WiFi Client as WAN and set up a 2nd AP to redistribute the WAN-Access – http://goo.gl/bIVik:  https://gist.github.com/2398728

Piratebox

PirateBox creation based on TP-Link MR3020
http://www.disk91.com/2012/technology/networks/piratebox-creation-based-on-tp-link-mr3020/
http://cookingcomputersandmore.com/?page_id=10
http://piratebox.aod-rpg.de/dokuwiki/doku.php

По модему:
http://forum.ru-board.com/topic.cgi?forum=6&topic=5795&start=20
http://www.hub.ru/wiki/ZTE_MF626
http://lists.debian.org/debian-russian/2009/07/msg00100.html

По роутерам tp-link
http://klseet.com/index.php/tp-link-portable-routers

8 комментариев:

  1. Привет wifi адаптеру обязательно нужен хаб с доп питанием? Китайскую альфа адаптер пытаюсь подружить отваливается mr3020

    ОтветитьУдалить
  2. хаб от сети или юсб достаточно какая моделька у вас?

    ОтветитьУдалить
    Ответы
    1. Hub (3 порта) без доп. питания, заказан с dx.com. Если подключаю
      модем и usb флешку, чтобы хватало питания, в один из usb портов втыкаю usb разьем от БП роутера. Добавил в статью картинку, как это выглядит.

      Удалить
  3. Спасибо за фото тоже думал про второй усб разъем он как раз ксати.

    ОтветитьУдалить
  4. Поделитесь пожалуйста конфигами для вай фай адаптера сегодня выяснилось что моя ката отваливается не изапитания network.wireless.firewall.dhsp. мне как новичку будет понятней разобратся

    ОтветитьУдалить
    Ответы
    1. network

      config interface 'loopback'
      option ifname 'lo'
      option proto 'static'
      option ipaddr '127.0.0.1'
      option netmask '255.0.0.0'

      config interface 'lan'
      option ifname 'eth0'
      option type 'bridge'
      option _orig_ifname 'eth0'
      option _orig_bridge 'true'
      option proto 'dhcp'

      config interface 'wlan'
      option _orig_ifname 'radio0.network1'
      option _orig_bridge 'false'
      option proto 'static'
      option ipaddr '192.168.1.254'
      option netmask '255.255.255.0'

      config interface 'wwan_3g'
      option proto '3g'
      option device '/dev/ttyUSB3'
      option service 'umts'
      option apn 'internet.beeline.ru'
      option username 'beeline'
      option password 'beeline'
      option maxwait '45'

      wireless

      config wifi-device 'radio0'
      option type 'mac80211'
      option channel '11'
      option macaddr 'XX:XX:XX:XX:XX:XX'
      option hwmode '11ng'
      option htmode 'HT20'
      list ht_capab 'SHORT-GI-20'
      list ht_capab 'SHORT-GI-40'
      list ht_capab 'RX-STBC1'
      list ht_capab 'DSSS_CCK-40'
      option disabled '0'
      option country 'DE'
      option txpower '17'

      config wifi-iface
      option device 'radio0'
      option mode 'ap'
      option ssid 'MySSID'
      option network 'wlan'
      option encryption 'psk2+ccmp'
      option key 'XXXXXXXX'

      Удалить
    2. dhcp

      config dnsmasq
      option domainneeded '1'
      option boguspriv '1'
      option filterwin2k '0'
      option localise_queries '1'
      option rebind_protection '1'
      option rebind_localhost '1'
      option local '/lan/'
      option domain 'lan'
      option expandhosts '1'
      option nonegcache '0'
      option authoritative '1'
      option readethers '1'
      option leasefile '/tmp/dhcp.leases'
      option resolvfile '/tmp/resolv.conf.auto'

      config dhcp 'lan'
      option interface 'lan'
      option ignore '1'

      config dhcp 'wan'
      option interface 'wan'
      option ignore '1'

      config dhcp
      option start '100'
      option limit '150'
      option interface 'wlan'
      option leasetime '1h'

      firewall

      config defaults
      option syn_flood '1'
      option input 'ACCEPT'
      option output 'ACCEPT'
      option forward 'REJECT'

      config zone
      option name 'lan'
      option input 'ACCEPT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option network 'lan wlan'

      config zone
      option name 'wan'
      option input 'REJECT'
      option output 'ACCEPT'
      option forward 'REJECT'
      option masq '1'
      option mtu_fix '1'
      option network 'wan wwan_3g'

      config forwarding
      option src 'lan'
      option dest 'wan'

      config rule
      option name 'Allow-DHCP-Renew'
      option src 'wan'
      option proto 'udp'
      option dest_port '68'
      option target 'ACCEPT'
      option family 'ipv4'

      config rule
      option name 'Allow-Ping'
      option src 'wan'
      option proto 'icmp'
      option icmp_type 'echo-request'
      option family 'ipv4'
      option target 'ACCEPT'

      config rule
      option name 'Allow-DHCPv6'
      option src 'wan'
      option proto 'udp'
      option src_ip 'fe80::/10'
      option src_port '547'
      option dest_ip 'fe80::/10'
      option dest_port '546'
      option family 'ipv6'
      option target 'ACCEPT'

      config rule
      option name 'Allow-ICMPv6-Input'
      option src 'wan'
      option proto 'icmp'
      list icmp_type 'echo-request'
      list icmp_type 'echo-reply'
      list icmp_type 'destination-unreachable'
      list icmp_type 'packet-too-big'
      list icmp_type 'time-exceeded'
      list icmp_type 'bad-header'
      list icmp_type 'unknown-header-type'
      list icmp_type 'router-solicitation'
      list icmp_type 'neighbour-solicitation'
      list icmp_type 'router-advertisement'
      list icmp_type 'neighbour-advertisement'
      option limit '1000/sec'
      option family 'ipv6'
      option target 'ACCEPT'

      config rule
      option name 'Allow-ICMPv6-Forward'
      option src 'wan'
      option dest '*'
      option proto 'icmp'
      list icmp_type 'echo-request'
      list icmp_type 'echo-reply'
      list icmp_type 'destination-unreachable'
      list icmp_type 'packet-too-big'
      list icmp_type 'time-exceeded'
      list icmp_type 'bad-header'
      list icmp_type 'unknown-header-type'
      option limit '1000/sec'
      option family 'ipv6'
      option target 'ACCEPT'

      config include
      option path '/etc/firewall.user'

      config rule
      option target 'ACCEPT'
      option src 'wan'
      option proto 'tcp'
      option dest_port '22'
      option name 'ssh'

      Удалить
  5. Статья очень помогла. Особенно в настройках OpenVPN.
    Отсюда можно скачать исходники LUCI-0.11.
    https://dev.iopsys.eu/feed/openwrt-luci/-/branches/stale

    ОтветитьУдалить