![使用 MikroTik Bridge 作为公共托管服务器的公共 IP 防火墙](https://linux22.com/image/575457/%E4%BD%BF%E7%94%A8%20MikroTik%20Bridge%20%E4%BD%9C%E4%B8%BA%E5%85%AC%E5%85%B1%E6%89%98%E7%AE%A1%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%85%AC%E5%85%B1%20IP%20%E9%98%B2%E7%81%AB%E5%A2%99.png)
我们想要这样做:
互联网<->MikroTik 处于桥接模式并带有防火墙过滤器<->托管服务器
主要目标是允许 RDP 和 FTP 从外部进入,但阻止从外部进入的所有其他内容。从内部,所有内容都必须传出。
我们遇到的问题是,我们添加了这些规则,并且阻止从外部到内部的工作正常,但现在托管服务器无法访问外部的任何内容。从外部返回的 TCP/IP 不是端口 3389 或端口 80,而是随机的。
/接口桥接过滤器> pr
标志:X - 禁用,I - 无效,D - 动态 0 ;;; 接受 ICMP 进行 PING 链=转发操作=接受 mac-protocol=ip dst-address=196.xxx/32 ip-protocol=icmp
1 ;;; 接受 FTP 传输端口 chain=forward action=accept mac-protocol=ip dst-address=196.xxx/32 dst-port=20 ip-protocol=tcp
2 ;;; 接受 FTP 控制端口 chain=forward action=accept mac-protocol=ip dst-address=196.xxx/32 dst-port=21 ip-protocol=tcp
3 ;;; 接受 RDP 链=转发操作=接受 mac 协议=ip dst 地址=196.xxx/32 dst 端口=3389 ip 协议=tcp
4 ;;; 记录即将被丢弃的所有内容 chain=forward action=log mac-protocol=ip dst-address=196.xxx/32 ip-protocol=tcp log-prefix="firewall_drop"
5 ;;; 丢弃所有内容 chain=forward action=drop mac-protocol=ip dst-address=196.xxx/32 ip-protocol=tcp
仅供参考,桥接器设置为使用防火墙,并且连接跟踪已开启。
答案1
我建议为您的服务器使用本地 IP 子网,并在 mikrotik(路由器)和服务器之间建立专用 LAN。还可以直接在公共 IP 上使用 mikrotik。然后对传出流量(从服务器到互联网)执行 ip src-nat。所有传入流量都应进行端口转发(dst-nat)。您还可以使用普通的三层 IP 防火墙,并为二层/桥接网络禁用三层防火墙。
答案2
这与连接跟踪有关,但我不知道它在网桥中的具体工作原理。我只需添加另一条规则,以允许来自内部的所有内容(具有源地址或接口):
add chain=forward action=accept mac-protocol=ip src-address=196.x.x.x/32 ip-protocol=tcp place-before=4
答案3
我同意@Matt的观点,桥接是个愚蠢的想法,我们应该从一开始就进行路由。我们之所以桥接,是因为我们的边界路由器是传统的 Cisco VXR 7206,有两个接口,一个 WAN(ATM)和一个 LAN(用于公共)接口。我们希望在公共网络上设置防火墙,而无需重新划分网络子网。此外,虽然@DJ_Kukky 使用 DST-NAT 的建议是可行的,但这会导致更多的配置,而且我们不能(或不会)向客户提供私有 IP,因为我们是面向公众的 ISP。
我们应该在 Cisco 上实施防火墙规则,或者更换技术 (ATM)。最后,我们用 MetroEthernet 替换了 ATM,并且能够在以太网接口上建立外部接口,这样就可以使用 MikroTik。它运行得非常好。