DarkFox315

DarkFox315

На Пикабу
поставил 2 плюса и 1 минус
Награды:
5 лет на Пикабу
138 рейтинг 7 подписчиков 14 подписок 5 постов 1 в горячем

Ответ на пост «Блокировка рекламы за 2 минуты в 2020 году»

Приветствую.


Поделюсь своим способом борьбы с рекламой.


Так же использую uBlock Origin. В этом дополнении включены все фильтры, то есть стоят все галочки, кроме "JPN: AdGuard Japanese". После выбора фильтров нажать "Применить", и после "Обновить".

Еще необходимо поставить галочку "Я опытный пользователь".

Дополнительно стоят все галочки в настройках приватности:

"Отключить предзагрузку для предотвращения подключений для заблокированных запросов", "Отключить проверку гиперссылок", "Предотвратить утечку локального IP-адреса через WebRTC", "Блокировать CSP отчеты".


После включения галочки "Я опытный пользователь", справа от надписи, нужно нажать на шестерёнки "расширенные настройки".

Откроется дополнительное окно, в котором нужно отредактировать часть параметров как приведено ниже:


allowGenericProceduralFilters true

assetFetchTimeout 40

autoUpdateAssetFetchPeriod 1

autoUpdateDelayAfterLaunch 1

autoUpdatePeriod 1

cacheStorageCompression false

suspendTabsUntilReady yes

updateAssetBypassBrowserCache true


Эти манипуляции позволяют целиком и полностью избавиться от всей рекламы. Например, на ютубе исчезает абсолютно вся реклама, при этом нет каких-либо неудобств в использовании сайта. Кроме исчезание ссылок непосредственно в самих видеороликах.


Больше ничего делать и устанавливать не нужно.

Если же что-то перестало работать, например, в том же Яндексе, то нужно на неработающей странице, нажать на иконку блокировщика, и разрешить конкретные адреса. После нажатия вы увидите таблицу в три колонки. Левая это заблокированные или разрешенные адреса. Средняя — настройка глобальной блокировки для всех сайтов. Правая — блокировка только для этого сайта, который отображается на текущей странице. Если нужно разблокировать что-то от Яндекса на текущей странице, например в Яндексдиске, то отмечайте зелеными прямоугольниками адреса только из правой колонки. Или можно что-то разблокировать глобально, "позеленив" адреса в среднем столбце. Точно так можно блокировать адреса, только теперь нужно выбирать красные прямоугольники. После манипуляций появится кнопка с рисунком замочка, нужно на нее нажать для сохранения результатов.


uBlock Origin я использую в Firefox и Google Chrome. На Windows и на Android. При этом настройки везде одинаковые. Ничего не тормозит и не глючит.



Дополнительно на Android можно воспользоваться приложением AdAway, для блокировки рекламы на уровне домена. Там можно выбрать различные листы блокировок или добавить свои. Это помогает дополнительно избавиться от лезущего мусора из приложений. Правда нужен Root, для перезаписи файла hosts.



Еще рекомендация, тем, кому нужно изменить DNS по ряду причин, можно воспользоваться адресами от Opennic https://servers.opennic.org/.

Это позволит дополнительно ходить на сайты с доменами *.lib и другие, которые не резолвятся другими DNS серверами. Но прежде чем менять адрес, нужно убедиться что этот адрес рабочий. Для этого нужно зайти на сайт https://www.subnetonline.com/pages/network-tools/online-dig....

В строке "Enter Name Server" IP-адрес выбранного DNS сервера.

В строке "Enter Domain Name" вбиваете адрес сайта для проверки разрешения имени.

"Select type" — Any.

Нажать кнопку "DIG!"

И смотрите на "ANSWER SECTION". Там должна быть строка вида "www.****.lib. 619 IN A 185.145.130.74".


Вот пример когда всё работает:


DIG Output:

dig @185.52.0.55 www.***.lib ANY

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @185.52.0.55 www.****.lib ANY

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46522

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.****.lib. IN ANY

;; ANSWER SECTION:

www.*****.lib. 317 IN A 185.145.130.74

;; AUTHORITY SECTION:

lib. 3600 IN NS seed2.emercoin.com.

lib. 3600 IN NS seed1.emercoin.com.

;; Query time: 16 msec

;; SERVER: 185.52.0.55#53(185.52.0.55)

;; WHEN: Wed Jul 08 18:21:03 CEST 2020

;; MSG SIZE rcvd: 113

---- Finished ------


Подобный ответ означает что с сервером все в порядке, доменные имена разрешаются.


Если "ANSWER SECTION" отсутствует, то через выбранный DNS вам не удастся зайти на проверяемый сайт.


Вот пример ответа когда работать не будет:


DIG Output:

dig @91.217.137.37 www.***.lib ANY

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-16.P2.el7_8.6 <<>> @91.217.137.37 www.***.lib ANY

