doc/Network: Add network diagram
authornicoo <nicoo@realraum.at>
Tue, 3 Jul 2018 13:36:13 +0000 (15:36 +0200)
committernicoo <nicoo@realraum.at>
Sat, 7 Jul 2018 18:45:40 +0000 (20:45 +0200)
doc/Makefile
doc/Network.mdwn
doc/Network/.gitignore [new file with mode: 0644]
doc/Network/Makefile [new file with mode: 0644]
doc/Network/overview.dot [new file with mode: 0644]

index e91e3c6..4927b59 100644 (file)
@@ -1,6 +1,6 @@
-.PHONY: default clean serve
+.PHONY: default clean serve diagram
 
-default: favicon.ico
+default: diagram favicon.ico
        ikiwiki --refresh --setup ikiwiki.setup
 
 clean:
@@ -9,6 +9,9 @@ clean:
 serve: default
        @cd dest; python -m SimpleHTTPServer
 
+diagram:
+       $(MAKE) -C Network/
+
 favicon.ico:
        convert assets/logo.png -define icon:auto-resize=64,48,32,16 \
                                -fill 'rgb(118,20,7)' -opaque white  \
index 689766c..7f9634b 100644 (file)
@@ -26,6 +26,16 @@ We use a number of conventions to make things more consistent:
 - The gateway for a network is on the last IP for the subnet.
 
 
+### Routing and firewall rules
+
+This network diagram represents networks, and the connection flows between them:
+an arrow from A to B means that a connection can be opened from network A to
+network B.  In all cases, a subset of ICMP (ECHO, ...) is allowed.
+
+Note that any given system might have interfaces in several of these networks.
+
+[[!img Network/overview.svg alt="r³ network overview"]]
+
 
 ## WiFi
 
diff --git a/doc/Network/.gitignore b/doc/Network/.gitignore
new file mode 100644 (file)
index 0000000..664db10
--- /dev/null
@@ -0,0 +1,2 @@
+*.png
+*.svg
diff --git a/doc/Network/Makefile b/doc/Network/Makefile
new file mode 100644 (file)
index 0000000..fd0d37c
--- /dev/null
@@ -0,0 +1,8 @@
+DIAGRAMS:=overview
+FORMATS:=svg png
+
+.PHONY: default
+default: $(foreach diagram,$(DIAGRAMS),$(foreach ext,$(FORMATS),$(diagram).$(ext)))
+
+$(foreach ext,$(FORMATS),%.$(ext)): %.dot
+       $(foreach ext,$(FORMATS),circo -T$(ext) $^ -o $*.$(ext);)
diff --git a/doc/Network/overview.dot b/doc/Network/overview.dot
new file mode 100644 (file)
index 0000000..f29d9cb
--- /dev/null
@@ -0,0 +1,21 @@
+digraph network {
+  label="r³ network overview";
+  node [ shape=none ];
+  edge [ lblstyle="above, sloped" ];
+
+  public  [ label="Public (36)\n89.106.211.32/27" ]
+  inet    [ label="Internet" ]
+  guests  [ label="Guests (127)" ]
+  members [ label="Members (128)\n89.106.211.64/27" ]
+  mgmt    [ label="Management (23)" ]
+  iot     [ label="IoT (33)" ]
+  svc     [ label="Services (34)" ]
+
+  public  -> inet [ dir=both ];
+
+  guests  -> inet [ label="NAT, tc" ];
+  members -> inet [ dir=both label="NAT || firewall" ];
+  guests  -> members [ dir=both label="firewall" ];
+
+  {svc mgmt iot guests members} -> public;
+}