防火墙配置中采用RYU自带的防火墙程序(rest_firewall.py)来实现,rest_firewall.py本身不需要配置,可通过手动为其配置防火墙规则。
先打开防火墙,使用命令:
ryu-manager rest_firewall.py
如下图
或者打开防火墙监听特定的端口:
ryu-manager rest_firewall.py --ofp-tcp-listen-port=6634
可以通过以下方式为其配置防火墙规则:
配置之前可以在Ubuntu的浏览器上查看交换机的运行状态:
http://localhost:8080/firewall/module/status
如图
手动打开交换机S4,使其进入enable状态:
curl -X PUT http://localhost:8080/firewall/module/enable/0000000000000004
一:手动配置
(1)配置过滤规则,使一些特殊的报文可以通过交换机
比如说让源地址为192.168.2.1/32 目的地址为 192.168.1.1/32的报文通过交换机S4
和源地址为192.168.1.1/32 目的地址为 192.168.2.1/32的报文通过交换机S4
curl -X POST -d '{"nw_src":"192.168.2.1/32","nw_dst":"192.168.1.1/32"}' http://127.0.0.1:8080/firewall/rules/0000000000000004
curl -X POST -d '{"nw_src":"192.168.1.1/32","nw_dst":"192.168.2.1/32"}' http://127.0.0.1:8080/firewall/rules/0000000000000004
(2)查看交换机的流表规则
sudo ovs-ofctl -O openflow13 dump-flows s1
(3)阻塞数据包
curl -X POST -d ’{"nw_src": "10.0.0.3/32", "nw_dst": "10.0.0.2/32", "nw_proto": "ICMP", "actions": "DENY", "priority": "10"}’
(4)查看已经下发的规则
如查看交换机0000000000000004的配置情况
curl http://localhost:8080/firewall/rules/0000000000000004
如下图:
(5)删除某个交换机中某个配置好的规则
curl -X DELETE -d ’{"rule_id": "5"}’ http://localhost:8080/firewall/rules
/0000000000000001
二:通过编写py文件来配置交换机过滤规则
文件名firewall.py
import requests
data1='{"nw_src":"192.168.1.1","nw_dst":"192.168.2.1"}'
data2='{"nw_src":"192.168.2.1","nw_dst":"192.168.1.1"}'
data3='{"nw_src":"192.168.2.2","nw_dst":"192.168.1.1"}'
data4='{"nw_src":"192.168.1.1","nw_dst":"192.168.2.2"}'
def firewall():
# set rules for switch by ryu/ryu.app/rest_firewall.py
# data1-data4 is the rule by myself)
response = requests.put('http://localhost:8080/firewall/module/enable/0000
000000000004')
response=requests.post('http://127.0.0.1:8080/firewall/rules/0000000000000004',
data=data1)
response = requests.post('http://127.0.0.1:8080/firewall/rules/0000000000000004', data=data2)
response = requests.post('http://127.0.0.1:8080/firewall/rules/0000000000000004', data=data3)
response = requests.post('http://127.0.0.1:8080/firewall/rules/0000000000000004', data=data4)
firewall()
手动打开交换机S4,使其进入enable状态之后,使用命令
python firewall.py
执行该firewall.py文件自动设置配置好的过滤规则。
配置结束!
文章参考:小型网络仿真搭建(防火墙功能)-SDN/Mininet/Ryu/OVS_mininet防火墙功能-CSDN博客