iptables之forward转发

  • 1、网络防火墙
  • 2、iptables之FORWARD转发实例
  • 3、iptables之FORWARD过滤实例

1、网络防火墙

  • 网络防火墙处于网络入口的边缘,针对网络入口进行防护,针对整个网络入口后面的局域网。

作用:
当外部网络主机与内部网络主机互相进行通讯时,都要经过iptables所在的主机,由iptables所在的主机进行 “过滤并转发”,这就是防火墙的主要工作

但是这又跟forward链有什么关系呢?

网络防火墙的主要职责是"过滤并转发",在五链中,只有INPUT,OUTPUT和FORWARD有filter(过滤)功能,要想实现转发,报文必须经过FORWARD链,因此,iptables的角色变为"网络防火墙"时,规则只能定义在FORWARD链。

2、iptables之FORWARD转发实例

实验环境:

外网主机 ip地址:192.168.119.5 网关为:192.168.119.2
防火墙主机 eth0 :192.168.119.132 网关为: 192.168.119.2 eth1:192.168.116.132 网关为:192.168.116.1
内网主机 ip地址:192.168.116.7 网关为:192.168.116.132

注意:

  • 内网的网关必须为防火墙内网的地址
  • 外网和防火墙的eth0网卡设置为nat模式,
    内网和防火墙的eth1设置为仅主机模式

具体关系如下图所示:

1、在外网上新增一条路由,让外网访问192.168.116.0网段都发送给防火墙的eth0网卡上

