iptables之forward
阿新 • • 發佈:2018-04-01
iptables forward1. forward鏈的作用
防火墻網卡1與客戶端在一個物理網絡,ftp服務器與http服務器與防火墻網卡2在同一物理網絡。
四臺主機防火墻規則都清空,默認規則都為ACCEPT,僅充當防火墻的主機FORWARD鏈默認規則為DROP。且SELinux與firewalld服務關閉。
2. 實現
1. forward鏈的作用
根據數據報文的流向,若數據報文是由本機轉發的則會經由以下幾個鏈prerouting --> forward --> postrouting。
forward實現的是數據轉發的功能,當數據報文經過本機時,網卡接收數據報文至緩沖區,內核讀取報文ip首部,發現報文不是送到本機時(目的ip不是本機),由內核直接送到forward鏈做匹配,匹配之後若符合forward的規則,再經由postrouting送往下一跳或目的主機。
2. 實現
2.1 試驗環境:
試驗環境如上圖
四臺主機防火墻規則都清空,默認規則都為ACCEPT,僅充當防火墻的主機FORWARD鏈默認規則為DROP。且SELinux與firewalld服務關閉。
~]# systemctl stop firewalld #關閉firewalld ~]# systemctl disable firewalld #禁止firewalld服務開機啟動 ~]# iptables -P FORWARD DROP #FORWARD默認規則置為DROP ~]# setenforce 0 #關閉selinux
2.2 試驗步驟
- 防火墻開啟核心轉發
  ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
- 實現1.1.1.0網絡與192.168.1.0網絡的通信
客戶端添加路由規則:~]# route add -net 192.168.1.0/24 gw 1.1.1.1
http服務器與ftp服務器分別添加規則
~]# route add -net 1.1.1.0/24 gw 192.168.104
-
開放1.1.1.0網絡對192.168.1.0網絡的回顯請求
~]# iptables -A FORWARD -s 1.1.1.0/24 -d 0/0 -p icmp --icmp-type 8 -j ACCEPT #放行1.1.1.0網絡的主機對任意主機的回顯請求(ping請求) ~]# iptables -A FORWARD -s 0/0 -d 1.1.1.0/24 -p icmp --icmp-type 0 -j ACCEPT #開啟任意主機至1.1.1.0網絡主機的ping回顯響應(ping響應)
完成操作後如下圖:
若基於狀態追蹤機制實現以上功能則方法如下:~]# iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT #對狀態是ESTABLISHED狀態的相關請求放行 ~]# iptables -A FORWARD -s 1.1.1.0/24 -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT #放行來自1.1.1.0網絡,狀態是NEW的icmp回顯請求(ping請求)
完成後效果同上圖(需事先清空防火墻)
- 基於狀態追蹤機制實現1.1.1.0網絡對192.168.1.0網絡80、21端口的請求(需服務器支持狀態追蹤機制)
~]# iptables -R FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT #把第3步forward鏈第一條規則修改為放行已經連接狀態地址的連接和相關聯的連接 ~]# modprobe nf_conntrack_ftp #ftp服務器加載nf_conntrack_ftp模塊 ~]# lsmod | grep ^nf_conntrack_ftp #查看已加載模塊中是否有nf_conntrack_ftp nf_conntrack_ftp 12049 0 ~]# iptables -A FORWARD -s 1.1.1.0/24 -d 0/0 -p tcp -m multiport --dport 21,80 -m state --state NEW -j ACCEPT
iptables之forward