Контейнер VPN АнтиЗапрета для установки на собственный сервер

Подскажите пожалуйста, может у кого идеи есть.
Антизапрет в Ubuntu 20/22 через lxc/snap.
По TCP всё работает чётко.
По UDP клиент (в моем случае либо опенвпн коннект для андроида, либо кинетик) подключается, трафик в тоннель уходит, но обратно не приходит, то есть “односторонний линк” получается.
ufw отключен, iptables/firewalld тоже.

Имхо, трафик не форвардится, но где копать в lxc/ubuntu в упор не понимаю.

UP: разобрался, всё таки косяк в конфиге с моей стороны, пытался использовать конфигурацию от tcp, когда надо было udp с правками (не удалил cipher, не добавил comp-lzo)

не могу понять как изменить dns сервер? в resolv поменял на 1.1.1.1 но почему-то выдает что у меня установлен dns как ip адрес сервера (на dnsleak проверке)

ubuntu 20.04

на сервере:
nslookup ya.ru
Server: 1.1.1.1
Address: 1.1.1.1#53

из контейнера antizapret:
root@antizapret-vpn:~# nslookup ya.ru
Server: 8.8.8.8
Address: 8.8.8.8#53

с сервера

resolvectl status
Global
       LLMNR setting: no
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
Fallback DNS Servers: 1.0.0.1
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa
                      19.172.in-addr.arpa
                      20.172.in-addr.arpa
                      21.172.in-addr.arpa
                      22.172.in-addr.arpa
                      23.172.in-addr.arpa
                      24.172.in-addr.arpa
                      25.172.in-addr.arpa
                      26.172.in-addr.arpa
                      27.172.in-addr.arpa
                      28.172.in-addr.arpa
                      29.172.in-addr.arpa
                      30.172.in-addr.arpa
                      31.172.in-addr.arpa
                      corp
                      d.f.ip6.arpa
                      home
                      internal
                      intranet
                      lan
                      local
                      private
                      test

Link 7 (vethb042b929)
      Current Scopes: none
DefaultRoute setting: no
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 3 (lxdbr0)
      Current Scopes: none
DefaultRoute setting: no
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no

В контейнере установлен рекурсивный кеширующий dns-резолвер knot-resolver, самостоятельно и автономно занимающийся разрешением имён. Его настройки находятся в /etc/knot-resolver/kresd.conf, а то, что вы ищете, описано в сообщении Контейнер VPN АнтиЗапрета для установки на собственный сервер - #40 by ValdikSS.

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

спасибо прописал

policy.add(policy.all(policy.FORWARD({‘1.1.1.1’})))

Подскажите, как разрешить доступ клиентов подключённых к контейнеру друг к другу? И если возможно, назначить им статические ip.

А есть в контейнере скрипт, для создания новых конфигов опенвпн, чтобы не юзать один и тот же? (Хочу иметь связанность между клиентами при помощи опенвпн с контейнера)

