Заметки о конфигурации vpn туннеля под openwrt.
Да да он еще не безопасный и об этом явно написано, но нам по обыкновению плевать. Почему? Да потому что нам просто надо спрятать трафик от йотпы.
ставим из репозитариев без лишней возни
Конечно же нельзя вот так просто взять и обновить прошивку.
Да я расчитывал взять последний последний билд из каталога по старее
или по новее (бинарь) и просто обновиться с сохранением настроек. Но нет, ни nethead.lan ни 192.168.1.12 ни 192.168.1.1 не прозванивались ни по http ни по https.
Несколько удивило то, что wan жив и я уже качнул zenmap и запустил с таргетом `192.168.1.0/24` (помним, что я ленивый енот) и тут глядя на отчет понял: 80 порта нет. Просто нет. Потому что ни LuCi ни uhttpd там нет. Просто нет, потому что это голый билд. Придется ставить ручками все от начала до конца.
Благо nmap подсказал нам хост, осталось только подобрать порт для ssh. Дефолтный 22 я сменил еще до обновления прошивки и он успешно прозвонился с пол пинка. Это успех
Ну во первых стоит возликовать: ядрышко обновилось до 4.4.14
Ну а дальше дело техники
По идее люся тут же должна начать отзываться, но не по 80 порту а 81. Ну потому что конфиги такие раньше были. Но не тут то было. Раньше конфиг был такой
на надо было попросить его слушать не только локалхост, но и вообще все интерфейсы на 81 порту:
старые роуты остались в конфигах, осталось донастроить только лично приготовленные фигли.
Такие сильные изменения в ядре не должны остаться незамеченными. На всякий случай пересобиру бинарь веб-сервера.
Бонус: nginx_1.12.2-1_mipsel_24kc.ipk
аплоадим старый бинарь в темп и погнали
надо еще не забыть подправить конфиг на методе anyport
нужно только рестартануть
Ну а дальше можно попробовать еще раз.
пробуем
и на этот раз получаем благословение:
Вообще есть неплохой ман на английском для GUI и еще один для CLI.
Но в обоих случаях используются странные хаки с подсетями для разграничения доступа. По этому у меня адаптация под свои нужды. Возможно не правильная, позже подтюню.
пилим дырку в файрволе:
В результате это должно заапендиться в `vim /etc/config/firewall`
теперь делаем спец DMZ под нашу будущую сетевую активность
роутер ругнется тем, что не нашел интерфейса и девайса.
Сейчас сделаем ему интейфейс
Нам потребуется минимум 3 ключа:
1. для сервера
2. для мобилы: tun4britz
3. для ноута: tun4bitard
4. для сомнительных подключений в гостях: roadwarrior
конфиг сервера
конфиг клиента
Есть некоторые сомнения относительно allowed_ips для клиента, озвученные в коммюнити
по этому итоговый хвост конфиг:
И в принципе все даже работает. Напоследок скринщоты из под GUI
Да да он еще не безопасный и об этом явно написано, но нам по обыкновению плевать. Почему? Да потому что нам просто надо спрятать трафик от йотпы.
готовимся
ставим из репозитариев без лишней возни
opkg update opkg install luci-proto-wireguardИ получаем ошибку не соответствии ядра:
root@nethead:~# opkg install luci-proto-wireguard Installing luci-proto-wireguard (git-19.042.42292-b7fabbd-1) to root... Downloading http://downloads.lede-project.org/snapshots/packages/mipsel_24kc/luci/luci-proto-wireguard_git-19.042.42292-b7fabbd-1_all.ipk Collected errors: * satisfy_dependencies_for: Cannot satisfy the following dependencies for luci-proto-wireguard: * kernel (= 4.14.98-1-38f482742ce3398079b12d4bf561b99c) * kernel (= 4.14.98-1-38f482742ce3398079b12d4bf561b99c) * kernel (= 4.14.98-1-38f482742ce3398079b12d4bf561b99c) * * opkg_install_cmd: Cannot install package luci-proto-wireguard.Какая же у нас? стоит спросить у
uname -rи получить неутешительный ответ: 4.9.86. Придется обновляться до 4.14.98-1
первые объебы
Конечно же нельзя вот так просто взять и обновить прошивку.
Да я расчитывал взять последний последний билд из каталога по старее
или по новее (бинарь) и просто обновиться с сохранением настроек. Но нет, ни nethead.lan ни 192.168.1.12 ни 192.168.1.1 не прозванивались ни по http ни по https.
Несколько удивило то, что wan жив и я уже качнул zenmap и запустил с таргетом `192.168.1.0/24` (помним, что я ленивый енот) и тут глядя на отчет понял: 80 порта нет. Просто нет. Потому что ни LuCi ни uhttpd там нет. Просто нет, потому что это голый билд. Придется ставить ручками все от начала до конца.
Благо nmap подсказал нам хост, осталось только подобрать порт для ssh. Дефолтный 22 я сменил еще до обновления прошивки и он успешно прозвонился с пол пинка. Это успех
восстановление системных пакетов
Ну во первых стоит возликовать: ядрышко обновилось до 4.4.14
Ну а дальше дело техники
opkg update opkg install openssh-sftp-server opkg install luci opkg install luci-theme-openwrt
По идее люся тут же должна начать отзываться, но не по 80 порту а 81. Ну потому что конфиги такие раньше были. Но не тут то было. Раньше конфиг был такой
config uhttpd 'main' list listen_http '127.0.0.1:81' option home '/www' option rfc1918_filter '0' option max_requests '3' option max_connections '100' option cgi_prefix '/cgi-bin' option script_timeout '60' option network_timeout '30' option http_keepalive '20' option tcp_keepalive '1' option ubus_prefix '/ubus' option redirect_https '0'
на надо было попросить его слушать не только локалхост, но и вообще все интерфейсы на 81 порту:
list listen_http '0.0.0.0:81'
старые роуты остались в конфигах, осталось донастроить только лично приготовленные фигли.
nginx
Такие сильные изменения в ядре не должны остаться незамеченными. На всякий случай пересобиру бинарь веб-сервера.
Бонус: nginx_1.12.2-1_mipsel_24kc.ipk
аплоадим старый бинарь в темп и погнали
cd /tmp/ ls -la | grep nginx opkg install nginx_1.12.1-1_mipsel_24kc.ipk opkg install ca-certificates openssl-util opkg install luci-app-acme /etc/init.d/nginx enable /etc/init.d/nginx start /etc/init.d/nginx reload
sslh
надо еще не забыть подправить конфиг на методе anyport
package 'sslh' config 'sslh' 'default' # disable or enable option 'enable' '1' # listen defaults to '0.0.0.0:443' (all interfaces) # multiple -p arguments may be supplied using a uci list # -p : option 'listen' '0.0.0.0:443' # ssh defaults to 'localhost:22' # --ssh : option 'ssh' 'localhost:2250' # ssl defaults to 'localhost:443' # --ssl : option 'ssl' 'localhost:8443' # openvpn defaults to 'localhost:1194' # --openvpn : #option 'openvpn' '' # tinc defaults to 'localhost:655' # --tinc : #option 'tinc' '' # xmpp defaults to 'localhost:5222' # --xmpp : #option 'xmpp' '' #option wireguard option 'anyport' 'localhost:8444' # timeout (for ssh, then ssl is assumed) defaults to 2 # -t option 'timeout' '2' # verbose defaults to off # -v option 'verbose' '0' # use external config file # option configfile '/etc/sslh.conf'
нужно только рестартануть
/etc/init.d/sslh reload
Ну а дальше можно попробовать еще раз.
ставим wireguard еще разок
пробуем
opkg update opkg install luci-proto-wireguard luci-app-wireguard wireguard kmod-wireguard wireguard-tools
и на этот раз получаем благословение:
Configuring kmod-udptunnel6. Configuring kmod-udptunnel4. Configuring kmod-wireguard. Configuring libmnl. Configuring ip-tiny. Configuring wireguard-tools. Configuring luci-proto-wireguard. root@nethead:~#
Вообще есть неплохой ман на английском для GUI и еще один для CLI.
Но в обоих случаях используются странные хаки с подсетями для разграничения доступа. По этому у меня адаптация под свои нужды. Возможно не правильная, позже подтюню.
firewall конфигурация
пилим дырку в файрволе:
uci add firewall rule uci set firewall.@rule[-1].src="*" uci set firewall.@rule[-1].target="ACCEPT" uci set firewall.@rule[-1].proto="udp" uci set firewall.@rule[-1].dest_port="1234" uci set firewall.@rule[-1].name="Allow-Wireguard-Inbound" uci commit firewall /etc/init.d/firewall restart
В результате это должно заапендиться в `vim /etc/config/firewall`
config rule option src '*' option target 'ACCEPT' option proto 'tcp udp' option dest_port '8444' option name 'Allow-Wireguard-Inbound'
теперь делаем спец DMZ под нашу будущую сетевую активность
uci add firewall zone uci set firewall.@zone[-1].name='wg' uci set firewall.@zone[-1].input='ACCEPT' uci set firewall.@zone[-1].forward='ACCEPT' uci set firewall.@zone[-1].output='ACCEPT' uci set firewall.@zone[-1].masq='1' uci set firewall.@zone[-1].network='wg0' uci add firewall forwarding uci set firewall.@forwarding[-1].src='wg' uci set firewall.@forwarding[-1].dest='wan' uci add firewall forwarding uci set firewall.@forwarding[-1].src='wg' uci set firewall.@forwarding[-1].dest='lan' uci add firewall forwarding uci set firewall.@forwarding[-1].src='lan' uci set firewall.@forwarding[-1].dest='wg' uci add firewall forwarding uci set firewall.@forwarding[-1].src='wan' uci set firewall.@forwarding[-1].dest='wg' uci commit firewall /etc/init.d/firewall restart
роутер ругнется тем, что не нашел интерфейса и девайса.
Warning: Section @zone[2] (wg) cannot resolve device of network 'wg0' Warning: Section @zone[1] (wg) has no device, network, subnet or extra options
Сейчас сделаем ему интейфейс
wireguard конфигурация
WireGuard keys
Нам потребуется минимум 3 ключа:
1. для сервера
2. для мобилы: tun4britz
3. для ноута: tun4bitard
4. для сомнительных подключений в гостях: roadwarrior
mkdir wgkeys && cd wgkeys wg genkey | tee server-private.key | wg pubkey > server-public.key wg genkey | tee tun4britz-private.key | wg pubkey > tun4britz-public.key wg genkey | tee tun4bitard-private.key | wg pubkey > tun4bitard-public.key wg genkey | tee roadwarrior-private.key | wg pubkey > roadwarrior-public.key wg genpsk > preshared
WireGuard interface
конфиг сервера
uci set network.wg0="interface" uci set network.wg0.proto="wireguard" uci set network.wg0.private_key="$(cat server-private.key)" uci set network.wg0.listen_port="8444" uci add_list network.wg0.addresses='192.168.1.41/24' # .11 у меня был прописан прошлому роутеру; .12 у меня занят под роутер текущий; .13 будет под будущйи ротер, .31 - под ретранcлятор. Посему пусть . 41 будет под впн uci commit network /etc/init.d/network reload
конфиг клиента
uci add network wireguard_wg0 uci set network.@wireguard_wg0[-1].public_key="$(cat tun4britz-public.key)" uci set network.@wireguard_wg0[-1].route_allowed_ips="1" uci add_list network.@wireguard_wg0[-1].allowed_ips="0.0.0.0/0" uci add_list network.@wireguard_wg0[-1].allowed_ips="::/0" uci set network.@wireguard_wg0[-1].persistent_keepalive='25' uci set network.@wireguard_wg0[-1].description='tun4britz' uci commit network /etc/init.d/network reload
Есть некоторые сомнения относительно allowed_ips для клиента, озвученные в коммюнити
по этому итоговый хвост конфиг:
config interface 'wg0' option proto 'wireguard' option private_key 'server-private.key' option listen_port '8444' list addresses '192.168.1.12/24' list addresses '192.168.2.1/24' option mtu '1350' config wireguard_wg0 option public_key 'tun4britz-public.key' option route_allowed_ips '1' option endpoint_port '8444' option persistent_keepalive '25' option description 'britz' option endpoint_host 'box.now.io' list allowed_ips '192.168.1.0/32'
И в принципе все даже работает. Напоследок скринщоты из под GUI
server |
client |
Комментариев нет :
Отправить комментарий