ESXi 的所有端口都是白名单方式,只允许系统默认支持的一些程序配置好的端口,你可以选择打开和关闭,但是不能在UI界面上自行添加,都是预置的。
如果需要添加一个新的自定义端口,需要通过 SSH 命令行方式修改防火墙的配置文件,添加自定义端口,下面添加一个 9999 端口为例进行说明:
1、启动一个简单的 python http 服务(验证防火墙不通)
[root@localhost:/vmfs/volumes/44fc9b04-9186394f-30e5-9766dafb8754/test] python3 -m http.server 9999
Serving HTTP on :: port 9999 (http://[::]:9999/) ...
此时另起一个命令行使用 wget http://127.0.0.1:9999
是可以访问到内容的(index.html),而在你的电脑上使用浏览器访问 http://192.168.x.x:9999
是无法访问的,这是因为 ESXi 防火墙白名单中没有 9999 端口。
2、配置防火墙文件,添加自定义端口
# 查看防火墙所有开启的端口
esxcli network firewall ruleset list
先修改配置文件权限,然后编辑内容添加新的端口
# 添加权限
chmod 777 /etc/vmware/firewall/service.xml
# 添加属性
chmod +t /etc/vmware/firewall/service.xml
# 修改文件(追加内容如下图所示)
vi /etc/vmware/firewall/service.xml
3、刷新防火墙规则
# 刷新防火墙
esxcli network firewall refresh
esxcli network firewall ruleset list|grep pythonHttpServer
至此命令操作结束,最后到 UI 界面的防火墙界面刷新查看就可以看到新添加的自定义端口了。
直接关闭防火墙大法
如果你是临时使用某个端口,你可以直接关闭 ESXi 的防火墙,端口使用完成后再开启防火墙即可,相关命令如下:
#关闭防火墙
esxcli network firewall set --enabled false
#开启防火墙
esxcli network firewall set --enabled true
#查看防火墙状态
esxcli network firewall get
(END)