作者:kuqu00 | 来源:互联网 | 2023-09-05 09:59
拥有”过滤功能”的链只有3条,INPUT、OUTPUT、FORWARDiptables实现网络防火墙环境准备:使用一台主机充当防火墙,这台主机有两块网卡,左边模拟互联网上的主机,右
iptables实现网络防火墙
环境准备:
使用一台主机充当防火墙,这台主机有两块网卡,
左边模拟互联网上的主机,右边模拟局域网里面的主机。用一个防火墙将他们隔离开。
环境配置:
#左边机器的配置
#仅主机模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
NAME=ens160
DEVICE=eth0
OnBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.6 #网关指向防火墙的左边网卡
NETMASK=255.255.255.0
GATEWAY=192.168.0.8
#模拟局域网里面的主机配置
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=10.0.0.11
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙的ip地址
DNS1=180.76.76.76
yum install httpd -y #安装httpd服务用于测试
[root@CentOS8 ~]# cat /var/www/html/index.html
lan1
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
OnBOOT=yes
IPADDR=10.0.0.10
PREFIX=24
GATEWAY=10.0.0.8 #网关指向防火墙的ip地址
DNS1=180.76.76.76
[root@CentOS8 ~]# yum install httpd -y #安装httpd服务用于测试
[root@CentOS8 ~]# cat /var/www/html/index.html
lan1
#防火墙配置,需要两张网卡
#NAT模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
OnBOOT=yes
BOOTPROTO=none
IPADDR=10.0.0.8
NETMASK=255.255.255.0
#仅主机模式
[root@CentOS8 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE=Ethernet
Device=eth1
NAME=eth1
OnBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.8
NETMASK=255.255.255.0
测试:
192.168.0.6 ping 10.0.0.10
发现没法ping通,因为没有开启转发功能,默认就把不是给它的报文丢弃了。
[root@CentOS8 ~]# sysctl -a | grep "net.ipv4.ip_forward"
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
#开启网络转发功能
[root@CentOS8 ~]# sysctl -w net.ipv4.ip_forward=1 #临时生效
net.ipv4.ip_forward = 1
#永久生效的方法:
[root@CentOS8 ~]# vim /etc/sysctl.conf --->net.ipv4.ip_forward = 1
实现拒绝从外往里进,但是可以从内往外出。
iptables -A FORWARD ! -s 10.0.0.0/24 -d 10.0.0.0/24 -m state --state NEW -j REJECT
#在filter表的FORWARD这个链上设置规则,源地址不是10.0.0.0网段,目标地址是10.0.0.0网关的报文,并且报文的状态不是NEW(第一次连接),就同意。
实现外网主机能访问局域网内特定主机的特定服务
方法一:
[root@CentOS8 ~]# iptables -A FORWARD ! -s 10.0.0.0/24 -d 10.0.0.0/24 -m state --state NEW -j REJECT #只要是外网连接都不可以
[root@CentOS8 ~]# iptables -I FORWARD ! -s 10.0.0.0/24 -d 10.0.0.10 -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT #允许连接10.0.0.10的80端口
方法二:
[root@CentOS8 ~]# iptables -I FORWARD -d 10.0.0.0/24 -j REJECT
[root@CentOS8 ~]# iptables -I FORWARD -d 10.0.0.10 -p tcp --dport 80 -j ACCEPT
中间的防火墙是路由器+防火墙的功能