Дико извиняюсь что не по теме, в прошлом году вы писали пост о блокировке в Туркмении, и давали ссылку на CLOACK с помощью которой можно обходить эти блокировки, т.к от сферы IT я максимально далек, то я просто умоляю вас помочь мне разобраться с ней(

Помогите разобраться - в lxc контейнере на ubuntu 20.4 нет интернета (ping 8.8.8.8 не проходит) до тех пор, пока на основной виртуалке не ввести команду
iptables -P FORWARD ACCEPT

Мало понимаю в правилах iptables.
Но я так понимаю - это не совсем хорошая практика. Как правильно включить интернет на lxc?

Спасибо.

Вывод iptables -L -n -v

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                        

Chain FORWARD (policy DROP 174 packets, 10508 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                        
  174 10508 DOCKER-USER  all  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                        
  174 10508 DOCKER-ISOLATION-STAGE-1  all  --  *      *       0.0.0.0/0                                                                                                   0.0.0.0/0
    0     0 ACCEPT     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0                                                                                                   ctstate RELATED,ESTABLISHED
    0     0 DOCKER     all  --  *      docker0  0.0.0.0/0            0.0.0.0/0                                                                                         
    0     0 ACCEPT     all  --  docker0 !docker0  0.0.0.0/0            0.0.0.0/0                                                                                       
    0     0 ACCEPT     all  --  docker0 docker0  0.0.0.0/0            0.0.0.0/0                                                                                        

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                        

Chain DOCKER (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                        

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                        
    0     0 DOCKER-ISOLATION-STAGE-2  all  --  docker0 !docker0  0.0.0.0/0                                                                                                   0.0.0.0/0
  174 10508 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                          

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                        
    0     0 DROP       all  --  *      docker0  0.0.0.0/0            0.0.0.0/0                                                                                         
    0     0 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0                                                                                          

Chain DOCKER-USER (1 references)
 pkts bytes target     prot opt in     out     source               destination                                                                                        
  174 10508 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

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

Проверьте правила NAT: iptables -t nat -vnL. Если там есть хоть какое-то упоминание LXD, то необходимо добавить разрешающее правило в таблицу filter FORWARD.
Если же там нет упоминаний LXD, то, вероятно, у вас используется комбинация iptables-nft и iptables-legacy, либо же nft + iptables, что гарантированно вызовет проблемы с приоритетами правил. В таком случае нужно оставить что-то одно.

Спасибо!
В итоге перешел на Debian 11 и проблема ушла сама. На убунту так и не удалось достичь стабильной работы.

Также на обоих дистрибутивах (Ubuntu 20.04 и Debian 11) возникает ошибка:

lxc image import https://antizapret.prostovpn.org/container-images/az-vpn --alias antizapret-vpn-img
Error: Head “https://antizapret.prostovpn.org/container-images/az-vpn”: remote error: tls: protocol version not supported

Как тут писали выше - решается отключением проверки сертификатов.

systemctl edit snap.lxd.daemon

Затем сразу ПОД строчкой (Важно!! Не в конец файла. Если добавить в конец файла, то изменения не сохранятся)
### Anything between here and the comment below will become the new contents of the file

добавляем это:
[Service]
Environment=LXD_INSECURE_TLS=true

Рестартим демона
systemctl reload snap.lxd.daemon

Я это к тому, что проблема действительно есть и как ее поправить без отключения проверки сертификата - не понятно.

A post was split to a new topic: Списки заблокированных IP-адресов для роутера

По поводу настройки knot на вышестоящие dns серверы.
Выяснилось, что публичные dns серверы google и cloudflare подменяют IP адреса сервиса tmdb на 127.0.0.1, если запрос приходит из РФ.
DoT и DoH - не помогают, это именно они подменяют, а не промежуточный провайдер с оборудованием от роскомпозора.

Также выяснилось, что публичные серверы от Quad9 такой фигнёй не страдают.
Так что, кому актуально, в конфиг knot нужно дописать вот это и всё будет хорошо:

policy.add(
   policy.all(
      policy.TLS_FORWARD({{'9.9.9.9@853', hostname='dns.quad9.net'}}),
      policy.TLS_FORWARD({{'149.112.112.112@853', hostname='dns.quad9.net'}})
   )
)

DNS-резолверы Google и Cloudflare ничего не подменяют в ответах, это NS www.themoviedb.org отдаёт 127.0.0.1 для российских IP-адресов.

$ dig +short +subnet=155.70.44.0/24 www.themoviedb.org @ns-1186.awsdns-20.org # US Centurylink subnet
65.8.243.116
65.8.243.55
65.8.243.89
65.8.243.8

$ dig +short +subnet=87.226.162.0/24 www.themoviedb.org @ns-1186.awsdns-20.org # Russia Rostelecom subnet
127.0.0.1

Да, я сегодня тоже к такому же выводу пришёл.
пробовал dig с разных подсетей, с разных стран и удивлялся.
А гугл с клаудфларом - у них же резолверы тоже в РФ имеются - по CDN их и цепляет.

В итоге развернул 2 персональных резолвера для себя на 2-х зарубежных vps, т.к. не нравится мне такой подход…
Quad9 тоже рано или поздно могут разместить сервер в РФ, и они отвалятся получается…

Настроил контейнер на своей vps, подключился роутером, все отлично. Вопрос, как добавить сайт который не заблочен в РФ,соответственно его нет в списке заблокированных, но владелец сайта блочит доступ с IP в РФ ?
зашел в контейнер добавил домен intel.com в файл config\include-hosts-custom.txt
запустил doall.sh
Не помогло, судя по скриптам адрес добавленного домена сверяется со списком заблокированных доменов?

Ваши действия правильны. Вероятно, вы не дождались выполнения doall.sh.

@ValdikSS и знатоки.

Хочу обсудить такую идею.
Вот, у нас получается есть два возможных вида подключения - tcp & udp.
tcp мы не трогаем, оставляем его “под мобилки с 3G”.

Что если, мы udp будем использовать под проводной интернет?

Выдвигаю на обсуждение следующие твики antizapret.conf

  1. Убираем comp-lzo
  2. txqueuelen поднимаем с 250 до 2000
  3. Добавляем
    fast-io
    sndbuf 512000
    rcvbuf 512000
    push “sndbuf 512000”
    push “rcvbuf 512000”
    ncp-disable

на клиенте так же убираем comp-lzo.

Как в цифрах измерить изменения хз, субьективно стало быстрее.

Но, может я чушь порю, поэтому и предлагаю обсудить.