mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-06-28 13:29:28 +00:00
92 lines
2.6 KiB
YAML
92 lines
2.6 KiB
YAML
# NAT pcp scenario — see README.md. Run via testpcp.nim.
|
|
name: nat-pcp
|
|
|
|
# Topology addresses, named for their role (defined once, referenced below).
|
|
x-addresses:
|
|
# fake public internet; a routable range so B looks public to A
|
|
wan_subnet: &wan_subnet 7.7.7.0/24
|
|
# private network behind the NAT
|
|
lan_subnet: &lan_subnet 10.99.0.0/24
|
|
# A: public bootstrap, relay + autonat server
|
|
bootstrap_ip: &bootstrap_ip 7.7.7.10
|
|
# router's public face
|
|
router_wan_ip: &router_wan_ip 7.7.7.2
|
|
# router's private face = B's gateway, and the PCP/NAT-PMP control point
|
|
router_lan_ip: &router_lan_ip 10.99.0.2
|
|
# B, behind the NAT
|
|
node_ip: &node_ip 10.99.0.10
|
|
|
|
networks:
|
|
wan:
|
|
# Keep the fake public range private, not exposed to the host
|
|
internal: true
|
|
ipam:
|
|
config:
|
|
- subnet: *wan_subnet
|
|
lan:
|
|
ipam:
|
|
config:
|
|
- subnet: *lan_subnet
|
|
|
|
services:
|
|
router:
|
|
image: localhost/storage-nat
|
|
cap_add: [NET_ADMIN]
|
|
sysctls:
|
|
net.ipv4.ip_forward: 1
|
|
networks:
|
|
wan:
|
|
ipv4_address: *router_wan_ip
|
|
lan:
|
|
ipv4_address: *router_lan_ip
|
|
environment:
|
|
ROUTER_WAN_IP: *router_wan_ip
|
|
ROUTER_LAN_IP: *router_lan_ip
|
|
LAN_SUBNET: *lan_subnet
|
|
# scripts mounted, not baked, so editing them needs no image rebuild
|
|
volumes:
|
|
- ../router-common.sh:/scripts/router-common.sh:ro,z
|
|
- ./router-entrypoint.sh:/scripts/router-entrypoint.sh:ro,z
|
|
entrypoint: ["bash", "/scripts/router-entrypoint.sh"]
|
|
|
|
bootstrap:
|
|
image: localhost/storage-nat
|
|
networks:
|
|
wan:
|
|
ipv4_address: *bootstrap_ip
|
|
entrypoint: ["/app/build/storage"]
|
|
command:
|
|
- --listen-ip=0.0.0.0
|
|
- --api-bindaddr=0.0.0.0
|
|
- --listen-port=8070
|
|
- --disc-port=8090
|
|
- --api-port=8080
|
|
# bootstrap_ip (anchors can't go inside a string)
|
|
- --nat=extip:7.7.7.10
|
|
- --relay-server
|
|
- --autonat-server
|
|
- --no-bootstrap-node
|
|
- --data-dir=/data
|
|
- --log-level=DEBUG
|
|
|
|
node:
|
|
image: localhost/storage-nat
|
|
cap_add: [NET_ADMIN]
|
|
depends_on: [router, bootstrap]
|
|
networks:
|
|
lan:
|
|
ipv4_address: *node_ip
|
|
# B's API, published so the test can poll it
|
|
ports:
|
|
- "127.0.0.1:18083:8080"
|
|
environment:
|
|
ROUTER_LAN_IP: *router_lan_ip
|
|
# B fetches A's SPR from this API at startup to join the network (bootstrap_ip)
|
|
BOOTSTRAP_API: http://7.7.7.10:8080
|
|
EXTRA_STORAGE_ARGS: >-
|
|
--nat-port-mapping-discover-timeout=5000
|
|
--nat-port-mapping-timeout=5000
|
|
volumes:
|
|
- ../node-entrypoint.sh:/scripts/node-entrypoint.sh:ro,z
|
|
entrypoint: ["bash", "/scripts/node-entrypoint.sh"]
|