由于我是在虚拟机中安装的security onion,在此过程中,遇到很多的网络访问不通的问题,通过该文章把网络连接问题做一下梳理。如果直接把securityonion 安装在物理机上,网络问题则会少很多。
NAT无法访问虚拟机
security onion虚拟机安装成功之后,宿主机是可以通过IP地址直接访问虚拟机的。但是局域网的其他机器无法访问该security onion的虚拟机,主要原因是通常来说宿主机安装虚拟机,网络设置采用的是NAT转换模式,如下图:
即虚拟机访问外网会将将虚拟机的IP地址转换成为宿主机的IP地址进行上网。通过NAT方式上网你会发现,从虚拟机ping外部以及局域网其他类型的主机是能够ping通的,但是和宿主机同在局域网的其他机器是ping不通虚拟机的。因为和外部直接通信的是经过NAT转换之后的宿主机IP地址,而不是虚拟机的IP地址。
暴露虚拟机端口
如何让局域网其他机器能够访问虚拟机的服务呢,其实虚拟机服务类似于docker服务,需要做端口映射,如下:
添加虚拟机端口和宿主机端口的映射关系,如下:
这样做的原理在于将虚拟机的端口映射到宿主机的端口,由于宿主机是可以和局域网的其他机器通信的,因此在局域网的其他机器访问宿主机指定端口,宿主机会根据端口映射,解析到虚拟机的对应端口服务,从而实现对于虚拟机的访问。
防火墙规则设置
虽然虚拟机和宿主机做了端口的映射但是局域网其他主机访问宿主机的时候,由于防火墙规则的原因,仍然存在着ping不同以及无法访问的问题。
Ping问题
ping命令不通往往是ping windows设备不通,主要原因在于windows防火墙默认禁止ping,如下:
如果希望能够ping通windows防火墙,只要将入站规则中和ICMP请求相关的规则禁用即可。
特定端口配置
虽然前面设置了宿主机和虚拟机的映射端口,保障了宿主机能够把对应端口的请求转给虚拟机,但是由于windows防火墙的默认设置,局域网其他的机器可能无法访问对应宿主机所暴露的端口,因此需要新建防火墙规则,允许局域网其他机器对于宿主机指定端口的访问,如下:
安全起见,设置特定端口,如果虚拟机开放端口较多,可以选择所有端口,如下:
后续的采用默认配置,并为配置取个名称如下:
通过上述配置,局域网的其他机器就可以通过访问宿主机的端口,从而来访问虚拟机的服务了。
域名访问配置
securityonion需要对外提供多个web服务以及API服务,使用的地址均是虚拟机的IP地址。前面提到web服务通过和宿主机进行映射实现访问,但是API服务默认使用虚拟机的IP地址,因此还会存在访问失败的情况。例如在配置elastic agent 发送日志给fleet的时候,使用的就是虚拟机的IP地址。这个时候肯定会存在访失败,因为局域网其他机器无法直接访问虚拟机。当然可以修改API请求的IP地址,但是这样并不方便。ealstic agent除了使用IP地址直接做API请求,还是用了securityonion主机名的方式进行请求,因此可以在elastic agent对应的机器上配置主机名和IP的映射关系,如下:
在IP地址请求不成功,会采用域名访问的方式进行API请求,如下:
如上就是在虚拟式安装security onion过程中出现的网络连接问题,希望对你有所帮助。
本文为CSDN村中少年原创文章,未经允许不得转载,博主链接这里。