; (1 server found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 26330

;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.***.lib. IN ANY

;; Query time: 48 msec

;; SERVER: 91.217.137.37#53(91.217.137.37)

;; WHEN: Wed Jul 08 18:17:48 CEST 2020

;; MSG SIZE rcvd: 45

---- Finished ------

Показать полностью

Настройка OpenWRT, mwan3, adblock, openvpn, IPv6 (6in4) ч.3 заключительная

В этой части привожу конфигурацию маршрутизатора, который занят балансировкой трафика от других маршрутизаторов. Грубо говоря сумматор.


Файл скрипта для NATv6 и маскарадинга IPv6 /etc/firewall.nat6


Приведен пример файлов для таблиц ipset.


Большинство описаний опций я опущу, так как часть из них описана в ч.2.


****************************


/etc/config/network


config interface 'lan'

option ifname 'eth0.1'

option proto 'static'

option ipaddr '192.168.1.1' # адрес балансирующего маршрутизатора

option netmask '255.255.255.0'

option ip6assign '60'

option force_link '0'

option delegate '0'


config device 'wan_eth0_1010_dev'

option name 'eth0.1010'

option macaddr 'хх:хх:хх:хх:хх:хх'


config device 'wan_eth0_1020_dev'

option name 'eth0.1020'

option macaddr 'хх:хх:хх:хх:хх:хх'


config switch

option name 'switch0'

option reset '1'

option enable_vlan '1'


config switch_vlan

option device 'switch0'

option vlan '1'

option ports '5t 0 1 2'


config switch_vlan

option device 'switch0'

option vlan '1020'

option ports '5t 4t'


config switch_vlan

option device 'switch0'

option vlan '1010'

option ports '5t 3t'


config interface 'wan41' # интерфес IPv4 для первого провайдера от вышестоящего маршрутизатора

option proto 'dhcp'

option ifname 'eth0.1010'

option metric '10'

option delegate '0'


config interface 'wan42' # # интерфес IPv4 для второго провайдера от вышестоящего маршрутизатора

option proto 'dhcp'

option ifname 'eth0.1020'

option metric '11'

option delegate '0'


config interface 'wan61' # интерфес IPv6 для первого провайдера от вышестоящего маршрутизатора

option proto 'dhcpv6'

option reqprefix 'auto'

option ifname 'eth0.1010'

option reqaddress 'force'

option metric '20'

option delegate '0'


config interface 'wan62' # интерфес IPv6 для первого провайдера от вышестоящего маршрутизатора

option proto 'dhcpv6'

option reqprefix 'auto'

option ifname 'eth0.1020'

option reqaddress 'force'

option metric '21'

option delegate '0'


config route # маршрут для доступа к самому первому маршрутизатору, подробней описано в первой части

option interface 'wan41'

option gateway '192.168.10.1'

option target '192.168.0.1'


config route # маршрут для доступа к самому первому маршрутизатору, подробней описано в первой части

option interface 'wan42'

option gateway '192.168.20.1'

option target '192.168.0.2'


Ранее писал что непосредственно к кабелю провайдера, который заходит в квартиру, у меня подключены дешевые 100 мегабитные маршрутизаторы. Что бы получить к ним доступ для настроек и прописаны эти маршруты. Более подробней зачем я их подключил описано в первой части публикаций.


****************************


/etc/config/dhcp


config dnsmasq

option domainneeded '1'

option localise_queries '1'

option local '/lan/'

option domain 'lan'

option expandhosts '1'

option authoritative '1'

option readethers '1'

option leasefile '/tmp/dhcp.leases'

option rebind_protection '0'

option allservers '1'

option localservice '1'

option filterwin2k '1'

option quietdhcp '1'

option ednspacket_max '4096'

option resolvfile '/tmp/resolv.conf.auto'

option cachesize '10000'

option dnsforwardmax '200'

list notinterface 'wan62'

list notinterface 'wan41'

list notinterface 'wan42'

list notinterface 'wan61'


config dhcp 'lan'

option interface 'lan'

option start '100'

option limit '150'

option dhcpv6 'server'

option ra 'server'

option force '1'

option ra_default '1'

option ra_management '1'

option leasetime '5m'


config dhcp 'wan41'

option interface 'wan41'

option ignore '1'


config dhcp 'wan42'

option interface 'wan42'

option ignore '1'


config dhcp 'wan61'

option interface 'wan61'

option ignore '1'


config dhcp 'wan62'

option interface 'wan62'

option ignore '1'


****************************


/etc/config/firewall


config defaults

option input 'ACCEPT'

option output 'ACCEPT'

option syn_flood '1'

option drop_invalid '1'

option flow_offloading '1'

option flow_offloading_hw '1'

option forward 'ACCEPT'


config include 'nat6'

option type 'script'

option path '/etc/firewall.nat6'

option family 'any'

option reload '1'


config zone

option input 'ACCEPT'

option forward 'ACCEPT'

option name 'lan'

option output 'ACCEPT'

option network 'lan'


config zone

option family 'ipv4'

option name 'wan41'

option masq '1'

option masq6 '0'

option masq6_privacy '0'

option output 'ACCEPT'

option input 'ACCEPT'

option network 'wan41'

option forward 'ACCEPT'

option mtu_fix '1'


config zone

option family 'ipv4'

option name 'wan42'

option masq '1'

option masq6 '0'

option masq6_privacy '0'

option output 'ACCEPT'

option input 'ACCEPT'

option network 'wan42'

option forward 'ACCEPT'

option mtu_fix '1'


config zone

option name 'wan61'

option masq '1'

option masq6 '1'

option masq6_privacy '0'

option output 'ACCEPT'

option network 'wan61'

option family 'ipv6'

option input 'ACCEPT'

option forward 'ACCEPT'

option mtu_fix '1'


config zone

option name 'wan62'

option masq '1'

option masq6 '1'

option masq6_privacy '0'

option output 'ACCEPT'

option network 'wan62'

option family 'ipv6'

option input 'ACCEPT'

option forward 'ACCEPT'

option mtu_fix '1'


config rule

option src 'wan41'

option name 'all_wan41'

option family 'ipv4'

option proto 'all'

option dest 'lan'

option device 'eth0.1010'

option direction 'in'

option target 'ACCEPT'


config rule

option src 'wan42'

option name 'all_wan42'

option family 'ipv4'

option proto 'all'

option dest 'lan'

option device 'eth0.1020'

option direction 'in'

option target 'ACCEPT'


config rule

option src 'wan61'

option name 'all_wan61'

option family 'ipv6'

option proto 'all'

option dest 'lan'

option device 'eth0.1010'

option direction 'in'

option target 'ACCEPT'


config rule

option src 'wan62'

option name 'all_wan62'

option family 'ipv6'

option proto 'all'

option dest 'lan'

option device 'eth0.1020'

option direction 'in'

option target 'ACCEPT'


config forwarding

option dest 'wan41'

option src 'lan'


config forwarding

option dest 'wan42'

option src 'lan'


config forwarding

option dest 'wan61'

option src 'lan'

config forwarding

option dest 'wan62'

option src 'lan'


config redirect

option src 'wan41'

option name 'wan41'

option target 'DNAT'

option dest 'lan'

list proto 'all'


config redirect

option src 'wan42'

option name 'wan42'

option target 'DNAT'

option dest 'lan'

list proto 'all'


config redirect

option src 'wan61'

option name 'wan61'

option target 'DNAT'

option dest 'lan'

list proto 'all'


config redirect

option src 'wan62'

option name 'wan62'

option target 'DNAT'

option dest 'lan'

list proto 'all'


****************************


/etc/config/mwan3


config rule 'all_v4'

option proto 'all'

option sticky '0'

option use_policy 'balanced_wan'

option src_ip '192.168.0.0/16'


config rule 'all_v6'

option proto 'all'

option sticky '0'

option use_policy 'balanced_wan6'

option src_ip 'fd00::/8'


config rule 'drop_all'

option src_ip '0.0.0.0/0'

option proto 'all'

option sticky '0'

option use_policy 'unreachable'


config globals 'globals'

option mmx_mask '0x3F00'

option rtmon_interval '2'


config interface 'wan41'

option enabled '1'

list track_ip '8.8.4.4'

option family 'ipv4'

option track_method 'ping'

option count '1'

option size '56'

option max_ttl '60'

option check_quality '0'

option interval '5'

option down '3'

option up '3'

option initial_state 'offline'

option failure_interval '3'

option recovery_interval '3'

option timeout '1'

option reliability '1'

list flush_conntrack 'ifup'

list flush_conntrack 'ifdown'

list flush_conntrack 'connected'

list flush_conntrack 'disconnected'


config interface 'wan42' # аналогично config interface 'wan41'


config interface 'wan61'

option enabled '1'

option family 'ipv6'

option track_method 'ping'

option count '1'

option size '56'

option check_quality '0'

option interval '5'

option down '3'

option up '3'

option initial_state 'offline'

option max_ttl '70'

option failure_interval '3'

option recovery_interval '3'

option timeout '1'

option reliability '1'

list track_ip 'yahoo.com'

list flush_conntrack 'ifup'

list flush_conntrack 'ifdown'

list flush_conntrack 'connected'

list flush_conntrack 'disconnected'


config interface 'wan62' # аналогично config interface 'wan61'


config member 'wan_41'

option interface 'wan41'

option metric '1'

option weight '1'


config member 'wan_42'

option interface 'wan42'

option metric '1'

option weight '1'


config member 'wan_61'

option interface 'wan61'

option weight '1'

option metric '2'


config member 'wan_62'

option interface 'wan62'

option weight '1'

option metric '2'


config policy 'balanced_wan'

option last_resort 'unreachable'

list use_member 'wan_41'

list use_member 'wan_42'


config policy 'balanced_wan6'

list use_member 'wan_61'

list use_member 'wan_62'

option last_resort 'unreachable'


****************************


Вот и вся конфигурация маршрутизатора занятого балансировкой трафика от первых двух


****************************


Файл скрипта реализующего маскарадинг для NATv6 /etc/firewall.nat6


set -eo pipefail

. /lib/functions.sh

. /lib/functions/network.sh

. /usr/share/libubox/jshn.sh

log() {

logger -t nat6 -s "$@"

}

get_ula_prefix() {

uci get network.globals.ula_prefix

}

validate_ula_prefix() {

local ula_prefix="$1"

if [ $(echo "$ula_prefix" | grep -c -E "^([0-9a-fA-F]{4}):([0-9a-fA-F]{0,4}):") -ne 1 ] ; then

log "Fatal error: IPv6 ULA ula_prefix=\"$ula_prefix\" seems invalid. Please verify that a ula_prefix is set and valid."

return 1

fi

}

ip6t() {

ip6tables "$@"

}

ip6t_ensure_append() {

if ! ip6t -C "$@" >/dev/null 2>&1; then

ip6t -A "$@"

fi

}

nat6_init() {

iptables-save -t nat \

| sed -e "/\s[DS]NAT\s/d;/\sMASQUERADE$/d" \

| ip6tables-restore -T nat

}

masq6_network() {

# $config contains the ID of the current section

local network_name="$1"

local device

network_get_device device "$network_name" || return 0

local done_net_dev

for done_net_dev in $DONE_NETWORK_DEVICES; do

if [[ "$done_net_dev" == "$device" ]]; then

log "Already configured device=\"$device\", so leaving as is."

return 0

fi

done

log "Found device=\"$device\" for network_name=\"$network_name\"."

if [ $zone_masq6_privacy -eq 1 ]; then

log "Enabling IPv6 temporary addresses for device=\"$device\"."

log "Accepting router advertisements on $device even if forwarding is enabled (required for temporary addresses)"

echo 2 > "/proc/sys/net/ipv6/conf/$device/accept_ra" \

|| log "Error: Failed to change router advertisements accept policy on $device (required for temporary addresses)"

log "Using temporary addresses for outgoing connections on interface $device"

echo 2 > "/proc/sys/net/ipv6/conf/$device/use_tempaddr" \

|| log "Error: Failed to enable temporary addresses for outgoing connections on interface $device"

fi

append DONE_NETWORK_DEVICES "$device"

}

handle_zone() {

# $config contains the ID of the current section

local config="$1"

local zone_name

config_get zone_name "$config" name

# Enable masquerading via NAT6?

local zone_masq6

config_get_bool zone_masq6 "$config" masq6 0

log "Firewall config=\"$config\" zone=\"$zone_name\" zone_masq6=\"$zone_masq6\"."

if [ $zone_masq6 -eq 0 ]; then

return 0

fi

# IPv6 privacy extensions: Use temporary addrs for outgoing connections?

local zone_masq6_privacy

config_get_bool zone_masq6_privacy "$config" masq6_privacy 1

log "Found firewall zone_name=\"$zone_name\" with zone_masq6=\"$zone_masq6\" zone_masq6_privacy=\"$zone_masq6_privacy\"."

log "Setting up masquerading nat6 for zone_name=\"$zone_name\" with zone_masq6_privacy=\"$zone_masq6_privacy\""

local ula_prefix=$(get_ula_prefix)

validate_ula_prefix "$ula_prefix" || return 1

local postrouting_chain="zone_${zone_name}_postrouting"

log "Ensuring ip6tables chain=\"$postrouting_chain\" contains our MASQUERADE."

if ! ip6t_ensure_append "$postrouting_chain" -t nat -s "$ula_prefix" -j MASQUERADE; then

# Some releases of OpenWrt just leave the nat table empty for some reason (version dependent?)

log "Could not find table=\"$postrouting_chain\", but yolo so adding to POSTROUTING directly."

ip6t_ensure_append "POSTROUTING" -t nat -s "$ula_prefix" -j MASQUERADE

fi

local DONE_NETWORK_DEVICES=""

config_list_foreach "$config" network masq6_network

log "Done setting up nat6 for zone=\"$zone_name\" on devices: $DONE_NETWORK_DEVICES"

}

main() {

nat6_init

config_load firewall

config_foreach handle_zone zone

}

main "$@"


Создайте на компьютере файл без расширения, и присвойте ему имя "firewall.nat6". После чего откройте его программой Notepad++, и вставьте в него описанный выше код. После чего выберете в меню Правка-Формат Конца Строк-Преобразовать в UNIX (LF). Все файлы в юникс системах имеют в качестве окончания строки символ "Перевод на строку", или LF если включить отображение непечатаемых символов. Когда в системах Windows обычно окончание строки имеет два символа "Перевод на строку" и "Возврат каретки", то есть CR LF.


Поместите файл firewall.nat6 в каталог /etc маршрутизатора. Или в любой другой, при этом изменив путь в строке option path '/etc/firewall.nat6' в файле настроек фаервола.


Внимание! Это работоспособная версия скрипта, так сказать сборная солянка, на странице сайта OpenWRT информация устаревшая, код от этого отличается и у меня не заработал.


****************************


Содержимое файлов из опций option loadfile '/etc/namev4' и option loadfile '/etc/namev6', описанных во второй части, в качестве примера.


Файл '/etc/namev4'


ххх.ххх.ххх.ххх/18

ххх.ххх.ххх.ххх/18

ххх.ххх.ххх.ххх/21

ххх.ххх.ххх.ххх/32


В этом файле должны быть только списки подсетей, которые будут маршрутизироваться через VPN. Этот список для ipset таблиц не поддерживает единичные IP в привычном виде, по крайне мере так описано в документации на ipset, при выбранных мной опциях option match 'dest_net' и option storage 'hash'. Поэтому, если все же нужно добавить единичный IP в этот список, то нужно указать сеть размерностью 32, то есть вот так: ххх.ххх.ххх.ххх/32, что допускается в документации RFC 6890.


Файл '/etc/namev6'


хххх:хххх::/48

хххх:хххх::/44

хххх:хххх::/32


С этими файлами, при их создании и сохранении, поступайте точно так как описано для фала /etc/firewall.nat6


****************************


Опишу некоторые баги (или фичи?). Ранее писал, что объясню для чего нужно тегировать трафик гуляющий между маршрутизаторами. Вся проблема в управляемом коммутаторе внутри маршрутизатора, настройка которого при загрузке, и перезагрузке, устанавливается по умолчанию. В этот момент порт который сконфигурирован как WAN превращается в LAN и через этот порт провайдер, или мой промежуточный маршрутизатор, выдает IP на мой ПК. Это приводит к тому что после загрузки маршрутизатора этот IP продолжает "висеть" в сетевой карте, и приходится либо кабель переподключать, либо выключать и включать сетевую карту в ПК. Это известный баг, я писал на форум OpenWRT и тривиального решения к сожалению нет. Но при моей ситуации с кучей маршрутизаторов этот баг решается тем, что я присваиваю тег VLANам, и этот тег не слетает во время перезагрузки, что позволяет не пропускать трафик не совпадающий по тегу. Короче, в итоге, все работает как надо))


