victor_sudakov: (Default)
CloudFlare поддерживает Certificate Transparency Monitoring для тех доменов, которые в нем зарегистрированы, и присылает очень информативное письмо при выпуске нового сертификата. А как быть с остальными?

Возможно у других регистраторов есть свои инструменты, но я искал универсальный инструмент для мониторинга любого домена. Пока не нашел ничего лучше, чем Atom feed на https://crt.sh/. И вроде денег не спрашивают.

Я бы возможно предпочел в виде утилиты командной строки, читающей одну из CT баз, но работающей не нашёл.
victor_sudakov: (Default)

Соединил два Linux компьютера A и Б по Ethernet, как зайти с А на Б по ssh? IPv4 адресов не назначено, либо адрес Б неизвестен.

Можно воспользоваться IPv6 link local адресами. На компьютере А:

  1. Командой ip a выясняем имя интерфейса, к которому подключен Б. Пусть это окажется например enp2s0
  2. Посылаем ping на мультикастовый адрес ff02::1 (All Nodes) на этом интерфейсе: ping -6 ff02::1%enp2s0 или ping6 -I enp2s0 ff02::1
  3. Компьютер Б ответит со своего link local адреса, например fe80::4bb0:f155:45f5:7ee7
  4. Заходим на него по ssh pupkin@fe80::4bb0:f155:45f5:7ee7%enp2s0 с указанием интерфейса.
victor_sudakov: (Default)

Подробное описание, как заставить Laravel использовать адрес клиента из HTTP заголовка X-Real-IP вместо X-Forwarded-*, на форуме.

victor_sudakov: (Default)

Часто нужно, чтобы доменное имя отлаживаемого сайта временно разрешалось в 127.0.0.1, ::1 или приватный адрес в локальной сети. Обычно для этого редактируют /etc/hosts, но если нет возможности или желания это делать (например потому, что изменения в /etc/hosts действуют на все процессы всех пользователей данной машины), некоторые HTTP клиенты позволяют переопределить разрешение имен встроенными средствами.

Предположим, вы отлаживаете сайт https://www.mysite.example/ на сервере 192.168.10.10, тогда:

Для curl можно использовать

curl --resolve '*:443:192.168.10.10' https://www.mysite.example/

Для Google Chrome

google-chrome --host-resolver-rules='MAP www.mysite.example 192.168.10.10

Для FireFox в about:config переопределить переменную network.dns.forceResolve в 192.168.10.10, можно создать отдельный профиль с такой настройкой.

victor_sudakov: (Default)

nmcli connection add type dummy ifname lo1 ipv4.method manual ipv4.addresses 192.168.170.1/32

Will be permanently saved to /etc/NetworkManager/system-connections/dummy-lo1.nmconnection

Странно, что из Network Manager GUI никак не добавить loopback интерфейс, или я не нашёл нужной кнопки.

victor_sudakov: (Default)
Интересно, это только мой недотелефон так себя ведёт, или это общая проблема Андроида с сабжами?

Стоит зайти в какой-нибудь торговый центр или вокзал, как телефон теряет мобильный интернет, потому что

  1. Радостно обнаружил незапароленный WiFi
  2. Переключился на него и пытается передавать через него данные Телеграм и прочего
  3. А на самом деле там captive portal и в каком-то неочевидном месте надо с чем-то согласиться или ввести свои данные, только я не собирался это делать в данном ТЦ.
victor_sudakov: (Default)

Я полагал, что познакомился с командой Александра Щипунова в 2000 году, когда пришел работать в СибПТУС и занялся там городским пирингом. А потом вдруг вспомнил, что на самом деле как минимум на 2 года раньше - когда мы в 1998 организовывали первый компьютерный класс во Дворце творчества юных, мы сделали выделенку 33600 до ИЦ ТГУ, получили /26 из их блока сетей и домен dtu.tsu.ru. Вот тогда и познакомился с Александром, а также с Иваном Паскалем и Вадимом Остраницыным.

victor_sudakov: (Default)

Можно сгенерировать QR code своей WiFi сети, например чтобы предлагать гостям, на https://qifi.org/. Якобы всё генерируется локально на JS и SSID/пароль никуда не передается.

Можно конечно сделать echo "WIFI:S:<SSID>;T:<WPA|WEP|>;P:<password>;;" | qrencode -s 10 -o wifi.png если под рукой есть Unix.

victor_sudakov: (Default)

Предположим есть два ISP, от каждого ISP по /56 и отдельный физический линк, маршрутизатор ЛВС один. Какие есть решения по переключению всех хостов внутренней сети на резервного провайдера при падении основного? Понятно, что на внутренний интерфейс маршрутизатора можно назначить два или более префикса одновременно, а на маршрутизаторе policy routing, но как предполагается сабжи будут узнавать о падении одного из ISP?

