I believe OP has made some mistakes when pasting the text
[Diagram]
Oracle VM: Linux
External IP: 192.0.2.1
Internal IP: 172.16.0.2
|
| GRE Tunnel
v
Home Server: Linux
Internal IP: 172.16.0.2
|
|
v
Firewall: FreeBSD
Internal IP: 172.16.0.1
External IP: 192.0.2.2
[Text]
Home Linux Server GRE config:
$ sudo ip tunnel add gre0 mode gre remote 172.16.0.2 local 192.0.2.1 ttl 255
$ sudo ip link set gre0 up
$ sudo ip addr add 10.100.10.1/24 dev gre0
Home Linux Server GRE config:
$ sudo ip tunnel add gre0 mode gre remote 192.0.2.2 local 192.0.2.1 ttl 255
$ sudo ip link set gre0 up
$ sudo ip addr add 10.100.10.1/24 dev gre0
Firewall:
nat on igb1 inet from ! (igb1) to any -> (igb1:0)
nat on igb0 inet proto gre from 172.16.0.2 to any -> (igb1:0)
rdr pass on igb1 inet proto gre from 141.148.84.178 to (igb1) -> 172.16.0.2
Honestly, just use Debian. It can run under 200MB of RAM (default install), so it beats all distros on the list except for TinyCore and SliTaz, and it actually has packages.