Так же OpenWRT позволяет обновлять пакеты, но там нет кнопки обновить все сразу. У меня есть решение этой задачи, которое позволяет автоматом, после загрузки маршрутизатора, проверить репозиторый на обновления, и обновить все пакеты для которых вышли новые версии. Если интересно, то пишите в комментариях, опишу как это делается в отдельном посте.


Для периодического обновления списков блокировок AddBlock создается задача в cron. Для этого в файл /etc/crontabs/root нужно добавить строку "0 * * * * /etc/init.d/adblock reload", без кавычек. Эта строка создает задачу перезапуска блокировщика в начале каждого часа, что тем самым приводит к скачиванию актуальных списков блокировок. В противном случае списки будут обновляться при каждом запуске маршрутизатора, или ручном перезапуске блокировщика.


****************************


Ссылки на использованные материалы:


https://github.com/akatrevorjay/openwrt-masq6 ссылка на проект скрипта для маскарадинга NATv6

https://openwrt.org/docs/guide-user/network/ipv6/ipv6.nat6 инструкция для настройки NAT6 and IPv6 masquerading с официального сайта OpenWRT

https://openwrt.org/docs/guide-user/network/wan/multiwan/mwa... инструкция по настройке mwan3 с официального сайта OpenWRT

https://openwrt.org/docs/guide-user/firewall/firewall_config... настройка фаервола с сайта OpenWRT

