LINUX.ORG.RU
ФорумAdmin

Настройка работы контейнера (zabbix) внутри сети VPN (wireguard/wg-easy)

 , , , ,


1

1

Всем привет Прошу помощи, подсказки в какую сторону смотреть далее?

На виртуалке установлена убунту на этой убунте поднят впн и он работает (wireguard/wg-easy) могу на стандартный порт (51821 порт веб интерфейса) зайти извне , подключиться к впн, и трафик даже идёт ничего не блокируется, тоесть я уверен что впн работает. Так же на этой же виртуальной машине пднят забикс (бд + забикс сервер + веб сервер забикса nginx), веб интерфейс забикса так же доступен свободно извне (8080 порт веб интерфейса), я могу так же авторизоваться.

Вопрос , как сделать так, чтобы внутри впн сети мог обратиться к серверу забикс по адресу из подсети wireguard 10.8.0.1 ?

Пытался настроить bridge между контейнерами , а так же запускал образы заббикс сервера и ВПН сервера через единый докер компоус файл, не сработало , заббикс внутри впн сети не виден, тоесть связи между этими контейнерами как бы есть, то только на уровне самого докера 172.20.0.1, 172.20.06 и тд. А вот сеть впн 10.8.0.1 для заббикс сервера недоступна.

Так же пробовал режимы network_mode:service и режим сетевого драйвера host , контейнеры zabbix/web/posgres перестают видеть друг друга.

Сейчас есть две идеи это подправить файл конфигурации заббикс сервера, присвоить SourceIP и ListenIP адрес 10.8.0.1 И вторая идея это запустить контейне впн сервера в режиме сети host либо macvlan, либо ipvlan , чтобы интерфейс 10.8.0.1 распознавался заббиксос средствами убунты.

Но как сделать правильно, я пока не знаю. Заранее спасибо за советы.

Конфиги которыми я запускаю контейнеры:

========================================================= Конфиг zabbix server + posgres + nginx

version: ‘3.7’

networks: zabbix-network: external: true

volumes: zabbix-postgres: zabbix-postgres-backup: zabbix-database-backups:

services: postgres: image: postgres:15 volumes: - zabbix-postgres:/var/lib/postgresql/data environment: POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 networks: - zabbix-network healthcheck: test: [ «CMD», «pg_isready», «-q», «-d», «zabbixdb», «-U», «zabbixdbuser» ] interval: 10s timeout: 5s retries: 3 start_period: 60s restart: unless-stopped

