首先保证yum挂载及配置正常:创建本地yum仓库
为了让iptables单独生效,建议先关闭firewalld。
systemctl stop firewalld
开启iptables
systemctl start iptables
加入开机启动项
systemctl enable iptables
通过命令iptables -L可以看出,默认情况下,针对INPUT规则链,所有流量是放通(ACCEPT)的。
如果通过iptables -L看到的非清空状态,那么可以使用iptables -F INPUT进行清空。
因此可以ping通这台虚拟机,并且可以使用xshell访问,同时也能访问apache的测试页面。
命令 (注意大小写)
iptables -P INPUT DROP
此时通过iptables -L可以看出针对INPUT这个规则链的策略就已经是DROP
外部设备就无法ping通该虚拟机,并且访问该vm的所有业务全挂!!!
apache网页无法访问
ssh也不行
现在需要放通外部访问本虚拟机的一些功能,包括ping、SSH和Apache服务,其他禁止
命令
iptables -I INPUT -p icmp -j ACCEPT
iptables -L查看到一下内容
可以ping通
ssh及apache网页依旧不能访问
现在允许外部访问本机的ssh业务
命令
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -L查看
发现可以ssh了
允许访问80端口
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -L查看
可以进入apache网页了
1、如何标出顺序?
iptables -L --line
2、如何在中间插入某条规则?
假设53端口
iptables -I INPUT 2 -p tcp --dport 53 -j ACCEPT
3、过滤其实关联的是filter这个表,因此之前的命令可以等同于
iptables -t filter -I INPUT 2 -p tcp --dport 53 -j ACCEPT
防火墙策略规则是按照从上到下的顺序匹配的,因此一定要把允许动作放到拒绝动作前面,否则所有的流量就将被拒绝掉,从而导致任何主机都无法访问我们的服务。
使用iptables命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令
services iptables save
iptables -D -t 表 规则链(大写) 编号/原来的语句
iptables -D -t filter INPUT 2
或
iptables -D -t filter INPUT -p tcp --dport 53 -j ACCEPT
只是做过滤似乎还不够带劲,iptables还有一个很强大的功能,NAT
1、像路由器一样,iptables可以针对IP地址的源IP和目的IP均进行转换。
SNAT(Source NAT),修改源IP地址,针对POSTROUTING这个规则链生效;
DNAT(Destination NAT),修改目的IP地址,针对PREROUTING这个规则链生效。
2、关联的是nat这个表(调用NAT功能)
windows 7(仅主机模式) ---------
( 192.168.192.134)
------(仅主机模式)RHEL/CentOS 7(桥接)两张网卡 ( 192.168.192.134) 仅主机及桥接都自动获取即可
------桥接(192.168.123.72)
为什么现在无法访问互联网?
百度的IP地址是1.1.1.1
需要通过Windows 7访问百度,那么需要构造数据包,源IP地址是172.16.1.100,目的是1.1.1.1
Win7发现访问的不是同一网段的地址,因此需要求助网关(172.16.1.1),
数据发往网关之后,网关设备(Linux服务器),查询路由表,就往外网发送。
之后通过互联网的路由可以到达百度。百度需要返回网页数据给win7
源IP地址是1.1.1.1,目的是172.16.1.100
百度没有返回172.16.1.100的路由(因为172.16.1.100是私网地址)
有去无回!!!!
百度的IP地址是1.1.1.1
需要通过Windows 7访问百度,那么需要构造数据包,源IP地址是172.16.1.100,目的是1.1.1.1
Win7发现访问的不是同一网段的地址,因此需要求助网关(172.16.1.1),
数据发往网关之后,网关设备(Linux服务器),查询路由表,完成NAT源地址的转换,往外网发送。
源地址是192.168.124.16(公网地址),目的是1.1.1.1
此时通过互联网的路由可以到达百度。百度需要返回网页数据给win7
源IP地址是1.1.1.1,目的是192.168.124.16(公网地址)
百度有路由返回,到达Linux设备后,设备再根据NAT表象,将192.168.124.16转换成172.16.1.100
源IP地址是1.1.1.1,目的是172.16.1.100,
就可以返回给win7
配置Windows 7和RHEL/CentOS 7的IP地址,并且相互能够ping通,
Windows 7无访问外网
确保Linux虚拟机能访问外网
安装iptables,关闭firewalld,确保iptables规则为空
关闭firewalld。
systemctl stop firewalld
iptables -F 清除规则
iptables -L 查看规则
systemctl start iptables开启iptables
systemctl status iptables查看状态是否开启
开启Linux的路由存储转发功能
通过命令cat /proc/sys/net/ipv4/ip_forward查看,当回显数值为1的时候表示开启路由存储功能。
但是我这里是1就不用开,可能红帽7.4默认开着,最好一起做一遍
因此需要修改文件/etc/sysctl.conf,在尾部加入,net.ipv4.ip_forward = 1
通过命令cat /proc/sys/net/ipv4/ip_forward查看,当回显数值为1的时候表示开启路由存储功能。
使用
sysctl -p
立刻生效
默认情况下,nat表为空
iptables -L -t nat
由于需要通过NAT来访问外网,需要针对源IP地址进行修改,使用SNAT,须要在POSTROUTING规则链中配置
将源为192.168.192.0/24的地址全部转换成192.168.123.72
注意:192.168.192.0以及192.168.123.72为我电脑虚拟机的仅主机以及桥接分配的ip,请不要照抄我的,自己查看虚拟机分配的仅主机以及桥接的ip
iptables -t nat -A POSTROUTING -s 192.168.192.0/24 -j SNAT --to-source 192.168.123.72
当数据包处理到POSTROUTING这个过程(规则链)的时候(POSTROUTING),调用nat表(nat功能)(-t nat),即针对数据报文中源IP地址未172.16.1.0/24的数据(-s 192.168.192/24),将其源ip地址进行转换(-j SNAT),转换成192.168.123.72(--to-source 192.168.123.72)
通过命令 iptables -L -t nat 查看
保存iptables状态
service iptables save
数据发往网关之后,网关设备(Linux服务器),查询路由表,完成NAT源地址的转换,往外网发送。
把win7默认网关改为iptable服务的那台仅主机网卡ip
dns添加114.114.114.114
8.8.8.8
(安装apache)
yum install httpd
安装不了请查看yum仓库是否挂载:mount /dev/cdrom /mnt
或者配置错误:点我查看配置yum仓库
(仅主机模式) ( 192.168.192.135)
自动获取!
仅主机模式)RHEL/CentOS 7(桥接)两张网卡(172.16.1.1)
桥接自动获取到的ip
仅主机自动获取到的ip
互联网(192.168.123.16)
vim /etc/httpd/conf/httpd.conf 编辑文件
添加以下内容,更改为你得ip及域名
DocumentRoot /var/www/html/www
ServerName www.mamublog.com
AllowOverride None
Require all granted
DocumentRoot /var/www/html/mamublog
ServerName mamublog.com
AllowOverride None
Require all granted
在/var/www/html目录下
touch 命令创建mamublog 以及www文件夹
将网站源码文件上传到这两个文件夹中
更改hosts
vim /etc/hosts
vim /etc/sysctl.conf
加入
尾部加入:net.ipv4.ip_forward = 1
通过命令
cat /proc/sys/net/ipv4/ip_forward
查看,当回显数值为1的时候表示开启路由存储功能。
iptables -t nat -L -PREROUTING
默认情况下是没有任何策略的
iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 80 -j DNAT --to-destination 192.168.192.135:80
用二号访问ip也可以看到网页