https://github.com/openwrt/packages/blob/master/net/adblock/... проект блокировщика рекламы, там самые актуальные настройки

https://openwrt.su/nastrojka/vpn-klient-na-openwrt неплохая инструкция по настройке OpenVPN


Остальное по крупицам в сети, а так же в ходе двухнедельных бдений, и поскрипыванием извилин мозга. Надеюсь, что в трех постах дал исчерпывающие настройки по основным компонентам, которые могут понадобиться в домашних маршрутизаторах работающих под управлением OpenWRT.


****************************


По итогу получилось следующее:


Суммарная скорость при тестировании через https://www.speedtest.net/, или при закачке торрентов, составляет сумму скоростей всех каналов. В реальности где-то 181-188 мегабит на прием, и 185-189 мегабит на отдачу.


При обрыве одного канала все автоматом переходит на оставшийся канал, включая потоки онлайнового радио через плеер.


Реализована блокировка рекламы на уровне доменов.


Обход заблокированных сайтов в известной стране.


Возможность получить доступ к сайтам по протоколу IPv6. При этом маскарадинг разбрасывает входящий трафик в маршрутизатор на несколько тоннелей.

Всего в сумме получается шесть внешних IPv6. Потому, при проверке IPv6 адреса в интернете, например на сайтах https://test-ipv6.com/index.html.ru_RU или https://ipv6-test.com/, я вижу разные свои внешние IP. Два внешних IPv4, и шесть IPv6.


Весь этот огород из маршрутизаторов не делает мне нервы и лишний раз не беспокоит. Вся конфигруация стабильно работает без перебоев. При этом маршрутизаторы выключаются при выключении ПК, и всех остальных потребителей трафика. Например ночью когда все спят. При подаче питания все само запускается и работоспособно через полторы минуты.


Цена за маршрутизаторы составила около 150$.


Все что ставилось в ТЗ все было реализовано ))


Все замечания и предложения пишите в комментариях. Если остались какие-либо непонятные моменты или неточности, то отвечу в комментах, или распишу отдельным постом.


PS: Пораскинув немного мозгами, пришел к выводу что всю эту кухню можно реализовать при помощи всего одного маршрутизатора и управляемого коммутатора, что бы тегировать VLANы. Но проверять я это конечно же не буду))

Показать полностью

Настройка OpenWRT, mwan3, adblock, openvpn, IPv6 (6in4) ч.2

В этой части я привожу конфигурацию файлов маршрутизатора для каждого провайдера.


*************************


/etc/config/network

config switch # здесь все по умолчанию

config switch_vlan # настройка управляемого коммутатора

option device 'switch0' # имя коммутатора

option vlan '1010' # тег, или имя виртуальной частной сети.

option ports '5t 0 1 2 3t' # настройка портов для vlan '1010'. 5t - порт смотрящий в "процессор", 3t - порт смотрящий в нижестоящий маршрутизатор


"t" означает что трафик через порт тегируется, если в пакетах трафика тег не совпадает, то трафик через этот порт не проходит. Зачем это нужно, распишу в следующей части.


config switch_vlan

option device 'switch0'

option ports '5t 4' # 4 - порт смотрящий в сторону ISP, без тега.

option vlan '2' # имя виртуальной частной сети.


config globals 'globals' # - по умолчанию


config device 'wan_eth0_2_dev' # настройка конфигурации порта

option name 'eth0.2' # имя порта

option macaddr 'хх:хх:хх:хх:хх:хх' # MAC-адрес порта


config interface 'loopback' # по умолчанию


config interface 'lan' # настройка локальной сети. 'lan' - имя интерфейса

option proto 'static' # тип протокола

option netmask '255.255.255.0' # маска сети

option ipaddr '192.168.10.1' # сетевой адрес маршрутизатора, адрес шлюза для нижестоящего маршрутизатора. По этому адресу можно зайти на этот маршрутизатор.

option ip6assign '60' # длина префикса IPv6 для локальной сети

option force_link '0' # если 1 то подключение всегда есть, независимо от того подключен кабель физически, или нет.

option ifname 'eth0.1010' # интерфейс, или порт через который осуществляется выход в частную сеть

option delegate '0' # отключить встроенный менеджмент IPv6. Если 1, то происходит просто какая-то дичь.


config interface 'wan' # настройка для подключения к ISP. 'wan' - имя интерфейса

option proto 'dhcp' # тип протокола

option peerdns '0' # если 0, то не принимать выдаваемые DNS ISP.

option ifname 'eth0.2' # порт через который подключаемся к провайдеру

option metric '10' # метрика интерфейса, нужна для mwan3

list dns 'ххх.ххх.ххх.ххх' # DNS через которые будут разрешаться имена хостов IPv4. Можно добавить несколько таких строк с разными адресами DNS серверов.

option delegate '0' # отключить встроенный менеджмент IPv6.


config interface 'ipv6' # настройка для подключения к туннельному брокеру. Таких интерфейсов можно создать несколько. 'ipv6' - имя интерфейса туннеля

option proto '6in4' # тип протокола

option peeraddr 'ххх.ххх.ххх.ххх' # IPv4 адрес брокера

list ip6prefix 'хххх:хххх::/48' # можно прописать, но в моей конфигурации я это не использую

option ip6addr 'хххх:хххх::2/64' # IPv6 адрес вашего туннеля который вам выдал брокер

option gateway 'хххх:хххх::1/64' # шлюз, то есть IPv6 адрес туннеля на стороне брокера. Указывать необязательно

option peerdns '0' # если 0, то не принимать выдаваемые DNS ISP. Скорей всего эта опция здесь бесполезна, но я решил добавить.

list dns 'хххх:хххх::х' # DNS через которые будут разрешаться имена хостов IPv6.

option metric '101' # метрика интерфейса, нужна для mwan3

option ttl '250' # время жизни пакетов для интерфейса.

option delegate '0' # отключить встроенный менеджмент IPv6.

option defaultroute '0' # не настраивать это подключение шлюзом по умолчанию. Если не добавить эту опцию, то маршрутизатор, благодаря балансировщику mwan3, будет пытаться направлять свой внутренний трафик на этот интерфейс, или когда используется таблица маршрутизации по умолчанию, без балансировки.


config interface 'vpnv4' # настройка для подключения к OpenVPN по протоколу IPv4

option proto 'none' # тип неуправляемого протокола

option ifname 'tun0' # название интерфейса через который будет подключаться клиент OpenVPN

option ttl '250' # время жизни пакетов для интерфейса.

option metric '201' # метрика интерфейса, нужна для mwan3

option delegate '0' # отключить встроенный менеджмент IPv6.

option defaultroute '0' # не настраивать это подключение шлюзом по умолчанию.


config interface 'vpnv6' # настройка для подключения к OpenVPN по протоколу IPv6. Настройки полностью аналогичны как для IPv4, включая option ifname 'tun0'


*************************


Файл /etc/config/dhcp


config dnsmasq # настройка локального DNS и DHCP серверов

option domainneeded '1' # Не перенаправлять DNS-запросы без DNS-имени

option localise_queries '1' # Локализовать имя хоста в зависимости от запрашиваемой подсети, если доступно несколько IP-адресов

option local '/lan/' # Локальный сервер

option domain 'lan' # Локальный домен

option expandhosts '1' # Добавить локальный суффикс домена для имен из файла хостов (/etc/hosts)

option authoritative '1' # Это единственный DHCP-сервер в локальной сети

option readethers '1' #

