我当前的网络拓扑是:
事实上防火墙(我用 OPNsense 和 IPFire 进行了测试,但我愿意接受进一步的建议)和整个“ORANGE/DMZ”东西实际上是物理 LXD 服务器中的虚拟机/容器,不应该受到影响(但我当然可能是错的)。
我当前的设置(使用 IPFire ATM)功能齐全,但它仅用于ISP_B
通讯。
我可以轻松切换使用ISP_A
,而且它同样可以正常工作(当然有浮动 IP 限制)。
我尝试使用两者,但都失败了。
目标是:
- 用于
ISP_A
源自GREEN/LAN
和 的所有传出流量ORANGE/DMZ
。 - 将所有网络流量(端口 80、81 和 443)重定向
webserver
至ORANGE/DMZ
并允许适当答复 - 将其他几个端口(非标准,但本质上是运动
ssh
/git
协议)重定向userver
到ORANGE/DMZ
允许适当的反应 - 如果可能的话,我还希望能够
ISP_B
在发生故障时用于所有流量ISP_A
,但我怀疑这是另一个问题。
我的尝试彻底失败了,因为如果我将来自的default gateway
数据 包设置为经过NAT 处理,然后正确发送并重定向到(到目前为止一切顺利),但回复却发送到从未见过原始数据包的目的地,因此它无法预测将其发送到哪里,只能将其丢弃。ISP_A
ISP_B
Firewall
webserver
Firewall
ISP_A
我遗漏了一些东西,但我不明白是什么。
注 1:两个调制解调器/路由器均设置为防火墙的“DMZ 模式”(即完全端口重定向)(
192.168.1.9
)。
注 2:上面的分析是在 下进行的
IPFire
,但OPNsense
行为类似。
注3:如果可能的话,我想了解在这种情况下应该做什么,而不仅仅是“如何解决”。
如果认为有用,我准备提供任何所需的信息,包括完整的配置。
更新:
以下是我从安装 OPNsense 到现在所做的所有操作的日志。
最后一部分(端口重定向)似乎不能正常工作,即使规则被触发并记录(见下文)。
OPNsense 设置日志
- 在控制台上以 root 身份登录
- 为所有三个网络设置设备:
- 广域网:
- 第二台设备(vtnet1)
- 固定IP(192.168.1.9/24)
- 默认网关(192.168.1.1)
- 没有 DHCP 服务器
- 局域网:
- 第一个设备(vtnet0)
- 固定IP(192.168.7.9/24)
- 没有默认网关
- 没有 DHCP 服务器(我们稍后会启用它)
- 选择1:
- 第三个设备(vtnet2)
- 固定IP(192.168.9.9/24)
- 没有默认网关
- 没有 DHCP 服务器
- 广域网:
- 从 LAN 访问互联网应该可以按预期进行(例如:从
cinderella
)。 - 从 OPT1 访问互联网(例如:从
webserver
)才不是工作;DNS解析才不是也可以工作。 - 打开 OPNsense 管理页面(
https://192.168.7.9
) - 以 root/opnsense 身份登录
- 按照安装向导更改
root
密码。 - 功能不应该发生改变。
- 启用 OPT1/DMZ 访问互联网:
- 接口 -> [OPT1]
- 勾选“防止删除接口”
- “描述” -> DMZ
- “IPv6 配置类型”->无
[Save]
和[Apply changes]
- 防火墙 -> 规则 -> DMZ:
- 添加新规则
[+]
- “来源” ->
DMZ net
- “类别” ->
dmz
- “描述” ->
Allow DMZ to access Internet
[Save]
和[Apply changes]
- 添加新规则
- 接口 -> [OPT1]
- 从 OPT1/DMZ 访问互联网(例如:从
webserver
)作品;DNS 解析也有效。 - 所有主机(LAN+DMZ)都应使用默认网关(192.168.1.1)进行连接。
- 保存配置至
config-OPNsense.condarelli.it-01.xml
- 添加第二个网关:
- 系统 -> 网关 -> 单一
- WAN_GW(活动)-> 编辑
- “优先级” ->
10
[Save]
- “优先级” ->
- 添加新网关
[+]
- “姓名” ->
Backup
- “描述” ->
DSL backup connection (with fixed IP)
- “界面” ->
WAN
- “IP 地址” ->
192.168.1.2
- “优先级” ->
100
[Save]
- “姓名” ->
[Apply changes]
- WAN_GW(活动)-> 编辑
- 系统 -> 网关 -> 单一
- 功能无变化
- 保存配置至
config-OPNsense.condarelli.it-02.xml
- 强制使用 DMZ
Backup
作为网关:- 防火墙 -> 规则 -> DMZ
- 允许 DMZ 访问互联网 -> 编辑
- “网关” ->
Backup - 192.168.1.2
[Save]
- “网关” ->
- 添加新规则
[+]
- “协议” ->
TCP/UDP
- “来源” ->
DMZ net
- “目的地” ->
DMZ address
- “目标端口范围” -> 从
DNS
到DNS
- “类别” ->
dmz
- “描述” ->
Allow access to DNS server
[Save]
- “协议” ->
[Apply changes]
- 允许 DMZ 访问互联网 -> 编辑
- 防火墙 -> 规则 -> DMZ
- 功能应保持不变,但 DMZ 上的主机应使用
Backup
(192.168.1.2) 作为网关。可以使用以下命令进行检查traceroute
- 保存配置至
config-OPNsense.condarelli.it-03.xml
- 创建从 Internet 到网关的端口
webserver
转发Backup
:- 防火墙 -> 类别
- 添加新类别
[+]
- “姓名” ->
web
- “颜色” ->
ff14ff
[Save]
- “姓名” ->
- 添加新类别
- 防火墙 -> 类别
- 防火墙 -> 别名
- 添加新别名
[+]
- “姓名” ->
WEBports
- “类型” ->
Port(s)
- “类别” ->
web
- “内容” ->
80 81 443
- “描述” ->
Web standard ports
[Save]
- “姓名” ->
- 添加新别名
[+]
- “姓名” ->
webserver
- “类型” ->
Host(s)
- “类别” ->
dmz web
- “内容” ->
192.168.9.8
- “描述” ->
Nginx web server and reverse proxy
[Save]
- “姓名” ->
- 添加新别名
- 防火墙 -> NAT -> 端口转发
- 添加新规则
[+]
- “目的地” ->
WAN address
- “目标端口范围” ->
WEBports
- “重定向目标 IP” ->
webserver
- “类别” ->
web dmz
- “描述” ->
Allow external access to Nginx Proxy Manager
[Save]
[Apply changes]
- 添加新规则
如果我尝试nginx
使用指向外部地址的 DNS 条目访问我的服务器,ISP_B
我可以在日志中看到:
注意:
79.34.242.11
是当前分配给调制解调器的(浮动)IPISP_A
。
更新2:
抱歉,如果我说的不清楚,但我有两条DMZ
规则:
第一个允许访问防火墙上的 DNS 服务器,第二个将其他所有内容重定向到 ISP_B。
我不确定为什么需要第一个,但是如果没有它,DNS 解析对于位于 DMZ 上的主机就不起作用。
连接到 DMZ 的主机实际上使用 ISP_B/Backup/192.168.1.2 来访问互联网;这一点是有效的。不是工作是在请求数据包(显然正确)重定向到 DMZ/web 服务器后获取答案。
端口转发规则如下:
并且显然按照上面的日志所表明的那样工作。
我无法理解为什么响应数据包似乎丢失了(以及我如何追踪它们以了解出了什么问题)。
不幸的是,我离成为网络(和 OPNsense)专家还差得很远。
关于如何克服问题(或进一步诊断)的具体说明如下非常欢迎。