防火墙iptables 与 firewalld案例配置讲解

本篇博客将会讲解如何在防火墙iptables和firewalld中分别实现:

1.允许所有用户访问服务器80端口
2.本地端口转发:5234->80
3.远程端口转发:主机A:80 -> 主机B:80

iptables 四表五链

其中五链之间的位置关系为

                              INPUT   ---------->本机应用程序------------->OUTPUT                

                                   ^                                                                     |  

                                   |   ---------->FORWARD   ---------------------->   |        向下

PREROUTING ----->  |                                                                    POSTROUTING  

要根据需求的不同来配置对应链中的相应的表

1.允许所有用户访问服务器(192.168.79.128)80端口:

iptables -t filter -I INPUT 1 -p tcp --dport 80 -d 192.168.79.128 
- j ACCEPT

# -t 选择表 -I 添加在哪个链的第 x 行 如果后面没跟数字则默认加在第一行 
# -p 当流量为哪个协议被匹配 --dport 为哪个端口 -d 目标路由器为哪个
# 流量必须全部匹配上面这三条,然后才会被选中
# -j 选中流量的处理方式 ACCEPT 通过 REJECT 拒绝,会响应请求端  DROP 丢弃 不响应请求端 

 2.本地端口转发:5234->80:

iptables -t nat -A PREROUTING  -p tcp --dport 5234 -d 192.168.79.128 
-j REDIRECT --to-port 80

# -A 在链的末尾添加
# REDIRECT 重定向

3.远程端口转发:主机A:80 -> 主机B:80:

首先要允许主机A的转发功能

echo '1' > /proc/sys/net/ipv4/ip_forward

# 这个只是临时变更 永久变更要改相应的配置文件

在主机A(192.168.79.128)防火墙上做nat转换到主机B(192.168.79.129)上

iptables -t nat -I PREROUTING -p tcp --dport 80 -d 192.168.79.128
-j DNAT --to-destination 192.168.79.129:80

# DNAT 修改流量的目标地址和端口
# --to-destination 修改后的目标地址和[端口] 



iptables -t nat -I POSTROUTING 1 -p tcp --dport 80 -d 192.168.79.129 
-j SNAT --to-source 192.168.79.128

# SNAT 修改流量的源地址和端口
# --to-source 指定源IP和[端口]

之后就不用管了,流量从主机B回来时防火墙会自动把目标IP和源IP 转换回来

但此时因为DNAT后流量目标IP地址不为主机A了所以该流量会从forward链通过,所以我们还要配一下forward链。

iptables -t filter -I FORWARD -p tcp -j ACCEPT

测试:

我们开启俩个服务器的nginx服务

访问主机A的5234端口

主机B的80端口

访问主机A的80端口

firewalld

firewall-cmd 既可以直接使用命令参数配置

也可以使用富规则来进行配置

允许用户192.168.xxx.0/24 访问主机:80端口

firewall-cmd --add-rich-rule="rule family=ipv4 source address=192.168.79.0/24
port port=80 protocol=tcp accept"

本地端口转发: 5234->80 

firewall-cmd --add-forward-port=port=5234:proto=tcp:toport=80

 远程端口转发:主机A:80 -> 主机B:80

firewall-cmd --add-forward-port=80:proto=tcp:toport=80:toaddr=192.168.79.129

firewall-cmd --add-masquerade
#打开地址伪装
#和iptables一样记得把允许转发打开

 我们还可以通过firewall-cmd --list-all 来查看我们之前的配置

并且以上都是临时配置要想永久生效则配置时要加 --permanent

并且要重启firewalld服务或者firewall-cmd --reload 才能生效

 

上个关于DNS的博客再补充一点内容

DNS view

实现 根据请求地址的IP来返回同一域名的不同IP

案例:

假如现有俩个服务器,且这俩个服务器一个在西安,一个在上海。

现要求西安的IP进行DNS解析时把域名解析成西安服务器的IP

上海的IP进行DNS解析时把域名解析成上海服务器的IP

且这俩个域名是相同的

这里便可以用view视图来解决问题

# 把配置文件改一下 把原本的区域放入视图中
#上海
view "shanghai"{
match-clients{192.168.79.128;};
#匹配的IP
zone "." IN {
        type hint;
        file "named.ca";
};
zone "csdn.com" IN {
           type master;
           file "csdn.zone";
};
zone "211.168.192.in-addr.arpa" IN {
        type master;
        file "named.192.168.211";
    };
include "/etc/named.rfc1912.zones";
};
#西安
view "xian"{
match-clients{192.168.79.129;};
#匹配的IP
zone "." IN {
        type hint;
        file "named.ca";
};
zone "csdn.com" IN {
           type master;
           file "csdn2.zone";
};
include "/etc/named.rfc1912.zones"; 
};

像上图中的match-clients就是匹配进行dns解析的请求方的地址,匹配上的话就用这个区域的dns解析。其余和之前的配置一样

不同IP访问同一个DNS服务器,相同的域名解析出不同的IP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值