option leasefile '/tmp/dhcp.leases' # Файл, где хранятся арендованные DHCP-адреса

option rebind_protection '0' # Защита от DNS Rebinding (выключено)

option allservers '1' # Опрашивать все имеющиеся внешние DNS-серверы, которые указаны для конкретных интерфейсов, или в этом файле конфигурации

option localservice '1' # Только локальный DNS

option filterwin2k '1' # Не перенаправлять обратные DNS-запросы для локальных сетей

option ednspacket_max '4096' # максимальный размер пакета передаваемый DNS.

option resolvfile '/tmp/resolv.conf.auto' # адреса DNS серверов которые собираются со всех интерфейсов если они прописаны в list dns '*****'

option confdir '/tmp/dnsmasq.d' # Здесь находится дополнительный файл настроек DNS. Этот файл создает блокировщик рекламы, туда он пишет запрещенные домены.

option cachesize '10000' # размер кеша адресов DNS сервера

option quietdhcp '1' # Подавить логирование стандартной работы этих протоколов

option dnsforwardmax '200' # Максимально допустимое количество одновременных DNS-запросов

list notinterface 'vpnv4' # Игнорируемые интерфейсы. Эти интерфейсы DNS не прослушивает и не разрешает на них адреса.

list notinterface 'wan' # Игнорируемые интерфейсы. Эти интерфейсы DNS не прослушивает и не разрешает на них адреса.


config dhcp 'lan' # Настройка DHCP для локальной сети

option interface 'lan' # имя интерфейса

option start '100' # с какого адреса начнется раздача IP-адресов

option limit '150' # на каком адресе закончится раздача IP-адресов

option dhcpv6 'server' # Режим работы для DHCPv6

option ra 'server' # Режим работы для DHCPv6

option force '1' #

option ra_default '1' # Объявлять всегда, как маршрутизатор по умолчанию

option ra_management '1' #

option leasetime '5m' # время аренды адресов. Пять минут, так как маршрутизатор после перезагрузки не всегда выдает IP нижестоящему маршрутизатору.


config dhcp 'wan' # Игнорируемые интерфейсы для раздачи адресов через DHCP

option interface 'wan' # Имя игнорируемого интерфейса, можно добавлять несколько.

option ignore '1' # Имя игнорируемого интерфейса, можно добавлять несколько.


*************************


/etc/config/firewall


config defaults # настройка правил по умолчанию

option input 'ACCEPT' # разрешить входящий трафик

option forward 'ACCEPT' # разрешить перенаправление. Внимание! Это скорей всего создает брешь в сетевом экране, почитайте в сети про это подробней.

option output 'ACCEPT' # разрешить исходящий трафик

option drop_invalid '1' # Отбрасывать некорректные пакеты

option syn_flood '1' # Включить защиту от SYN-flood атак

option flow_offloading '1' # Программная реализация offloading для маршрутизации/NAT. Программное ускорение обработки. Внимание! Не все маршрутизаторы это поддерживают.

option flow_offloading_hw '1' # Аппаратный flow offloading. Аппаратное ускорение обработки. Внимание! Не все маршрутизаторы это поддерживают.


config include 'nat6' # добавляем NATv6

option type 'script' #

option path '/etc/firewall.nat6' # путь, где расположен скрипт реализующий NATv6. Нужно вручную его туда поместить, описано в первой части.

option family 'any' #

option reload '1' # перезапускать скрипт при запуске сетевого экрана


config zone # настройка зоны локальной сети

option name 'lan' # имя зоны

option network 'lan' # имя интерфейса для локальной сети. Задается этой опцией: config interface 'lan'

option input 'ACCEPT' # разрешить входящий трафик

option forward 'ACCEPT' # разрешить перенаправление.

option output 'ACCEPT' # разрешить исходящий трафик


config zone # настройка зоны для подключения к ISP

option name 'wan' # имя зоны

option network 'wan' # имя интерфейса смотрящего в сторону ISP. Задается этой опцией: config interface 'wan'

option family 'ipv4' # семейство протоколов. В данном случае IPv4.

option output 'ACCEPT' # разрешить исходящий трафик

option forward 'ACCEPT' # разрешить перенаправление. Внимание! Это скорей всего создает брешь в сетевом экране, почитайте в сети про это подробней.

option input 'ACCEPT' # разрешить входящий трафик

option masq '1' # Разрешить маскарадинг. В двух словах, это технология благодаря которой вся локалка может пользоваться одним внешним IP адресом.

option masq6 '0' # Разрешить маскарадинг для IPv6. Нужно ставить '1' если option family 'ipv6'

option masq6_privacy '0' # у меня это не используется.

option mtu_fix '1' # Ограничение MSS, более продвинутая технология обнаружения длины пакета в TCP/IP.


config zone может быть несколько, для каждого интерфейса. Можно так же объединять несколько интерфейсов в одну зону.


config forwarding # правила следования трафика. В данном случае правило разрешает следовать трафику из локальной сети в глобальную

option src 'lan' # источник трафика. 'lan' - имя интерфейса

option dest 'wan' # приемник трафика. 'wan' - имя интерфейса


config forwarding нужно создать для каждого интерфейса.


config redirect # правило для перенаправления портов

option name 'wan' # имя правила

option src 'wan' # источник, откуда пытаются зайти на порты ПК за NATом

option dest 'lan' # зона назначения. В данном случае локальная сеть

option target 'DNAT' # динамический NAT так как используется маскарадинг на интерфейсе.

list proto 'all' # перенаправлять любой протокол (TCP, UDP, ICMP)


config redirect создается для тех интерфейсов, для которых нужно открыть порты. Можно прописать только конкретные порты и протоколы. Внимание! Правило выше скорей всего создает брешь в сетевом экране, пользуйтесь обдуманно.


config rule # правила для трафика

option src 'wan' # зона источника

option dest 'lan' # зона назначения

option proto 'all' # тип протокола. В данном случае все протоколы

option name 'all_wan' # имя правила

option family 'ipv4' # семейство протоколов. В данном случае IPv4.

option device 'eth0.2' # привязка к интерфейсу

option direction 'in' # означает что устройство входящее

option target 'ACCEPT' # разрешить перенаправляемый трафик


config rule создается для всех интерфейсов. option family 'ipv4' для целей корректной балансировки нужно выбрать только 'ipv4' или 'ipv6'.


config ipset # это список сетей которые будут маршрутизироваться через VPN. Используется балансировщиком mwan3

option name 'namev4' # имя списка

option family 'ipv4' # семейство протоколов. Ipset в одном списке допускает только адреса одного протокола.

option match 'dest_net' # Тип адресов. В данном случае адреса источников, и тип net, то есть работа с подсетями х.х.х.х/0, а не по конкретным IP-адресам

option storage 'hash' # Тип хранилища адресов.

option enabled '1' # разрешить использовать этот список

option loadfile '/etc/namev4' # путь и файл где хранится список. Имеет вид, одна подсеть на строку. Формат файла неважен, формат конца строк как для UNIX систем.


config ipset для IPv6 создается отдельно. Опции которые отличаются от набора для IPv4: option name 'namev6', option family 'ipv6', option loadfile '/etc/namev6' - формат файла точно такой. Только подсети для IPv6 указываются вида abcd:abcd::/0.


*************************


/etc/config/mwan3


Правила config rule 'ххх' выполняются в порядке сверху вниз. Поэтому правила для VPN ставятся выше всех. Иначе весь трафик будет "заворачиваться" на шлюз по умолчанию, то есть непосредственно через ISP, а не через туннель.


config rule 'vpn_ipv4' # правило для трафика IPv4, который маршрутизируется через VPN туннели.