zabbix-server: image: zabbix/zabbix-server-pgsql:6.4.6-ubuntu environment: DB_SERVER_HOST: postgres DB_SERVER_PORT: 5432 POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 ZBX_CACHESIZE: 1G networks: - zabbix-network healthcheck: test: grep -qr «zabbix_server» /proc/*/status || exit 1 interval: 10s timeout: 5s retries: 3 start_period: 90s restart: unless-stopped depends_on: postgres: condition: service_healthy

zabbix-dashboard: image: zabbix/zabbix-web-nginx-pgsql:6.4.6-ubuntu environment: DB_SERVER_HOST: postgres DB_SERVER_PORT: 5432 POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 ZBX_SERVER_HOST: zabbix-server PHP_TZ: America/New_York networks: - zabbix-network ports: - «8080:8080» healthcheck: test: [«CMD», «curl», «-f», «http://localhost:8080/»] interval: 10s timeout: 5s retries: 3 start_period: 90s restart: unless-stopped depends_on: postgres: condition: service_healthy zabbix-server: condition: service_healthy

zabbix-agent: image: zabbix/zabbix-agent2:6.4.6-ubuntu environment: ZBX_HOSTNAME: Zabbix server ZBX_SERVER_HOST: zabbix-server networks: - zabbix-network restart: unless-stopped depends_on: - postgres - zabbix-server

backups: image: postgres:15 command: >- sh -c ‘sleep 300m && while true; do pg_dump -h postgres -p 5432 -d zabbixdb -U zabbixdbuser | gzip > /srv/zabbix-postgres/backups/zabbix-postgres-backup-$(date «+%Y-%m-%d_%H-%M»).gz && find /srv/zabbix-postgres/backups -type f -mtime +7 | xargs rm -f && sleep 24h; done’ volumes: - zabbix-postgres-backup:/var/lib/postgresql/data - zabbix-database-backups:/srv/zabbix-postgres/backups environment: ZABBIX_DB_NAME: zabbixdb ZABBIX_DB_USER: zabbixdbuser PGPASSWORD: 123456789 networks: - zabbix-network restart: unless-stopped depends_on: postgres: condition: service_healthy

========================================================= Конфигурация vpn сервера wireguard/wg-easy

version: ‘3.8’

services: wg-easy: container_name: wg-easy image: ghcr.io/wg-easy/wg-easy environment: - WG_HOST=192.168.1.144 - PASSWORD_HASH=$$2a$$12$$12WVheYAoTLK2eHzQOhTV.NL2/NOwg8coQW2jbBrT4mZQmR5Y2aTm volumes: - ~/.wg-easy:/etc/wireguard ports: - «51820:51820/udp» - «51821:51821/tcp» cap_add: - NET_ADMIN - SYS_MODULE sysctls: net.ipv4.conf.all.src_valid_mark: 1 net.ipv4.ip_forward: 1 restart: unless-stopped

========================================================= zabbix агент

version: ‘3’ services: zabbix-agent: image: zabbix/zabbix-agent2:6.4.6-ubuntu environment: ZBX_HOSTNAME: zabbix-server ZBX_SERVER_HOST: 10.8.0.1 networks: - zabbix-network restart: unless-stopped

========================================================= клиент wireguard

version: ‘3’ services: wireguard: image: procustodibus/wireguard cap_add: - NET_ADMIN privileged: true ports: - 51820:51820/udp volumes: - /home/user/Downloads/wireguard_client/config:/etc/wireguard

=========================================================

Abraziv777
() автор топика

Будет куда проще если ты вынесешь wg на хост систему.

Если по сложному пути, то могу только направления подсказать. Объеденить 2 контейнера через bridge и сделать внутреннюю ip связанность ты уже смог, дальше 2 пути:
1. на vpn клиенте делать маршрут до внутренней сети (172.20.0.0/24 по всей видимости) через wg интерфейс. Но тогда, если в контейнере с zabbix несколько интерфейсов надо обратную маршрутизацию настраивать.
2. в контейнере с wg делать dnat до адреса zabbix и заодно snat чтобы zabbix не парился поиском маршрута до внешней сети.

P.S. Если кто-то знает как забриджевать серверный wg интерфейс и eth то кончено наилучший вараинт, но я про такое не слышал.

Kolins ★★★★★
()

Первое что нужно сказать , что если запустить wireguard/wg-easy в одном компоус файле с заббиксом, то организовывается бридж (по умолчанию). И далее находясь в сети впн (подсесть 10.8.0.0) мы можем обратиться к серверу заббикс по адресу контейнера (подсеть 172.20.0.0). Тоесть констатируем факт что связь изначально в какойто момент была.

Далее чтобы можно по ссш попасть именно на хост , то в докер контейнере впн сервера мы пропысываем параметр network_mode: host , параметр будет конфилктовать с дефотными рекомендоваными настройками # sysctls: # net.ipv4.conf.all.src_valid_mark: 1 # net.ipv4.ip_forward: 1 поэтому я их убрал.

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

Итоговый конфиг скину ниже. За форматирование текста сразу сори, так форматирует текст именно форум.

Abraziv777
() автор топика
Ответ на: комментарий от Abraziv777

version: ‘3.7’

networks: zabbix-network: external: true

volumes: zabbix-postgres: zabbix-postgres-backup: zabbix-database-backups:

services: wg-easy: container_name: wg-easy image: ghcr.io/wg-easy/wg-easy environment: - WG_POST_UP=iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp –dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT - WG_POST_DOWN=iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -D INPUT -p udp -m udp –dport 51820 -j ACCEPT; iptables -D FORWARD -i wg0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT - WG_HOST=192.168.1.144 - PASSWORD_HASH=$$2a$$12$$12WVheYAoTLK5eHzQOhTV.NL3/NOwg8coQW4jbBrT4mZQmR5Y2aTm volumes: - ~/.wg-easy:/etc/wireguard ports: - «51820:51820/udp» - «51821:51821/tcp» cap_add: - NET_ADMIN - SYS_MODULE # sysctls: # net.ipv4.conf.all.src_valid_mark: 1 # net.ipv4.ip_forward: 1 restart: unless-stopped network_mode: host

postgres: image: postgres:15 volumes: - zabbix-postgres:/var/lib/postgresql/data environment: POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 networks: - zabbix-network healthcheck: test: [ «CMD», «pg_isready», «-q», «-d», «zabbixdb», «-U», «zabbixdbuser» ] interval: 10s timeout: 5s retries: 3 start_period: 60s restart: unless-stopped

zabbix-server: image: zabbix/zabbix-server-pgsql:6.4.6-ubuntu environment: DB_SERVER_HOST: postgres DB_SERVER_PORT: 5432 POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 ZBX_CACHESIZE: 1G networks: - zabbix-network healthcheck: test: grep -qr «zabbix_server» /proc/*/status || exit 1 interval: 10s timeout: 5s retries: 3 start_period: 90s restart: unless-stopped depends_on: postgres: condition: service_healthy