[root@li ~]# route add -net 192.168.116.0/24 gw 192.168.119.132
[root@li ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.116.0   192.168.119.132 255.255.255.0   UG    0      0        0 eth0
192.168.119.0   0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.119.2   0.0.0.0         UG    0      0        0 eth0

2、外网可以ping通防火墙的两块网卡,但还是ping不通内网

[root@li ~]# ping 192.168.119.132
PING 192.168.119.132 (192.168.119.132) 56(84) bytes of data.
64 bytes from 192.168.119.132: icmp_seq=1 ttl=64 time=0.330 ms
64 bytes from 192.168.119.132: icmp_seq=2 ttl=64 time=0.491 ms
^C#可以ping通防火墙的eth0网卡
[root@li ~]# ping 192.168.116.132
PING 192.168.116.132 (192.168.116.132) 56(84) bytes of data.
64 bytes from 192.168.116.132: icmp_seq=1 ttl=64 time=0.528 ms
64 bytes from 192.168.116.132: icmp_seq=2 ttl=64 time=0.831 ms
^C#可以ping通防火墙的eth1网卡
[root@li ~]# ping 192.168.116.7
PING 192.168.116.7 (192.168.116.7) 56(84) bytes of data.
^C
--- 192.168.116.7 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4997m#内网的IP地址不能ping通

3、为什么已经设置路由了,但还是ping不通呢?

我们在这里设置了静态路由,凡是192.168.116.0的网络通通下一跳给了192.168.119.132,当我们ping192.168.116.132的时候,防火墙收到了这个报文发现这个IP地址是自己的,给了外网回应,所以可以ping通。
(这是新增路由的作用,192.168.119.132把报文给了192.168.116.132)

那为什么192.168.116.7无法ping通呢,防火墙在收到这个报文的时候,发现这不是自己的地址,没有回应。

这里就需要打开防火墙的转发功能,才可以让报文转发。

4、打开防火墙转发功能

  • 临时打开转发功能
[root@liyu ~]# cat /proc/sys/net/ipv4/ip_forward
0     #0表示转发功能关闭
[root@liyu ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@liyu ~]# cat /proc/sys/net/ipv4/ip_forward
1     #将0改为1,打开转发功能
  • 永久修改
#Centos6 :
vi /etc/sysctl.conf
将net.ipv4.ip_forward = 0修改为net.ipv4.ip_forward= 1
#Centos7 :
vi /usr/lib/sysctl.d/00-system.conf
加入net.ipv4.ip_forward=1
  • 此时用外网ping内网,可以ping通
  • 用内网ping外网也可以ping通
    注意:在此步骤前要删除之前所有的iptables规则,以防出错
[root@li ~]# ping 192.168.116.7
PING 192.168.116.7 (192.168.116.7) 56(84) bytes of data.
64 bytes from 192.168.116.7: icmp_seq=1 ttl=63 time=0.969 ms
64 bytes from 192.168.116.7: icmp_seq=2 ttl=63 time=1.63 ms
^C#此为外网ping内网
[root@localhost ~]# ping 192.168.119.5
PING 192.168.119.5 (192.168.119.5) 56(84) bytes of data.
64 bytes from 192.168.119.5: icmp_seq=1 ttl=63 time=1.11 ms
64 bytes from 192.168.119.5: icmp_seq=2 ttl=63 time=2.62 ms
64 bytes from 192.168.119.5: icmp_seq=3 ttl=63 time=1.71 ms#此为内网ping外网
  • 可以相互ping通,实现了防火墙的转发功能

3、iptables之FORWARD过滤实例

iptables作为网络防火墙时负责“过滤和转发”,过滤是在filter表中,要转发需要配置FORWARD链。

#在防火墙上配置FORWARD链,拒绝任何报文通过,此时内外网都无法访问
[root@li~]# iptables -A FORWARD -j REJECT#打开内外网的apache服务
外网:
[root@li~]# echo "OUTSIDE SERVER" > index.html
[root@li~]# cat index.html
OUTSIDE SERVER
[root@li~]# service httpd status
httpd (pid 9433) is running...内网:
[root@localhost ~]]# echo "INSIDE SERVER" > /var/www/html/index.html
[root@localhost ~]]# cat /var/www/html/index.html
INSIDE SERVER
[root@localhost ~]# service httpd status
httpd (pid 3238) is running...#配置访问规则,允许内网可以访问外网的web服务
[root@li ~]# iptables -I FORWARD -s 192.168.116.0/24 -p tcp --dport 80 -j ACCEPT
[root@li ~]# iptables -I FORWARD -d 192.168.116.0/24 -p tcp --sport 80 -j ACCEPT
#配置访问规则,允许外网可以访问内网的web服务
[root@li ~]# iptables -I FORWARD -s 192.168.119.0/24 -p tcp --dport 80 -j ACCEPT
[root@li ~]# iptables -I FORWARD -d 192.168.119.0/24 -p tcp --sport 80 -j ACCEPT#此时查看防火墙的规则
[root@liyu ~]# iptables -nL
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            192.168.119.0/24    tcp spt:80
ACCEPT     tcp  --  192.168.119.0/24     0.0.0.0/0           tcp dpt:80
ACCEPT     tcp  --  0.0.0.0/0            192.168.116.0/24    tcp spt:80
ACCEPT     tcp  --  192.168.116.0/24     0.0.0.0/0           tcp dpt:80
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

隐藏问题:如何安装apache?

#yum install httpd    安装
#service httpd restart      重启