option proto 'all' # разрешить пропускать все протоколы (TCP, UDP, ICMP). Эта опция должна быть во всех правилах. Или можно выбрать только конкретный протокол, например TCP

option src_ip '192.168.0.0/16' # адрес источника который направляется в туннель. В данном случае это локальная сеть IPv4 с диапазоном адресов от 192.168.0.0-192.168.255.255

option ipset 'namev4' # набор адресов (подсетей) которые маршрутизируются через VPN туннели. То есть это IP адреса заблокированных сайтов к которым нужно получить доступ

option use_policy 'balanced_vpnv4' # имя используемой политики при совпадении трафика с этим правилом


config rule 'all_v4' # Это правило разрешает проходить весь остальной трафик IPv4 через ISP

option proto 'all' # разрешить пропускать все протоколы (TCP, UDP, ICMP)

option use_policy 'balanced_wan' # имя используемой политики

option src_ip '192.168.0.0/16' # адрес источника который направляется в туннель. В данном случае это локальная сеть


config rule 'vpn_ipv6' # правило для трафика IPv6, который маршрутизируется через VPN туннели.

option src_ip 'fd00::/8' # адрес источника который направляется в туннель. В данном случае это локальная сеть IPv6

option ipset 'namev6' # набор адресов (подсетей) которые маршрутизируются через VPN туннели.

option use_policy 'balanced_vpnv6' # имя используемой политики при совпадении трафика с этим правилом


config rule 'all_v6' # Это правило разрешает проходить весь остальной трафик IPv6 через ISP

option use_policy 'balanced_wan6' # имя используемой политики при совпадении трафика с этим правилом

option src_ip 'fd00::/8' # адрес источника который направляется в туннель. В данном случае это локальная сеть IPv6


config rule 'drop_all' # правило которое убивает весь трафик, который не попал под правила выше. Нужно что бы сразу после запуска не использовалась основная таблица маршрутизации.

Иначе трафик сразу начинает проходить еще до полной загрузки mwan3

option src_ip '0.0.0.0/0' # в данном случае абсолютно любой адрес. Применимо для IPv4 и IPv6

option use_policy 'unreachable' # политика по умолчанию настроенная в mwan3 для отклонения трафика


Ниже настройки политик "config policy". Политики включают в себя узлы (виртуальные копии интерфейсов которые настроены в /etc/config/network. С дополнительно назначенным весом и метрикой, которые определены в "config member"


config policy 'balanced_wan' # имя политики в которую входит интерфейс IPv4 для подключения к ISP

list use_member 'wan_1' # перечень виртуальных интерфейсов. В данном случае один виртуальный интерфейс подключения к провайдеру интернета

option last_resort 'unreachable' # означает что нужно отбрасывать трафик, если ни один интерфейс в политике не поднят. Эта опция должна быть во всех политиках


config policy 'balanced_wan6' # имя политики в которую входят интерфейсы IPv6 туннельных брокеров

list use_member 'ipv6_1' # имя первого виртуального интерфейса туннельного брокера.

list use_member 'ipv62_1' # имя второго виртуального интерфейса туннельного брокера. Таких интерфейсов можно несколько


config policy 'balanced_vpnv4' # имя политики в которую входит интерфейс IPv4 для подключения через VPN

list use_member 'vpnv4_1' # имя виртуального интерфейса VPN туннеля


config policy 'balanced_vpnv6' # имя политики в которую входит интерфейс IPv6 для подключения через VPN

list use_member 'vpnv6_1' # имя виртуального интерфейса VPN туннеля


config member 'wan_1' # имя виртуального интерфейса IPv4 ISP, который дальше будет использоваться в политиках и правилах mwan3. Имя виртуального интерфейса не должно совпадать с именем интерфейса настроенного в /etc/config/network.

option interface 'wan' # имя интерфейса настроенного в /etc/config/network

option metric '1' # метрика интерфейса. Нужна для определения пула равнозначных интерфейсов

option weight '1' # вес интерфейса. Работает правило пропорции.


config member 'ipv6_1' # имя виртуального интерфейса туннеля IPv6 туннельного брокера

option interface 'ipv6' # имя интерфейса в /etc/config/network

option metric '2' # метрика

option weight '1' # вес


config member у меня три штуки, для каждого туннельного брокера свой, метрика у всех одна — "2", вес так же одинаков — "1".


config member 'vpnv4_1' # имя виртуального интерфейса IPv4 туннеля VPN

option interface 'vpnv4' # имя интерфейса в /etc/config/network

option metric '3' # метрика

option weight '1' # вес


config member 'vpnv6_1' #

option interface 'vpnv6' # имя интерфейса в /etc/config/network

option metric '4' # метрика

option weight '1' # вес


Дальше настройки для интерфейсов в /etc/config/network, которые должны балансироваться через mwan3


config interface 'wan' # имя интерфейса в /etc/config/network

option enabled '1' # разрешить работу этого интерфейса

list track_ip '8.8.4.4' # IPv4 адрес для отслеживания поднят ли интерфейс.

option family 'ipv4' # семейство протоколов. Либо IPv4, либо IPv6. Одновременно оба в mwan3 работать не могут.

option count '1' # Кол-во пинг-запросов, один пинг-запрос

option interval '5' # Интервал пинг-запроса, 5 сек

option down '3' # Если пропал пинг то начинать пинговать каждые 3 сек

option track_method 'ping' # метод отслеживания, здесь при помощи пинга

option size '56' # Размер пинг-запроса

option max_ttl '60' # TTL

option check_quality '0' # проверка качества соединения. Не проверять

option up '3' # Интервал пинг-запроса при сбое восстановления

option initial_state 'offline' # Состояние по умолчанию, до тех пор пока не начались ответы на пинг запросы. Здесь состояние "выкл"

option failure_interval '3' # Интерфейс будет считать отключенным, после данного количества пинг-запросов.

option recovery_interval '3' # Интерфейс будет считаться включенным, после данного количества пинг-запросов.

option timeout '1' # время ожидания пинг-запроса

option reliability '1' # количество хостов, которые должны ответить на пинг-запрос. у меня 1 хост 8.8.4.4

list flush_conntrack 'ifup' # очистка conntrack таблиц по истории интерфейса

list flush_conntrack 'ifdown' # очистка conntrack таблиц по истории интерфейса

list flush_conntrack 'connected' # очистка conntrack таблиц по истории интерфейса

list flush_conntrack 'disconnected' # очистка conntrack таблиц по истории интерфейса


Для остальных интерфейсов IPv4 аналогично. Для интерфейсов IPv6 такие опции: list track_ip 'www.google.com' — нужно указывать домен, просто по IP работает криво, option family 'ipv6'.


Туннели от брокеров IPv6 я не пингую, для них указаны такие опции: option initial_state 'online', опцию list track_ip нужно удалить.


*************************

/etc/config/adblock


config adblock 'global' # собственно конфигурация

option adb_enabled '1' # разрешить работу блокировщика рекламы

option adb_forcedns '0' #

option adb_safesearch '0' # не использовать безопасный поиск предлагаемый поисковиками. Да, я хочу видеть порево и расчлененку в поисковой выдаче

option adb_mail '0' # отправка на почту статистики — отключено

option adb_dns 'dnsmasq' # что используется в качестве сервера DNS на маршрутизаторе

option adb_dnsflush '1' # очистка кеша DNS после обновления списков блокировок

list adb_sources 'adaway' # список блокировок №1

list adb_sources 'adguard' # список блокировок №2 На самом деле у меня их много. Если что, можно выбрать через GUI в LUCI.

option adb_trigger 'wan' # триггер запуска, при поднятии интерфейса для ISP запустится блокировщик

option adb_fetchutil 'wget' # Клиент, которым скачиваются списки блокировок

option adb_debug '1' # предоставить расширенный отчет работы блокировщика.

option adb_dnsfilereset '0' # Не сбрасывать итоговый файл блокировки. Подробно в документации на блокировщик

option adb_dnstimeout '50' # Сколько ждать ответа после перезапуска локального DNS сервера

option adb_repiface 'eth0.1010' # у меня не используется, это интерфейс куда слать отчеты о работе

option adb_report '0' # не слать отчеты о работе блокировщика

option adb_backupdir '/tmp' # папка для резервных копий списков блокировки. В OpenWRT папка /tmp это RAM-диск

option adb_backup '1' # разрешить бекап списков блокировки

option adb_tmpbase '/tmp' # основная папка для работы блокировщика.

option adb_maxqueue '32' # количество параллельно обрабатываемых потоков при обработке списков блокировок. У меня тянет все 32

option adb_triggerdelay '60' # Сколько нужно ждать после срабатывания триггера перед запуском блокировщика


*************************


/etc/config/openvpn


config openvpn 'blokirovkamnet' # название VPN подключения

option config '/etc/openvpn/blokirovkamnet.ovpn' # файл конфигурации OpenVPN

option enabled '1' # разрешить работу этого подключения


Дополнительные опции в файле *.ovpn:

nobind

client

remote xxxx.com # адрес OpenVPN сервера к которому будем подключаться

remote-cert-tls server # эта опция идет по умолчанию в конфиге сервера к которому я подключаюсь

cipher AES-128-CBC # эта опция идет по умолчанию в конфиге сервера к которому я подключаюсь

setenv opt ncp-ciphers AES-128-GCM # эта опция идет по умолчанию в конфиге сервера к которому я подключаюсь

setenv opt block-outside-dns # не направлять запросы на разрешение имен через VPN

dev tun0 # имя интерфейса в /etc/config/network к которому жестко будет привязана данная конфигурация

proto tcp # эта опция идет по умолчанию в конфиге сервера к которому я подключаюсь

sndbuf 0 # если 0, то размер буфера отправки выставляется максимальный который позволяет удаленный сервер.

rcvbuf 0 # если 0, то размер буфера приема выставляется максимальный который позволяет удаленный сервер.

route-nopull # главная опция, не принимать маршруты передаваемые удаленным сервером. Маршруты мы прописываем через свои ipset таблицы


*************************


Для второго провайдера все аналогично, за исключением того что внешние IP адреса другие. Так же отличие заключается в следующих опциях:

option vlan '1020' # это для второго провайдера.

option ipaddr '192.168.20.1' # это для второго провайдера, а так же это локальный адрес второго маршрутизатора.


Конфиг для маршрутизатора балансирующего трафик от первых двух будет короче))