zabbix-dashboard: image: zabbix/zabbix-web-nginx-pgsql:6.4.6-ubuntu environment: DB_SERVER_HOST: postgres DB_SERVER_PORT: 5432 POSTGRES_DB: zabbixdb POSTGRES_USER: zabbixdbuser POSTGRES_PASSWORD: 123456789 ZBX_SERVER_HOST: zabbix-server PHP_TZ: America/New_York networks: - zabbix-network ports: - «8080:8080» healthcheck: test: [«CMD», «curl», «-f», «http://localhost:8080/»] interval: 10s timeout: 5s retries: 3 start_period: 90s restart: unless-stopped depends_on: postgres: condition: service_healthy zabbix-server: condition: service_healthy

zabbix-agent: image: zabbix/zabbix-agent2:6.4.6-ubuntu environment: ZBX_HOSTNAME: Zabbix server ZBX_SERVER_HOST: zabbix-server networks: - zabbix-network restart: unless-stopped depends_on: - postgres - zabbix-server

backups: image: postgres:15 command: >- sh -c ‘sleep 300m && while true; do pg_dump -h postgres -p 5432 -d zabbixdb -U zabbixdbuser | gzip > /srv/zabbix-postgres/backups/zabbix-postgres-backup-$(date «+%Y-%m-%d_%H-%M»).gz && find /srv/zabbix-postgres/backups -type f -mtime +7 | xargs rm -f && sleep 24h; done’ volumes: - zabbix-postgres-backup:/var/lib/postgresql/data - zabbix-database-backups:/srv/zabbix-postgres/backups environment: ZABBIX_DB_NAME: zabbixdb ZABBIX_DB_USER: zabbixdbuser PGPASSWORD: 123456789 networks: - zabbix-network restart: unless-stopped depends_on: postgres: condition: service_healthy

Abraziv777
() автор топика

Тебя самого каша в выкладываемых тобой конфигах не смущает?

Вот почитай: https://www.linux.org.ru/help/markdown.md

Читай про помещение кода.

Почему ты не хочешь вынести wg на хост систему? Это решит все твои проблемы.

Да и заббикс сервер можно точно так же поставить обычным способом.

Докер это, конечно хорошо, но зачем?

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.