firewalld的路由转发功能(snat和dnat)

因为自己在配置时出现一些莫名其妙的问题,如ping不通,路由转发不成功等;

环境准备:3台主机,提前下载好httpd服务

关闭防火墙systemctl stop firewalld

setenforce 0

systemctl status firewall 确认为dead

getenforce 查看确认为disabled

        1.主机1:提前下载好httpd,配置网卡为仅主机模式

认为该主机是内网主机

在实际生产工作中大部分看到的ip地址一般只到网段,这部分即可确认地区城市,具体地址类似于个人的门牌号,一般不会显示出来

网卡配置ip不再赘述,自行查看本机的vmnet1对应网段,我的是192.168.20.1

网卡配置:(认为该主机是内网主机,DNS可写可不写)ip地址只写到网段即可,

TYPE=Ethernet

NAME=网卡名

DEVICE=网卡名

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.20.1

GATEWAY=192.168.20.1

NETMASK=255.255.255.0

配置完成后重启网卡:systemctl restart network

        2.主机2:两张网卡,均为仅主机模式(该主机不用事先下载httpd),该主机做理由转发功能

网卡配置1:

TYPE=Ethernet

NAME=网卡名1

DEVICE=网卡名1

ONBOOT=yes

BOOTPROTO=static

IPADDR=192.168.20.2

GATEWAY=192.168.20.2

NETMASK=255.255.255.0

网卡配置2:

TYPE=Ethernet

NAME=网卡名1

DEVICE=网卡名1

ONBOOT=yes

BOOTPROTO=static

IPADDR:172.16.10.1

GATEWAY=172.16.10.1

NETMASK=255.255.255.0

配置完成后重启网卡:systemctl restart network

        3.主机3:提前下载好httpd服务,网卡为仅主机模式

认为该主机是外网主机

网卡配置:

TYPE=Ethernet

NAME=网卡名1

DEVICE=网卡名1

ONBOOT=yes

BOOTPROTO=static

IPADDR:172.16.10.2

GATEWAY=172.16.10.1

NETMASK=255.255.255.0

配置完成后重启网卡:systemctl restart network

注:主机3的网卡网关(GATEWAY)要指向路由转发主机的网段

        4.在主机1测试ping172.16.10.2是否ok

        5.在主机3测试ping192.168.20.1是否ok

主机2没有开启路由转发功能默认第4步和第5步是100%丢包

        6.在主机2开启路由转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward (此种方式为临时配置,因防火墙工作于内核中,内核工作于内存中,所以会导致重启失效)

永久有效方案

编辑配置文件/etc/sysctl.con加入net.ipv4.ip_forward = 1 

sysctl -p 返回ip_forward=1

        7.开启路由转发功能后,再次测试第4步和第5步

        8.在主机2做策略:

iptables -t nat -A POSTROUTING -s 192.168.20.1 -d 172.16.10.2 -j SNAT --to-source 172.16.10.1

iptables -t nat -A PREROUTING -s 172.16.10.2 -d 192.168.20.1 -p tcp  -j DNAT  --to-destination 192.168.20.2 

        9.在主机3执行动态监测日志文件命令

tail -f /var/log/httpd/access_log

        10.在主机1执行命令

curl 172.16.10.2

        11.在主机3查看路由转发功能是否实现,此时在主机3的日志显示经主机2路由转发功能转换后的ip访问

到第11步完成内网主机1经过主机2实现路由转发功能访问外网主机3(内网ip通过postrouting链,也就是SNAT)

        12.在主机1执行监测文件命令

tail -f /var/log/httpd/access_log

        13.在主机3执行访问

curl 192.168.20.1

到第13步完成 外网主机3经过主机2实现路由转发功能访问内网主机1(外网ip通过prerouting链,也就是DNAT)


        firewalld的SNAT与DNAT难点

1.实现路由转发功能过程中互相之间不通信,主要原因

        网卡配置问题,关键点在于网关之间的一个通信,再次细化就是网关的指向问题

        也可route add;具体用法可自行查询

2.SNAT与DNAT之间混淆,不清楚实现路由转发的链

简而言之为:内访外POSTROUTING链SNAT;外访内PREROUTING链DNAT

3.--dport与--sport目标端口与源端口

主要为分清谁访问谁,端口号

4.--to-source与--to-destination

可理解为主机2的中间人,关键点为--to-source时为主机2的外网ip;--to-destination为主机2的内网ip

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值