以下命令仅启用防火墙,默认情况下不启用其中的任何规则来控制数据包流。假设控制器在 localhost 上运行。
sh curl http://localhost:8080/wm/firewall/module/enable/json -X PUT -d ''
您可以使用以下命令检查防火墙状态并验证防火墙是否真的启用:
sh curl http://localhost:8080/wm/firewall/module/status/json
默认情况下,防火墙拒绝所有流量,除非创建了明确的 ALLOW 规则。您可能需要通过查询 /wm/firewall/rules/json 来检查现有规则列表,以查看网络拓扑中是否存在任何 ALLOW 规则。
您可以在感兴趣的交换机上添加规则,如下所示,感兴趣的交换机 id 应该根据您的拓扑结构。让我们考虑 switch1 的 id 是 00:00:00:00:00:00:00:01。以下命令为所有流通过交换机 00:00:00:00:00:00:00:01 添加了一条允许规则。
sh curl POST -d '{"switchid : "00:00:00:00:00:00:00:01"}'
http://localhost:8080/wm/firewall/rules/json
交换机中存在上述规则应仅允许连接到交换机 1 的主机之间进行 ping。
假设 h1 的 IP 地址是 10.0.1.1,而 h2 的 IP 地址是 10.0.1.2。
以下命令应为主机 10.0.1.1 和主机 10.0.1.2 之间的所有流添加一个 ALLOW 规则。请注意,不指定操作意味着 ALLOW 规则。
curl -X POST -d '{"src-ip": "10.0.1.1/32", "dst-ip": "10.0.1.2/32"}'
http://localhost:8080/wm/firewall/rules /json
curl -X POST -d '{"src-ip": "10.0.1.2/32", "dst-ip": "10.0.1.1/32"}'
http://localhost:8080/wm/firewall/rules /json
上述规则的存在应允许提及的主机之间 ping
要阻止主机之间的流量,您可能需要根据您的网络拓扑使用您感兴趣的主机 IP 地址添加如下拒绝规则。
sh curl -X POST -d '{"src-ip" : "10.0.1.1/32", "dst-ip": "10.0.1.2/32", "nw-proto":"ICMP", "action" : "拒绝" }'
http://localhost::8080/wm/firewall/rules/json
上述规则的存在将阻止上述主机之间的 ping - 现在 pingall 命令将显示输出,使得主机 10.0.1.1(h1) 和 10.0.1.2(h2) 之间的 ping 不成功。在这种情况下,以下命令还应显示 h1 和 h2 之间没有发生 ping
h1 平 h2