我最近才开始使用这个出色的操作系统,虽然我有 Windows 网络背景,但我对于如何在 FreeNAS 9.3(FreeBSD)上完成某些任务,尤其是使用 jails,还很陌生。
基本上,我试图弄清楚如何将流量从一个监狱路由到另一个监狱,所有这些都由主机系统本身进行管理和设置(最好是一个规则集,这样如果发生变化,我只需要连接到主机并在那里配置所有内容)。
这是我的布局(默认网关是我的路由器,位于 .1):
FreeBSD ip=.50 igb0 ipfw0 bridge0 epair0a epair1a 默认网关=.1 -> openvpn-client-jail ip=.201 epair0b 默认网关=.1 -> other-jail ip=.200 epair1b 默认网关=.1
所以我想要实现的是,.200 处的“other-jail”不通过我的路由器进行通信,而是将所有流量发送到.201 处的“openvpn-jail”
目前我已经在主机 (.50) 上启用了 pf,但尚未创建任何规则。如果有人能手把手地用例子向我解释这一点,我会很高兴的。
我认为我必须将“其他监狱”的默认网关更改为 .201,或者它需要是 .50 处的主机,这最终是我设置规则的地方,对吗?
我是否只需启用 ipv4 网关(在主机或代理监狱上?)并在该机器上创建“rdr”规则?类似于:
epair1a inet proto tcp 上的 rdr 到端口 {自定义应用程序端口} -> epair0a
因此我尝试实现这一点,并在我的主机上编辑了我的 rc.conf,如下所示:
pf_enable="YES"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
gateway_enable="YES"
#alias
ifconfig_igb0_alias0="inet 192.168.1.201 netmask 255.255.255.0"
ifconfig_igb0_alias1="inet 192.168.1.200 netmask 255.255.255.0"
然后,我添加 .201(openvpn jail)作为 .200(其他 jail)的默认网关,但是我遇到了连接问题,因此我进入 openvpn jail 并将其添加到 rc.conf 并重新启动 jail:
gateway_enable="YES"
现在,jail 可以成功 ping 通彼此,主机也可以 ping 通每个 jail。此网络内的另一台机器也可以像这样看到这两个 jail。在另一个 jail 上运行跟踪路由显示它正在通过 .201 openvpn jail。但是它无法与外界通信,因此 ping google 或 yahoo 没有任何结果。
但事实证明,如果我停止 openvpn 服务,我的 other-jail 可以连接到外部世界,并且 traceroute 显示它采用 .201 -> .1 路由,这是正确且有效的。但是一旦我启动 openvpn 服务,other-jail 就无法与外部的任何东西通信,只能与我的 LAN 上的设备通信。在这种情况下,traceroute 显示 .201 是第一跳,但之后只是 * * *,* * *...
我需要设置 pf 规则吗?但是如果 openvpn 守护进程停止,它已经可以工作了,这是否与 openvpn 不允许另一台机器通过这样的客户端发送流量有关?