iptables之forward转发相关推荐

  1. CentOS 7 下用 firewall-cmd / iptables 实现 NAT 转发供内网服务器联网

    自从用 HAProxy 对服务器做了负载均衡以后,感觉后端服务器真的没必要再配置并占用公网IP资源. 而且由于托管服务器的公网 IP 资源是固定的,想上 Keepalived 的话,需要挤出来 3 个 ...

  2. linux服务器数据转发,Linux云服务器如何使用iptables做流量转发?

    在云服务器的日常使用过程中,从老服务器迁移数据到新服务器是不可避免的一项运维操作.在新老服务器交替的迁移过程中,由于域名解析生效需要一段时间,难免出现部分流量仍然请求到老服务器上的情况,造成数据出现衔 ...

  3. iptables 设置端口转发/映射

    iptables 设置端口转发/映射 网络拓扑 服务器A有两个网卡内网ip:192.168.1.3外网ip:10.138.108.103本地回环:127.0.0.1服务器B有网卡,8001提供服务内网 ...

  4. linux设置mysql防火墙端口映射_Linux防火墙默认是关闭3306端口,iptables实现端口转发、端口映射及双向通路...

    iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...

  5. redirect(重定向)和forward(转发)的区别

    redirect(重定向)地址栏会发生变化,forward(转发)地址栏路径不变; redirect(重定向)可以访问其他站点(服务器)的资源,forward(转发)只能访问当前服务器下的资源; re ...

  6. iptables nat 技术转发

    NAT 一. 什么是 NAT NAT(Network Address Translation)译为网络地址转换.通常路由器在转发我们的数据包时,仅仅会将源MAC地址换成自己的MAC地址,但是NAT技术 ...

  7. 利用iptables实现端口转发

    文章目录 1. 前置知识 1.1 iptables 2. 实现 2.1 本地端口转发 2.2 分流 2.3 远程端口转发 参考文章 1. 前置知识 端口转发条件:机器的root权限 远程转发的时候,机 ...

  8. linux访问ftp带端口,使用iptables做端口转发访问ftp

    用iptables做端口转发是个很实用的功能,可以让我们忽略协议细节而实现透明转发,对于加密的数据传输更是好用. ftp协议不同于http协议,因为ftp的控制端口和数据端口是分离的,在被动模式下,数 ...

  9. 控制iptables的nat转发端口的实现

    [第一.需求描述]      员工通过办公网络的网关服务器(linux)192.168.1.250的snat访问另外一个局域网:安全中心(10.1.1.0/24),但是为了提高安全性,只允许访问安全中 ...

  10. Linux ip forward转发问题总结

    最近在调试一个虚拟网络,遇到一些转发难题,作个汇总. 1.用tcpdump抓包,确认已经收到报文.但是发不出报文.收不到的情况这里不讨论:能发出报文但是对方收不到可能是路由错了,也可能是接收方的问题, ...

最新文章

  1. 线程在Linux中的实现
  2. selenium python (八)定位frame中的对象
  3. 什么是Scanner?next()和hasNext() ? nextLine()和hasNextLine()?
  4. 基于python的打印进度条、计算用时
  5. 命令行切换到conda环境_Anaconda命令行常用操作
  6. 开启mapper接口扫描,添加分页插件
  7. WordPress Kyma插件里Connect和disconnect按钮的动态显示逻辑
  8. 【牛客 - 369A】小D的剧场(线性dp)
  9. DPDK 跟踪库 CTF格式
  10. excel函数调用其他sheet单元格
  11. C# 6.0 新特性
  12. php 异步执行脚本,PHP语言实现脚本异步执行_PHP教程
  13. 微会动平台与微云推战略携手赋能企业数字营销推广与业绩增长闭环
  14. robot framework接口自动化测试post请求
  15. m3u8播放器 android,在android中播放m3u8视频
  16. nginx.conf中的fastcgi_pass
  17. 6月9日の勉強レポート
  18. 微信小程序-----解决swiper默认高度150px
  19. 度小满金融与南京银行牵手,背后有三层深意
  20. 3016 质子撞击炮 II

热门文章

  1. 网上找的更具纬度经度算计两点之间的距离,得到的结果不准确, 小程序获取用户位置信息返回的纬度经度与实际位置不正确。
  2. python编程竞赛规则_第十一届蓝桥杯Python规则及样题
  3. zkLedger: Privacy-Preserving Auditing for Distributed Ledgers zkLedger:保护分布式分类帐的隐私审计
  4. c语言程序设计21点扑克牌,C语言程序设计 21点扑克牌游戏.doc
  5. 影响手机成像质量的因素
  6. dw cs5 html,dreamweaver cs5网页制作图文教程
  7. Python-从txt中获取所有带有书名号的内容,并去除重复内容
  8. 网络服务(5)——usb网卡名称修改(RK3399 Ubuntu)
  9. 【清单】边角知识清单
  10. 【软件版本】软件版本GA、RC、Beta、Alpha等的详细解释和含义