TGViewer
DevOps Brain 🧠 DevOps Brain 🧠 @devopsbrain · 1.26K subscribers
Post #216 1.1K
🔖 Приватная сеть в ZeroTier за пару минут

Ребята, решил я недавно поиграться с Dokploy в рамках экспериментов n8n и AI-ассистента. Ну и пока настраивал, заодно решил показать вам ZeroTier.

ZeroTier – это сервис, который позволяет объединить устройства через интернет так, будто они находятся в одной локальной сети.

На самом деле очень крутая штука, тем более что в рамках free-тарифа можно добавить до 10 устройств. Таким образом у нас будет крутая overlay-сеть и мы можем изи-пизи объединить все наши VPS, ноутбуки и телефоны. И самое главное, что будет не важно, что они сидят за NAT. А вся настройка отнимет у вас минут 10:

1. Регаемся на сайте https://www.zerotier.com и прыгаем в личный кабинет.

2. Там создаем новую сеть. Cохраняем себе Network ID. Он понадобиться чтобы к сети присоединиться. У меня это 3b19b3a716137783.

3. Идем на страницу загрузки клиентов https://www.zerotier.com/download. Копируем команду установки и ставим на VPS сервер:

curl -s https://install.zerotier.com | sudo bash


4. Теперь подключимся сразу к новой сети pets. После выполнения получите 200 join OK.


sudo zerotier-cli join 3b19b3a716137783


5. Переходим в админку в нашу сеть pets и авторизуем клиента.

6. Теперь я добавлю локальную машинку. Качаю клиента под свою ОС чтобы оказаться в приватной сети с VPS. Там ввожу Network ID для подключения и делаю апрув в админке.

7. Zerotire нам выдаст рандомный ойпешник в приватной сети. Давайте слегка это исправим. Нырнем в админке в устройство 8b26a132b7 (это VPS) и пропишем в Managed IPs красивый ойпешник 10.75.142.1.

На этом базовая настройка завершена. Устройства будут видеть друг друга в рамках приватной сети 10.75.142.0/24.

Но для большей безопасности и удобства (иначе зачем это всё?) надо настроить firewall. У меня стоит Dokploy, поэтому я хочу сделать открытыми порты 80 и 443. А всё остальное будет открыто только в сети ZeroTier. (ens3 - это внешний интерфейс на VPS, zt+ - это интерфейсы ZeroTier)

8. Подключимся к VPS 10.75.142.1 – ЭТО ВАЖНО и забекапим текущие правила на всякий.

iptables-save > /root/iptables.backup.$(date +%F_%H%M).rules


9. Закрываемся от мира. Обратите внимание – после применения этих правил доступа к ssh по внешнему интерфейсу не будет. Но так и задумано!


# Сначала базовые allow (в начало)
iptables -I INPUT 1 -i zt+ -j ACCEPT
iptables -I INPUT 2 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I INPUT 3 -i lo -j ACCEPT

# Публично только 80/443 через ens3
iptables -I INPUT 4 -i ens3 -p tcp --dport 80 -j ACCEPT
iptables -I INPUT 5 -i ens3 -p tcp --dport 443 -j ACCEPT

# Всё остальное входящее — DROP
iptables -P INPUT DROP

iptables -F DOCKER-USER

# Разрешаем ответы
iptables -A DOCKER-USER -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# ZeroTier полный доступ
iptables -A DOCKER-USER -i zt+ -j ACCEPT
iptables -A DOCKER-USER -o zt+ -j ACCEPT

# Контейнерам можно инициировать соединения наружу
iptables -A DOCKER-USER -i docker0 -j ACCEPT

# Снаружи (ens3) только 80/443
iptables -A DOCKER-USER -i ens3 -p tcp --dport 80 -j ACCEPT
iptables -A DOCKER-USER -i ens3 -p tcp --dport 443 -j ACCEPT

# Остальное снаружи в docker — DROP
iptables -A DOCKER-USER -i ens3 -j DROP

iptables -A DOCKER-USER -j RETURN


Установим iptables-persistent и сохраним правила, чтобы не отрыгнуло после ребута


apt-get update && apt-get install -y iptables-persistent && netfilter-persistent save


В итоге мы получаем приватную сеть с нашими девайсами, которые видят друг друга напрямую. А для внешнего интерфейса открыт только 80 и 443 – в моем случае это Traefik в docker. И теперь на VPS если я сделаю гадость вот так:


docker run -d --name my-redis -p 6379:6379 redis:latest


То порт 6379 будет доступен только в приватной сети:


$ nmap 138.124.75.165 -p6379 -PN
PORT STATE SERVICE
6379/tcp filtered redis

$ nmap 10.75.142.1 -p6379
PORT STATE SERVICE
6379/tcp open redis


ZeroTier подходит и для более сложных кейсов. Но это уже другая история...

А статью со скриншотами можно почитать тут.

---
Telegram | Github | YouTube | Twitter
  • ❤‍🔥 8
  • 🔥 1
More from @devopsbrain
  1. Sep 28, 2026Ребята, хочу рассказать про конференцию, которую я бы сам с удовольствием посетил. 3 октяб…
  2. Sep 19, 2026Только что релизнул net-peek v0.1.8. Этот маленький, но классный 🚳 на Go я сделал, когда…
  3. Sep 17, 2026🔖 AI больше не стыдно? Обратили внимание, как быстро мы прошли фазу от “фууу, это нейросл…
  4. Sep 12, 2026Ленту моего твиттера последние 2 дня разрывает от двух вещей - складного айфона и мухи. И…
  5. Sep 8, 2026🔖 Kafka: Partitions и Consumer Groups — Часть 2 В первой части разобрались, зачем Kafka в…
  6. Sep 3, 2026🔖 Kafka: архитектура и базовые принципы — Часть 1 Ребята, я решил написать для вас серию…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →