ipv4 as a service

This commit is contained in:
Nico Schottelius 2021-03-26 12:09:27 +01:00
parent 7e08e5ac65
commit f87e2451a4
4 changed files with 68 additions and 23 deletions

1
.gitignore vendored
View file

@ -2,3 +2,4 @@
*.pdf *.pdf
*.svg *.svg
*.jpg *.jpg
*.eps

View file

@ -0,0 +1,15 @@
graph G {
node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ]
label="IPv4 as a service\n(simplified)\nby ungleich.ch"
concentrate=true
client [ label="Notebook, Desktop,\nServer, IoT device" color="#ee1100" ]
ipv4internet [ label="IPv4 Internet" shape=oval ]
ipv6internet [ label="IPv6 Internet" shape=oval ]
ipv6internet--client [ label="Access via VPN" ]
ipv4internet--client [ label="Access via NAT64 translator" ]
}

View file

@ -1,44 +1,60 @@
digraph G { digraph G {
node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ] node [ shape=box, fontcolor="#ffffff", color="#40a9e3", style="filled" ]
label="IPv4 as a service\nby ungleich" label="IPv4 as a service\nby ungleich.ch"
subgraph cluster_v6_vm { # rankdir=LR
label="IPv6 only VM"
ipv6onlyvm [ label="IPv6 only VM" color="#ee1100" ]
}
subgraph cluster_roadwarrior { #
label="Roadwarrior"
notebook [ label="Notebook" color="#ee1100" ] # Merge double edges into single one
desktop [ label="Desktop" color="#ee1100" ] # concentrate=true
}
subgraph cluster_roadwarrior { # allow edges to subgraphs
label="Roadwarrior" # compound=true
notebook [ label="Notebook" color="#ee1100" ] # subgraph cluster_endpoints {
} # label="IPv6 and IPv4 reachable hosts"
subgraph cluster_internet { client [ label="Notebook, Desktop,\nServer, IoT device" color="#ee1100" ]
label="The Internet" // notebook [ label="Notebook" color="#ee1100" ]
// desktop [ label="Desktop" color="#ee1100" ]
// ipv6onlyvm [ label="IPv6 only VM" color="#ee1100" ]
# }
// subgraph cluster_roadwarrior {
// label="Roadwarrior"
// notebook [ label="Notebook" color="#ee1100" ]
// }
# subgraph cluster_internet {
# label="The Internet"
ipv4internet [ label="IPv4 Internet" shape=oval ] ipv4internet [ label="IPv4 Internet" shape=oval ]
ipv6internet [ label="IPv6 Internet" shape=oval ] ipv6internet [ label="IPv6 Internet" shape=oval ]
} # }
subgraph cluster_dcl { subgraph cluster_dcl {
label="Data Center Light in Switzerland" label="Data Center Light in Switzerland"
vpnserver [ label="VPN Server in\nData Center Light" ] vpnserver [ label="VPN Server" ]
nat64t [ label="NAT64 translator (inbound)" ]
nat64tout [ label="NAT64 translator (outbound)" ]
} }
ipv6onlyvm->ipv6internet [ label="Connect via IPv6" ] ipv4internet->client [ label="Access via NAT64 translator" style=dashed ]
{desktop,notebook}->{ipv4internet,ipv6internet} [ label="Connect either way" ] ipv4internet->nat64t [ label="Access via IPv4" ]
{ipv4internet,ipv6internet}->vpnserver [ label="Connect to VPN" ]
vpnserver->{ipv6onlyvm, desktop, notebook} [ label="Route IPv4 address via VPN" ] ipv6internet->client [ label="Access via IPv6" style=dashed ]
ipv6internet->vpnserver [ label="Access via VPN server" ]
client->ipv4internet [ label="Access IPv4 Internet\nvia 2a0a:e5c0:1e:c001::a.b.c.d/96" style=dashed ]
client->nat64tout [ label="IPv4 via IPv6 access" ]
nat64tout->ipv4internet [ label="Translate mapped IPv4 to native IPv4" ]
client->vpnserver [ label="Connects to" ]
nat64t->vpnserver [ label="Translate IPv4 traffic to IPv6" ]
vpnserver->client [ label="Route IPv6 network" ]
} }

View file

@ -0,0 +1,13 @@
digraph G {
node [ shape=box ]
label="Stateful NAT64 for masquarading IPv6 networks"
v6net [ label="IPv6 Network\n2001:db8:0:0::/64\n(64 bit)" ]
v4net [ label="IPv4 Internet\n0.0.0.0/0\n(32 bit)" ]
nat64 [ label="NAT64 translator" ]
v6net->v4net [ label="Allow access\nfrom an IPv6 network" style=dashed ]
v6net->nat64 [ label="Connects to\n2001:db8:0:0:c001::/96\n(32 bit)" ]
nat64->v4net [ label="Squashes 2001:db8::/64 to 192.0.2.1" ]
}