Сегодня реально максималка по количеству текста.


Сегодня снова много текста. Остальное в следующей части.

Показать полностью

Настройка OpenWRT, mwan3, adblock, openvpn, IPv6 (6in4) ч.1

Приветствую!


Disclaimer.

В ОС семейства Linux я профан, так же как и в компьютерных сетях.

Пост рассчитан на людей с прямыми руками, умеющими пользоваться поисковыми системами (гуглить).


ТЗ, или мои хотелки:


1. Реализовать балансировку нагрузки, и отказоустойчивость, между двумя провайдерами (ISP). Каждый провайдер предоставляет безлимитное подключение 100 мегабит по витой паре.

2. Настроить по несколько туннелей IPv6 to IPv4 (6in4) от туннельных брокеров, на каждом провайдере. Реализовать балансировку нагрузки между туннелями.

3. Настроить несколько OpenVPN клиентов, на каждом провайдере, для конкретных адресов (заблокированных сайтов). Настроить балансировку нагрузки между OpenVPN клиентами.

4. Настроить блокировку рекламы (AdBlock) на уровне DNS сервера.

5. Реализация должна быть дешевой и простой. Не имеет значения на чем все будет реализовано.


Для реализации задумки взяты за основу три маршрутизатора Netgear R6300v2, на которые должна устанавливаться ОС OpenWRT. Просто лишь потому что они удачно подвернулись на вторичном рынке.


На сайте проекта OpenWRT заявлена почти полная поддержка этих маршрутизаторов. Единственное, что вообще не будет работать это Wi-Fi 802.11ac (5 ГГц). Wi-Fi 802.11b/g/n (2.4 ГГц) можно сказать что тоже не будет работать. Вся проблема в открытых исходниках от Broadcom Inc, которых попросту нет. Что противоречит концепции проекта OpenWrt.

Для меня это не критично, так как для этих стандартов используется маршрутизатор ASUS RT-AC66U B1 под управлением ОС FreshTomato 2020.2.


Для каждого провайдера используется свой R6300v2, на котором реализуются пункты ТЗ 2-4. На третьем — реализуется первый пункт ТЗ. То есть третий маршрутизатор выступает просто балансировщиком нагрузки между первыми двумя маршрутизаторами.


На момент написания этой статьи на маршрутизаторах установлена ОС OpenWrt 19.07.2


Вкратце опишу процесс "накатывания" прошивки OpenWrt.

Для начала нужно скачать файл прошивки "netgear-r6300v2-webflash.bin" с сайта ftp://ftp.dd-wrt.com/betas/ проекта DD-WRT. Потому что напрямую прошить маршрутизатор OpenWrt не удастся.

После прошивки промежуточной прошивки от DD-WRT, прошиваем файл "openwrt-19.07.0-rc2-bcm53xx-netgear-r6300-v2-squashfs.chk", который можно скачать по адресу https://downloads.openwrt.org/releases/19.07.2/targets/bcm53...

Процесс прошивки не сложный, нужно зайти в меню для обновления прошивки, указать файл и загрузить его в маршрутизатор.


Если нужно подробно описать как прошивать маршрутизатор, и в случае чего возвращать его с "того света" при неудачной прошивке, то напишите об этом в комментариях.


Так же, если нужно, опишу процесс разгона (overclocking) маршрутизатора R6300v2. Получив частоту ЦП 1200МГц, вместо штатной 800МГц, памяти 800МГц базовой частоты, вместо 533МГц.


На каждом провайдере у меня раньше, и сейчас тоже, стоят самые дешевые Wi-Fi маршрутизаторы Tenda W316R. Достаточно давно именно через них шла раздача Wi-Fi на несколько смартфонов.

Сейчас же они оставлены по одной простой причине — если что-то прилетит по витой паре, например гроза, то в первую очередь выйдут из строя W316R, при этом R6300v2 должны уцелеть.

Да и пока игрался с R6300v2, W316R были просто незаменимы, так как у меня каждый провайдер выдает IP-адреса через DHCP сервер, с привязкой по MAC-адресу. Благодаря чему я мог оперативно переключать кабель в W316R что бы просто получить доступ к сети, если что-то шло не так с R6300v2.

А таких ситуаций за две недели было немало. Примерно столько времени было потрачено на все пляски. Потому что на тот момент опыта работы с OpenWRT, и линуксом в частности, у меня не было вообще, да и сейчас его нет.


Итак подключаем R6300v2 к интернету, и скачиваем пакеты:


6in4 (для создания IPv6 туннелей)


kmod-ipt-nat6 (нужен для NAT IPv6, при балансировке нагрузки между туннелями)


luci-i18n-ttyd-ru (можно запускать терминал из браузера)


luci-i18n-firewall-ru (русификация ПО установленного по умолчанию в OpenWRT)

luci-i18n-base-ru (русификация ПО установленного по умолчанию в OpenWRT)

luci-i18n-opkg-ru (русификация ПО установленного по умолчанию в OpenWRT)


