こんにちは、Phone>VPS>NordVPN のようにNordVPNを使った二重VPNをやりたいです。
すでに接続は完了しています。
自宅のVPS>PhoneVPS>NASの構成です。
現在はVPS経由でNASに接続できますが、VPSのグローバルIPの代わりにNordVPN経由でインターネットに接続したいです。
今のVPNネットワークはDocker-composeで作成しました。
version: "3.8"
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
ports:
# adguardhomeが必要とするポートを開ける
networks:
proxy:
wg-net:
ipv4_address: 10.2.0.100
environment:
- PUID=xxxx
- PGID=xxxx
labels:
# adguardダッシュボード
- "traefik.enable=true"
- "traefik.http.routers.adguard.rule=Host(`xxx.xxxx.xxx`)"
- "traefik.http.routers.adguard.entrypoints=websecure"
- "traefik.http.routers.adguard.tls=true"
- "traefik.http.routers.adguard.tls.certresolver=myresolver"
- "traefik.http.services.adguard.loadbalancer.server.port=80"
# Watchtowerのアップデート
- "com.centurylinklabs.watchtower.enable=true"
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
wg-easy:
image: weejewel/wg-easy
container_name: wg-easy
restart: unless-stopped
volumes:
- .:/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
# ?? 必須:
# ホストのパブリックアドレスに変更
- WG_HOST=xxx.xxxx.xxx
# オプション:
- PASSWORD=xxxxxxxxxx
- WG_PORT=${EXTERNAL_WG_PORT}
- WG_DEFAULT_DNS= 10.2.0.100
labels:
# Watchtowerのアップデート
- "com.centurylinklabs.watchtower.enable=true"
ports:
- "${EXTERNAL_WG_PORT}:51820/udp"
- "51821:51821/tcp"
dns:
- 10.2.0.100 # AGHを指す
networks:
wg-net:
ipv4_address: 10.2.0.3
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
networks:
wg-net:
ipam:
config:
- subnet: 10.2.0.0/24
proxy:
external: true
次にNordVPNのコンテナを追加します。
version: "3.8"
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
ports:
# 前述の通り
networks:
proxy:
wg-net:
ipv4_address: 10.2.0.100
environment:
- PUID=xxxx
- PGID=xxxx
labels:
# adguardダッシュボード
- "traefik.enable=true"
- "traefik.http.routers.adguard.rule=Host(`xxxx.xxxx.xxx`)"
- "traefik.http.routers.adguard.entrypoints=websecure"
- "traefik.http.routers.adguard.tls=true"
- "traefik.http.routers.adguard.tls.certresolver=myresolver"
- "traefik.http.services.adguard.loadbalancer.server.port=80"
# Watchtowerのアップデート
- "com.centurylinklabs.watchtower.enable=true"
volumes:
- ./workdir:/opt/adguardhome/work
- ./confdir:/opt/adguardhome/conf
nordvpn:
image: ghcr.io/bubuntux/nordvpn
container_name: nordvpn
cap_add:
- NET_ADMIN # 必須
- SYS_MODULE
ports:
- ${EXTERNAL_WG_PORT}:51820/udp
- 51821:51821/tcp
environment: # https://github.com/bubuntux/nordvpnの環境変数を確認
- USER=${NORDUSR} # 必須
- PASS=${NORDPW} # 必須
- CONNECT=${COUNTRY}
- TECHNOLOGY=NordLynx
- NETWORK=10.2.0.0/24 # ローカルネットワーク内アクセス用
- PORTS=${EXTERNAL_WG_PORT};${EXTERNAL_SOCKS5_PORT};51820;51821
- FIREWALL=Disable
- KILLSWITCH=Disable
- CYBER_SEC=Disable
- DNS=${NV_DNS}
sysctls:
- net.ipv4.conf.eth0.rp_filter=2
devices:
- /dev/net/tun
restart: unless-stopped
networks:
wg-net:
ipv4_address: 10.2.0.2
wg-easy:
image: weejewel/wg-easy
container_name: wg-easy
restart: unless-stopped
volumes:
- .:/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
# ?? 必須:
# ホストのパブリックアドレスに変更
- WG_HOST=xxx.xxxx.xxxx
# オプション:
- PASSWORD=1DifW6C4yeLxN1gi
- WG_PORT=${EXTERNAL_WG_PORT}
- WG_DEFAULT_DNS= 10.2.0.100
- WG_POST_UP=ip rule add from 10.2.0.2 table 128; ip route add table 128 to 10.2.0.0/24 dev eth0; ip route add table 128 default via 10.2.0.1; 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 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT;
- WG_POST_DOWN=ip rule del from 10.2.0.2 table 128; ip route del table 128 to 10.2.0.0/24 dev eth0; ip route del table 128 default via 10.2.0.1
labels:
# Watchtowerのアップデート
- "com.centurylinklabs.watchtower.enable=true"
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1
network_mode: service:nordvpn
depends_on:
- nordvpn
networks:
wg-net:
ipam:
config:
- subnet: 10.2.0.0/24
proxy:
external: true
しかしほとんど動作しません。(なぜ2回動作したのか分かりませんが、docker compose down && docker compose up -d にすると接続が切れます。)NASからVPSやPhoneへのpingもできません。おそらくWG_POST_UP
やWG_POST_DOWN
のパラメータを変更する必要があるかもしれませんが、確信はありません。どうすればいいですか?
追記:NordVPN経由でインターネットに接続できることは確認しました。- NETWORK=10.2.0.0/24
を- NETWORK=自宅のグローバルIPアドレス
に変更すると接続できるようになったのです。なぜ動くのか理解できません。携帯ネットワークからも接続できるし、家のグローバルIPが変わったときのために心配です。