Понятно что есть IPv6-to-IPv6 Network Prefix Translation - но это же костыль. "За что боролись?" И кстати в Микротике его нет, и неизвестно в каких моделях SOHO маршрутизаторов он есть.

Если от каждого ISP поставить по отдельному маршрутизатору, и установить небольшой RA lifetime, то при отказе или выключении одного из маршрутизаторов все хосты постепенно (в течение RA lifetime) переползут на другой, но это будет а) небыстро и б) не сработает, если проблемы за маршрутизатором (на стороне ISP).

Так как?

victor_sudakov: (Default)

Прикрутил mDNS к FreeBSD, стало удобно работать с устройствами в локальной сети с динамическими IPv4 и IPv6 адресами, например http://printer1.local/ или "ssh notebook-ann.local"

pkg install net/avahi-app dns/nss_mdns
echo 'avahi_daemon_enable="YES"' >> /etc/rc.conf.local
service avahi_daemon start

В /etc/nsswitch.conf строчку про hosts поправить на:

hosts: files mdns_minimal [NOTFOUND=return] dns

IPv6 устройства тоже прекрасно регистрируются и резолвятся.

В Ubuntu-вских nsswitch.conf mDNS уже настроено, но почему-то стоит mdns4_minimal, за что они отрезали IPv6? Пришлось подправить вручную.

victor_sudakov: (Default)

Network Analyzer (платный) - очень хорошо сделанный пакет сетевых утилит под Android. Способен показать то, что другими средствами не всегда удается посмотреть, например глобальный IPv6 адрес устройства, IPv6 DNS сервер и др.

Включает удобно сделанные ping, traceroute, LAN Scan, скан портов и пр. Поддержка IPv6.

Для мониторинга WiFi сетей не нашёл ничего лучше WiFiAnalyzer (open source).

victor_sudakov: (Default)

После обновления exim до exim-4.94_4 и FreeBSD до 12.2 внезапно перестал работать av_scanner по TCP. В логе exim сабжевое сообщение, clamd на 192.168.x.x вообще никаких данных от exim не получает.

При этом просто зайти "telnet 192.168.x.x 3310" и пообщаться с clamd вполне работает.

Решение: отключил TCP Fast Open на хосте с exim:
sysctl net.inet.tcp.fastopen.client_enable=0
и всё заработало.

Технические подробности

victor_sudakov: (Default)

Port 465

Almost every ESP does not accept connections on port 465. Port 465 was never published by the Internet Engineering Task Force (IETF) as an official SMTP transmission channel but was registered as an SMTP port by the Internet Assigned Numbers Authority (IANA).

This port was initially used for the SMTPS encryption and authentication “wrapper” over SMTP. It was introduced to securely send emails using Secure Sockets Layer (SSL). SSL was commonly used for encrypting communications over the internet. By the end of 1998, IANA has reassigned this port number for a new service. But, still many services continue to offer the deprecated SMTPS interface on port 465. Service providers that maintain port 465 do so because older Microsoft applications do not support STARTTLS.

Don’t use port 465, because this port is no longer an accepted standard for SMTP.

Link

victor_sudakov: (Default)

Есть у меня плеер Mi Box S. В последнее время всё чаще и чаще при включении стал выдавать сообщение "Подключен к сети WiFi без доступа в Интернет". Youtube не работает, просит переподключиться. При этом VLC прекрасно играет с локального SMB сервера. Телефоны, планшет и ноутбук также через этот WiFi прекрасно ходят в Интернет. Т.е. дело явно не в ошибках беспроводной сети как таковой, и не с отсутствием выхода в Сеть на роутере. Чайниковские методы вроде "перегрузить плеер по питанию" и "пересоздать WiFi подключение" не помогают.

ОК, берем в руки Wireshark и пытаемся понять, как же плеер определяет наличие подключения к Интернету.

Сперва он успешно резолвит несколько имен, в их числе 2.android.pool.ntp.org, data.mistat.intl.xiaomi.com, connectivitycheck.gstatic.com. Потом пытается соединиться по HTTPS с сервером connectivitycheck.gstatic.com. Похоже на искомое, думаю я. Сервер предлагает вполне валидный X.509 сертификат с временем годности до 3 ноября 2020 года. А плеер ему в ответ (в TLS handshake): Alert, Certificate Expired. И всё по новой. Весь tcpdump забит этими неудачными хендшейками.

Ах ты ж, думаю, часы у плеера что ли сбились? А на экране телевизора часы плеера вполне правильное время показывают, и не заподозришь.