luci-i18n-mwan3-ru (если используется несколько WAN интерфейсов)


luci-i18n-adblock-ru (блокировщик рекламы)

wget (нужен для адблок, утилита для скачивания списков блокировки)

tcpdump-mini (нужен для адблок, утилита для создания отчетов)

coreutils-sort (нужен для адблок)

gawk (поддержка gnu awk в качестве альтернативы умолчанию для busybox)


luci-i18n-openvpn-ru (OpenVPN клиент)

openvpn-openssl (без этого вообще не работает)

openvpn-easy-rsa (нужен для OpenVPN)


Для маршрутизатора который занят только балансировкой нагрузки между двумя оставшимися, достаточно только таких пакетов:


kmod-ipt-nat6 (нужен для NAT IPv6, при балансировке нагрузки между туннелями)

luci-i18n-ttyd-ru (можно запускать терминал из браузера)

luci-i18n-firewall-ru (русификация ПО установленного по умолчанию в OpenWRT)

luci-i18n-base-ru (русификация ПО установленного по умолчанию в OpenWRT)

luci-i18n-opkg-ru (русификация ПО установленного по умолчанию в OpenWRT)

luci-i18n-mwan3-ru (если используется несколько WAN интерфейсов)


Все что необходимо подтянется автоматом при скачивании перечисленных выше пакетов. Галочку для перезаписи существующих файлов нигде не ставим.


После установки всех пакетов перезагружаем маршрутизатор.


Если нет лишних маршрутизаторов как у меня, и вообще есть проблемы загрузить пакеты через маршрутизатор, то есть один способ. Для этого нужно выкачать содержимое директорий под R6300v2 на сейте OpenWRT, установить простенькую программку HTTP сервера себе на комп, и изменить пути получения пакетов для opkg в маршрутизаторе. Если нужно пишите, создам отдельный подробный пост как это делать. Это особенно полезно если имеется целый парк маршрутизаторов, особенно в изолированной локальной сети.


Теперь можно приступить к созданию необходимой конфигурации. Для этого удобно пользоваться программой WinSCP.exe, можно скачать по этой ссылке: https://winscp.net/eng/download.php

Запускаем программу, выбираем протокол передачи: SCP, в качестве имени хоста вбиваем адрес маршрутизатора, обычно 192.168.1.1, порт: 22, имя пользователя: root. Если вводили пароль, то так же указываем и его, у себя я пароли не использую.


Заходим в папку /etc/config, для редактирования нам понадобятся такие файлы:


/etc/config/network

/etc/config/dhcp

/etc/config/firewall

/etc/config/mwan3

/etc/config/system

/etc/config/adblock

/etc/config/openvpn


Копируем эти файлы в любую папку на компьютере. Для редактирования удобно использовать Notepad++.

Еще потребуется создать файл скрипта /etc/firewall.nat6, атрибуты "firewall.nat6" rw-r--r--. Этот скрипт реализует работу NATv6, позже опишу зачем такое извращение. И создать папку /etc/openvpn/ в которую нужно закинуть файлы конфигурации *.ovpn клиента openvpn. Атрибуты для этой папки должны быть "rwxr-xr-x".


Что-то многовато получилось. Думаю на сегодня хватит.

На очереди статья с описанием и содержимым перечисленных выше файлов конфигураций. И итоги того что получилось.


Если кому-то эта тема интересна, дайте знать стоит ли продолжать? Возможно здесь такое никому не нужно?

Показать полностью

Ответ на пост «Чем заменить стандартный explorer.exe в винде?»

Приветствую!

Собственно в основном посте нет ответа на вопрос. Неужели никто не пользуется альтернативными оболочками, или файловыми менеджерами, для ОС семейства Windows?

В свое время, когда столкнулся с подобным вопросом, так же не знал ничего кроме TC (Total Commander). Стало даже интересно, неужели никто не создал альтернатив? Оказывается создали, и не одну.

Сейчас и далее пойдет сугубо мое мнение, и озвучка моей вкусовщины, по выбору альтернативного ПО призванного сделать работу с файлами и папками более удобной. Если у кого-то есть свои пристрастия, просьба озвучить их в комментариях, без перехода на личности, и советов сменить ОС на семейство Linux/UNIX подобных.


Наиболее удобная оболочка QTTabBar. Поддерживает вкладки как в интернет-браузерах. Позволяет использовать такие же горячие клавиши, и кнопки мыши для вкладок. Помимо этого, функционал программы просто огромен. Фактически с проводником можно делать все что угодно. При этом отзывчивость программы на высоте. Ничего не глючит, не подвисает, нет необходимости по нескольку раз обновлять окна для отображения изменений. Прекрасно работает на слабых машинах. При вылетах explorer.exe поведение стабильное, программа не закрывается и не вываливается в ошибки. Огромный плюс, это возможность сохранить абсолютно все настройки в файл, и производить экспорт/импорт последних.


Clover 3. Также поддерживает вкладки, и предоставляет возможность удобной работы с ними. Можно создавать закладки для вкладок. По скорости работы уступает QTTabBar. Больших возможностей по кастомизации файлового менеджера не имеет. Спокойно переживает вылеты explorer.exe.


Better Explorer аналог Clover 3 со своими незначительными функциями. С этой программой не особо знаком.


Explorer++ аналог Clover 3 со своими незначительными функциями. С этой программой не особо знаком.


Еще одна легковесная программка — Q-Dir. Предоставляет возможность разбить окно на четыре части (можно и на меньшее количество). И в каждом окне создавать свои вкладки. Инструментарий для каждого из четырех окошек такой точно как и в обычном проводнике explorer.exe. За исключением наличия вкладок, как в браузере. Плюс незначительная свобода по кастомизации расположения окон, изменение размеров, отображение дерева каталогов для каждого окошка. Работает шустро, подходит для старых машин. Достоинство в наглядности происходящего в разных окнах, полезна будет для ручной синхронизации нескольких папок. Возможность работать автономно без установки в ОС.


XYplorer уже платная программа. По функционалу очень похожа на Q-Dir. Так же может работать автономно. Единственное, несколько тормознутая и иногда подглюкивающая. Но как замена TC вполне подходит.


Программы расположены в порядке лучше>хуже, сверху вниз.


Необходимые дополнения для ОС семейства Windows. особенно начиная с Windows 8 и выше.


Classic Shell — позволяет кастомизировать меню Пуск и добавить панель инструментов в проводник. В частности можно настроить внешний вид меню Пуск как в семерке или ХР, с кучей дополнительных опций. Плюс программы ее быстродействие, ничего не тормозит, не вылетает, и не глючит.


StartIsBack ++ так же позволяет настроить меню Пуск как в семерке. Больше подходит для Windows 10, так как позволяет полностью повторить стиль основного интерфейса ОС.

Немного тормознутая и глюкавая относительно Classic Shell, не рекомендую для слабых машин.


Дополнительная утилита для проводника.


OldNewExplorer — позволяет вернуть привычный проводник из Windows 7 в Windows 8, 10. Под "возвратом" подразумевается изменение расположения клавиш на панели инструментов и перехода к старой структуре древа каталогов. Программа позволяет вернуть стандартную группировку носителей, изменить отображение библиотек, переключиться на стандартную строку команд вместо панели Ribbon, а также выбрать стиль оформления окон.


Думаю этого вполне достаточно.

Сам я пользуюсь OldNewExplorer, Classic Shell, QTTabBar, и при необходимости копирования больших объемов информации TC х64, на ОС Windows 10 х64 LTSC. На LTSB пользовался тем же.

Буду рад увидеть ваши предложения в комментариях по кастомизации ОС семейства Windows.

Показать полностью
Отличная работа, все прочитано!