【Linux】iptables进行防火墙设置以使得可以访问虚拟机的端口

【题目】iptables进行防火墙设置以使得可以访问虚拟机的端口

【时间】2022.03.09 周三

一、问题描述

有的应用在VMWare虚拟机上运行的,想要在物理机上访问对应的应用端口,如flink的web UI(默认端口8081)、tomcat(默认端口8080)等。

由于linux的防火墙限制,往往无法访问,需要使用 iptables命令设置防火墙规则放开端口访问。

2、解决方法:iptables命令设置防火墙放开端口访问

1、查看INPUT链规则

iptables -L INPUT

发现有一条REJECT拒绝的命令:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:bootps
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:bootps
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

所以需要在REJECT之前插入ACCEPT端口的规则,下面在位置1插入ACCEPT规则。

2、在位置1插入开放8081端口的ACCEPT规则。

iptables -I  INPUT 1 -p tcp  --dport 8081 -j ACCEPT
  •  -I  INPUT 1 表示在INPUT链的位置1插入规则。
  • -p tcp 表示指定协议为tcp
  •  --dport 8081 -j ACCEPT 其中--dport 8081指定目的端口8081,-j ACCEPT指定规则为接受。

3、这样即可开放虚拟机的8081端口(临时)。

4、保存iptables规则使得重启后不用重新设置。

        若你用的是 RedHat 系列,应该使用 service iptables save 保存,用 chkconfig iptables on 实现开机启动启用

        若不是 RedHat 系列,可以使用下面方法手动保存/恢复配置。
        保存  iptables-save > /etc/sysconfig/iptables
        恢复  iptables-restore < /etc/sysconfig/iptables

三、补充:iptables命令详解

详见:/etc/sysconfig/iptables详解

2480889e5f7ccc621b60e212f77e3f6afc3.jpg

(图片来源:https://my.oschina.net/u/1253780/blog/2050514

命令格式

iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 处理动作或跳转]
-t 接表名,如果不加-t 默认就是 –t filter


命令选项

-L 列出一个或所有链的规则
-v 显示详细信息,包括每条规则的匹配句数量和匹配字节数
-x 在v的基础上,禁止自动换算单位(K,M)
-n 只显示ip地址和端口号,不显示域名和服务名称
-I 插入到防火墙第一条生效
-A 添加链是添加到最后一条
-D 删除指定链中的某一条规则,按规则序号或内容确定要删除的规则
-F 清空指定链中的所有规则,默认清空表中所有链的内容
-X 删除指定表中用户自定义的规则链


条件匹配

-i 入站请求接口
-o 出站请求接口
-s 入站源地址
-d 目标地址
-p 指定规则协议,如tcp, udp,icmp等,可以使用all来指定所有协议
–dport 目的端口,数据包的目的(dport)地址是80,就是要访问我本地的80端口
–sport 来源端口 数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。


处理动作

ACCEPT:允许数据包通过。
DROP:直接丢弃数据包,不给任何回应信息,这时候客户端会感觉自己的请求泥牛入海了,过了超时时间才会有反应。
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应的信息,客户端刚请求就会收到拒绝的信息。
SNAT:源地址转换,解决内网用户用同一个公网地址上网的问题。
MASQUERADE:是SNAT的一种特殊形式,适用于动态的、临时会变的ip上。
DNAT:目标地址转换。
REDIRECT:在本机做端口映射。
LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则,也就是说除了记录以外不对数据包做任何其他操作,仍然让下一条规则去匹配
一般不使用REJECT(拒绝)行为.REJECT会带来安全隐患。
 

  • 1
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

C小C

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值