FreeBSD监狱作为网关

我试图build立一个监狱,将作为我的一些外部客户的默认网关

我有一个VIMAGE监狱,在我的本地networking有一个专用的IP地址,我想用作我的客户的网关。 我这样做的原因,如果重要的是,我想在监狱里运行OpenVPN,所以我所有使用监狱的IP作为网关的客户端都将透明地通过VPN。

当我进入监狱ssh的一切正常:我可以看到互联网,即使当我打开OpenVPN的按预期工作。 但是,它不作为我的客户的默认网关:名称不解决,“没有路由到主机”,等等

当我在监狱内运行tcpdump ,我看到以下内容:

 20:53:23.263597 IP 192.168.1.6.54460 > syd15s01-in-f78.1e100.net.https: UDP, length 109 20:53:23.263636 IP 192.168.1.6.54460 > syd15s01-in-f78.1e100.net.https: UDP, length 109 

其中192.168.1.6是客户的IP,所以我假设客户端试图通过监狱到达互联网,但没有回来。 我有时也会看到一些ICMPstream量。

我的ipfwconfiguration是:

 # less /usr/local/etc/ipfw.rules #!/bin/sh EPAIR=$(/sbin/ifconfig -l | tr " " "\n" | /usr/bin/grep epair) INNER="$(/sbin/ifconfig | grep " -->" | cut -d' ' -f2 | cut -d'.' -f1-3).0/24" ipfw -q -f flush ipfw -q nat 1 config if ${EPAIR} ipfw -q add nat 1 all from ${INNER} to any via ${EPAIR} ipfw -q add nat 1 all from any to any in via ${EPAIR} # ipfw add check-state TUN=$(/sbin/ifconfig -l | tr " " "\n" | /usr/bin/grep tun) ifconfig ${TUN} name tun0 

我假设某个地方有一些NAT,但是我不太清楚发生了什么,所以我们不胜感激。

当监狱的IP用作默认网关时,我应该怎么做才能允许我的客户的stream量通过jail / vpn?

FreeBSD jails基本上是一种轻量级的虚拟化,所以最好的目的是将一些应用程序作为容器来运行。 它肯定有一个networking堆栈,但是,比较它的function与主机系统的function,我会说这是相当有限的。

所以select一个监狱作为集装箱路由器似乎是一个不好的select。 你应该做什么 – 是使用多个FIB。 顺便说一下,同样的方法适用于所有现代networking操作系统 – Linux,JunOS,Cisco IOS等。

我build议将net.fibs="4"添加到/boot/loader.conf ,然后重新引导并使用多个路由表。 这样你就可以像使用setfib 1 /usr/local/bin ... whatever这样独立的FIB启动你的OpenVPN网关,然后使用ipfw中的setfib或者直接将你的客户端接口分配给这个FIB来为你的客户分配stream量。