Cloudflare + Opnsense

Здравствуйте, господа.
Решил тоже вкатиться в homelab, но споткнулся прям в дверях. :slight_smile:

Схема сети пока что простейшая: провод от провайдера воткнут в сервер с Proxmox, на котором крутится виртуалка Opnsense, из этого сервера провод идёт в wi-fi роутер в режиме точки доступа. Opnsense является гейтом, dns сервера в нём указаны 9.9.9.9.

Пытаюсь сейчас прикрутить traefik, но получил какое-то странное поведение ещё до настройки самого traefik’a:

Домен (зона su) прописан в cloudflare с проксированием, IP белый, статический, РФ.

  1. Если в opnsense не задавать никаких правил и порт форвардингов:

1.а При подключении клиента к wi-fi: по адресу https://myhost.tld я получаю 522 ошибку от cloudflare, по адресу https://my.white.ip.address страница роутера доступна.
1.б Если проверить не подключаясь к wi-fi (мобильная сеть, РФ): не работает ни тот, ни другой адрес.
1.в Если быть подключённым к w-if и включить VPN (шведский, DNS 1.1.1.1): доступ по IP перестаёт работать, доступ по имени всё так же не работает.

  1. Добавляю в opnsense port forwarding для WAN с IP адресов cloudflare на порты 80,443 роутера (пока что тестирую без traefik) и правило файрволла для WAN, где разрешаю входящие с IP Cloudflare на 80,443 порты.

2.а Без изменений
2.б Без изменений
2.в При подключении VPN доступ по имени начинает работать, доступ по IP не работает.

Иными словами, у меня получается достучаться до домашней сети по имени только если включен VPN (который к этой сети никакого отношения не имеет), но при включённом VPN никогда не работает доступ по IP. Поведение одинаковое при включении VPN находясь как внутри wifi, так и с мобильной сети (с телефона точно такое же поведение, как в “2.в”).

Повайдер блокирует 53, 68, 135, 137, 138, 139 и 445 порты, так что с 80 и 443 вроде норм всё должно быть

Как сделать, чтобы всё всегда работало без VPN? :slight_smile:

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

  1. Я бы проверил не блочит ли ваш провайдер адреса cloudflare. У меня мой провайдер иногда так балуется - периодически при проверки доступности ресурсов дома провайдер присылает адрес-заглушку - в следствие чего адрес резолвится не правильно.

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

Я бы начал с простого:

  1. Провод провайдера в ваш wifi роутер
  2. В cloudflare настроил доменное имя направленное на ваш белый ип (можно как с проксированием, так и без него)
  3. Потом на роутере разрешил бы форвардинг 80, 443 порта на самого себя.
  4. Если все работает и все доступно то уже можно настраивать правила в роутере

Не, в этом и смысл проксирования (не только и не столько сокрытие IP). Клиент открывает соединение с сервером Cloudflare, а уже сам сервер Cloudflare открывает соединение с домашним сервером. Домашний сервер видит IP cloudflare, а реальный IP клиента передаётся в заголовках. Поэтому и сертификаты меняются.

Да, спасибо. Это причина почему доступ по IP не работал. При разрешении входящих со всех адресов теперь можно зайти по IP (но это побочный эффект, в планах у меня, как раз, запретить любой доступ по IP и оставить только через cloudflare).

Так же, при разрешении входящих с любых адресов заработал доступ по имени без VPN при нахождении внутри wi-fi (то есть, блокировки со стороны провайдера нет, получается, у меня никаких split dns не настроено ещё)

Доступ с мобилки пока работает только через VPN.

UPD:
Проверил несколько VPN на телефоне: Грузия, Швеция, и, внезапно, Россия (два сервера из разных подсетей). Через все VPN доступ есть. Без VPN (Мегафон) доступа по имени нет.

В общем, дабы закрыть тему: это проблема мегафона. Со всех остальных провайдеров, до которых смог добраться, доступ работает.