静态路由
1.准备三台虚拟机
第一台机器:主机名是network01 有一个IP地址,是10.0.0.11
第二台机器:主机名是network02 有两个IP地址。一个是10.0.0.12 一个是172.16.1.12 (lan区段)
第三台机器:主机名是network03 有一个IP地址。是172.16.1.13
关于网卡配置文件的标准:
是不能有网管(就是静态路由的一种)和dns
TYPE="Ethernet"
BOOTPROTO="static"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="192.168.11.88"
NETMASK="255.255.255.0"
然后对三台虚拟机:
第一台:hostnamectl set-hostname network01
bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
还是去除后三行,不要网关和dns,然后改IP:10.0.0.11
systemctl restart network
第二台:hostnamectl set-hostname network02
bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
还是去除后三行,不要网关和dns,然后改IP:10.0.0.12
cp ifcfg-eth0 ifcfg-eth1 (添加网卡)
vim /etc/sysconfig/network-scripts/ifcfg-eth1
还是去除后三行,不要网关和dns,然后改IP:172.16.1.12
systemctl restart network
第三台:hostnamectl set-hostname network03
bash
vim /etc/sysconfig/network-scripts/ifcfg-eth0
还是去除后三行,不要网关和dns,然后改IP:172.16.1.13
systemctl restart network
最后在第二台上检测
ping 10.0.0.11 -c3
ping 172.16.1.13 -c3
ip a / ip addr 查看网络
不同网段之间,是需要路由器来联通。如果没有路由器,就会出现,网卡不可用的报错。
有的软路由就是linux,freebsd unix 。所以我们可以通过net2来充当路由器的功能,打通1和3之间的信息传输
roule -n (查看静态路由)
ip route (查看静态路由)
并且可以知道,每一个IP地址,都会配一个169.254.0.0
这个169.254.0.0 作用是相当于路由器,如果dhcp获取不到地址时,就会自动分配一个地址
直链路由:就是直接通过arp广播就能联通的。
静态路由:就是告诉计算机,你发出的包,去往其他地方,应该怎么走。给你一个规则。
添加路由的命令
route add -net (指定网段)
gw (代表经过谁)(是需要经过自己在局域网内,能够得着的离另一个网段最近的端口)
经路由,能network01 到network03
只是做到了拼通,1拼通了2。
但我还想拼通3,进行数据传输。
但是现在在network1拼3,只会停住,是因为数据包发出了。不知道有没有收到。
网络的规则:
1.数据包,有来有回网络就能通了
系统直接丢掉数据包:
1.数据包不是找自己的数据包
2.不知道怎么回复的数据包
所以:先查看,数据包是不是被network02给丢弃了。
用sysctl 调整内核的参数 用来优化系统。
-a 查看全部内核参数
sysctl net.ipv4.ip_forward=1 (在等于0 的时候,代表不是找自己的包丢掉)
打开了network02 内核转发参数,数据包才开始到达network03
然后数据可以到达03 了。但是在01上拼,还是会停住,就需要知道,计算机在不知道怎么回复的时候,数据包会被丢掉,所以在03在拼01.发现网络不通。
是因为03没有回去的路由,不知道怎么回去。
route add -net 10.0.0.0/24 gw 172.16.1.12 (找10网段,通过172.16.1.12这个端口)
然后就可以通了
总结:假设是四台。
发送包的第一台机器,一定要添加一个路由信息,然后指明自己要去哪,然后到的第一个端口是谁。
然后在第二台机器上,首先你需要打开自己的接收信息包,就算不是自己的,也不能直接丢掉。然后也需要写一个路由,也写出想去到哪个网段,经过的端口是谁。
然后到了第三台机器,首先也是先打开自己的接收信号包。然后你是有两个网段,可以直接和第四台用一个网络,所以你不用在写要去哪。
到了最后这台,你收到第一台的请求,你需要回复,要不然他收不到你的信息,只会焊住。所以。你需要写自己要往哪里回,然后经过的第一个端口。而这个时候,回到了第三台机器。其实这个时候相当于变成了,第四台机器对第一台的请求了。那么第三台也需要写自己是回哪,经过的端口是谁,到了第二个,第二个也是两个网段,和第一个电脑是用一个,然后就通了。
但是有一点,这些都是临时的,一旦重启,全部都没了。
所以,我们需要添加一个route-etho文件
然后ip route 找到对应的静态路由,直接重定向到文件中,重启网络,还是可以查到。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
iptable 软件防火墙
iptable 和firewalld 的区别
都是通过调用内核netfilter模块,只是firewalld 是傻瓜版的。
iptable:四表五链
四表: filter表 过滤数据包
nat表 实现nat上网,地址转换
mangle 修改数据包
raw 追踪数据包
五链:prerouting 进入的匹配数据包的规则 地址转换
input 进入的数据包过滤
output 出去的数据包过滤
postrouting 出去的地址转换
forward 默认是允许的。是用来做转发数据包的(如果不允许,数据包永远过不去)
iptables -L 查看iptable规则
iptables -P FORWARD DROP 修改forward链的默认规则
iptabile -I 插入一条规则,每一次插入就在最上边
iptable -A 在原有的基础上追加一条规则
iptable -D 删除规则
[root@oldboy ~]# iptables -I FORWARD --source 10.0.0.11 --destination 172.16.1.13 -j ACCEPT
防火墙防护模式:
黑名单:逛公园。 穿戴不整齐的都不让进
iptables -I INPUT --source 10.0.0.1 -j DROP
(添加一个规则,把原地址10.0.0.1的所有数据包给拒绝)
白名单:电影院模式。只有票的才能进入
网站服务器:
默认的模式是黑名单(只有在黑名单上的人才不能访问)
所有人都可以访问80端口
只允许指定的IP可以访问22端口
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
在这个链插入 原IP 指定协议 目的端口 动作接收
iptables -I INPUT --protocol tcp --dport 22 -j DROP
在插入 协议 目的端口 动作拒绝 所有人都拒绝
iptable生效的规则就是从上往下。
所以如果最后第二步写拒绝,那么相当于在生效的时候,先生效了全部拒绝,那么第一个接收就不起作用了。所以可以用-A,添加到规则后边
白名单模式:默认规则是拒绝
所有人都可以访问80端口
只允许指定的IP可以访问22端口
iptables -F
iptables -I INPUT --source 10.0.0.1 --protocol tcp --dport 22 -j ACCEPT
iptable s -I INPUT --protocol tcp --dport 80 -j ACCEPT
iptables -P INPUT DROP 修改链的动作
OUTPUT链 (出去的数据包可以直接拒绝然后让它出不去)
iptables -F
iptables -I OUTPUT --destination 14.215.177.38 -j DROP
指定链 目的IP 动作拒绝