ipv4 as a service
This commit is contained in:
parent
7e08e5ac65
commit
f87e2451a4
4 changed files with 68 additions and 23 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,3 +2,4 @@
|
||||||
*.pdf
|
*.pdf
|
||||||
*.svg
|
*.svg
|
||||||
*.jpg
|
*.jpg
|
||||||
|
*.eps
|
||||||
|
|
15
ipv4-as-a-service-simple.dot
Normal file
15
ipv4-as-a-service-simple.dot
Normal 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" ]
|
||||||
|
}
|
|
@ -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" ]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
13
ipv6-ipv4-stateful-mapping.dot
Normal file
13
ipv6-ipv4-stateful-mapping.dot
Normal 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" ]
|
||||||
|
}
|
Loading…
Reference in a new issue