Иду в настройки плеера, убираю галочку "автоматически получать время из сети", подвожу локальное время буквально на минутку, сохраняю. И вуаля, моя сеть WiFi с точки зрения плеера теперь уже с доступом в Интернет.

А от 2.android.pool.ntp.org к плееру ни одного NTP-ответа не пришло. Не знаю, может раньше приходили, сейчас нет.

Ох как я зол.

victor_sudakov: (Default)
Посмотреть или вручную добавить/удалить SAD/SPD в ядре под FreeBSD можно командой setkey. Из Debian 10 setkey вынесли вместе с ipsec-tools, чем заменить? Как дебажить проблемы со strongswan?

Оказывается теперь это "ip xfrm"

"ip xfrm state" - смотреть SAD, "ip xfrm policy" - смотреть SPD.
victor_sudakov: (Default)
Логическая схема настройки IPSec IKEv2 в CLI Mikrotik (на примере защиты gre-туннеля):

Mikrotik IPSec setup

Только мне кажется, что понятия Profile и Proposal использованы весьма неортодоксально (как минимум, не как в Cisco)?

В Strongswan сабжевому proposal соответствует параметр "esp=", а сабжевому profile соответствует "ike=". Это в старом синтаксисе.

А в новом синтаксисе, судя по всему, сабжевому proposal соответствует параметр connections.<conn>.children.<child>.esp_proposals, а сабжевому profile соответствует connections.<conn>.proposals.

Вот кто придумал этот разнобой?
victor_sudakov: (Default)
fetch -4 -o- http://ident.me; fetch -6 -o- http://ident.me

На Linux можно "curl -4 http://ident.me".

UPD есть еще http://ifconfig.me

curl ident.me
curl -6 ident.me
curl ifconfig.me


Если нет браузера, например надо из командной строки Cisco, то
telnet ident.me
victor_sudakov: (Default)
Во FreeBSD есть удобная фича для организации IPSec туннелей: интерфейс ipsec. Включен в GENERIC ядро, т.е. доступен "из коробки".

Интерфейс ipsec автоматически создает все необходимые политики (SPD) в ядре. Пример конфигурации интерфейса (где x.x.x.x и y.y.y.y - публичные адреса нашего и удалённого роутера соответственно):
cloned_interfaces="ipsec0"
create_args_ipsec0="reqid 100"
ifconfig_ipsec0="inet 192.168.1.1 192.168.1.2 netmask 255.255.255.252 tunnel x.x.x.x y.y.y.y"


Вышеприведенная настройка создаст вот такие записи в SPD:
0.0.0.0/0[any] 0.0.0.0/0[any] any
        in ipsec
        esp/tunnel/2.2.2.2-1.1.1.1/unique:100
        spid=3051 seq=9 pid=12530 scope=ifnet ifname=ipsec0
        refcnt=1
::/0[any] ::/0[any] any
        in ipsec
        esp/tunnel/2.2.2.2-1.1.1.1/unique:100
        spid=3053 seq=8 pid=12530 scope=ifnet ifname=ipsec0
        refcnt=1
        refcnt=1
0.0.0.0/0[any] 0.0.0.0/0[any] any
        out ipsec
        esp/tunnel/1.1.1.1-2.2.2.2/unique:100
        spid=3052 seq=1 pid=12530 scope=ifnet ifname=ipsec0
        refcnt=1
::/0[any] ::/0[any] any
        out ipsec
        esp/tunnel/1.1.1.1-2.2.2.2/unique:100
        spid=3054 seq=0 pid=12530 scope=ifnet ifname=ipsec0
        refcnt=1

После конфигурации интерфейса останется только обменяться ключами (создать записи в базе SAD). Это можно сделать на статических ключах, как описано в man, или привлечь racoon или strongswan. Чтобы strongswan а) не пытался создавать свои записи в SPD и б) привязывал записи в SAD к нашим ipsec-интерфейсам и созданным ими политикам, мы напишем в ipsec.conf отдельную секцию на каждый ipsec-интерфейс, запретим в ней создание записей в SPD (они у нас уже есть) и дадим ссылку на reqid соответствующего ipsec-интерфейса:
conn ipsec0
   left=x.x.x.x
   right=y.y.y.y
   reqid=100
   authby = psk
   auto=route
   installpolicy = no


Но, повторюсь, может быть вам достаточно будет (в зависимости от вашей модели угроз) сделать всё на статических ключах, как описано в мануале, тогда схема получается железобетонная по надежности и не требует стороннего софта. А на if_ipsec можно использовать протоколы динамической маршрутизации - это полноценный сетевой интерфейс.

Profile

victor_sudakov: (Default)
Виктор Судаков

November 2025

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 21st, 2026 05:52 pm
Powered by Dreamwidth Studios