一、Linux路由配置
如果要在不同网段直接通讯,需要添加路由,Linux添加路由命令如下:
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
- add : 添加一条路由规则;
- del : 删除一条路由规则;
- -net : 目的地址是一个网络;
- -host : 目的地址是一个主机;
- target : 目的网络或主机;
- netmask : 目的地址的网络掩码;
- gw : 路由数据包通过的网关;
- dev : 为路由指定的网络接口;
1、添加主机路由
如果想192.168.2.10主机 ping通192.168.0.8主机,则需要经过路由器2,就要在192.168.2.10的主机上添加一条到192.168.0.8的路由,添加命令如下:
route add -host 192.168.0.8 gw 192.168.2.1 dev eth0
这条命令的意思是访问192.168.0.8的主机消息都从192.168.2.1端口转发。
用route命令查看一下添加的路由:
Destination | 目标网络或目标主机。Destination 为 default(0.0.0.0 )时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1 ) |
Gateway | 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关(同一个局域网内2台主机通信不需要经过网关) |
Genmask | Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255 ,是默认路由时会设置为 0.0.0.0 |
Flags | 标志
|
Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) |
Ref | 路由项引用次数 (不在Linux内核中使用。) |
Use | 此路由项被路由软件查找的次数 |
Iface | 网卡名字,例如 eth0;要去往这个网段需要使用哪一个网络接口。也就是eth0这张网卡 |
第一条路由信息的意思就是访问主机192.168.0.8的信息都从192.168.2.1网关转发。
若要删除这条路由只需执行:
route del 192.168.0.8
2、添加网络路由
第一种添加主机路由的方式只能访问到一台目录主机,如果192.168.2.10要访问0网段的所有主机的话把0网段主机都添加一遍显然很麻烦,通过添加网络路由的方式,只要在192.168.0.10主机上添加一条0网段的网络路由即可,添加命令如下:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.2.1 dev eth0
这个目标是网络,所以需要设置子网掩码,用route命令查看一下添加的网络路由。
这条路由表示访问0网段的消息都从192.168.2.1网关转发
删除网络路由:
route del -net 192.168.0.0/24 gw 192.168.2.1
3、添加默认路由
如果2网段主机想访问其他所以网段的网络,只需要添加默认路由即可:
route add default gw 192.168.2.1 dev eth0
默认路由的意思是所有访问非2网段的信息都从192.168.2.1转发
删除默认路由:
route del default
二、Linux路由转发功能
配置Linux,使Linux也具有路由功能。
拓扑如下:
server1 IP地址配置:
server2 IP地址配置:
server-router IP地址配置:
路由器静态路由配置:
Linux要开启路由转发功能。
如果需要永久支持路由转发功能 ,修改/etc/sysctl.conf文件。
加载配置文件。
三、Linux 路由功能案例
配置路由,使两个Centos间能互相访问。
centos配置:
配置IP地址后,Linux获得自动直连路由192.168.10.0。
centos-router IP地址配置:
CentOS可以访问到路由器:
Windows可以访问直连路由器,但是访问不到CentOS:
原因是Windows流量到达CentOS后,CentOS回包时找不到192.168.20.0/24的网络的路由,只有一个缺省路由。
CentOS添加路由:
设置去往192.168.20.0网络的下一跳是192.168.10.20。
设置路由后,windows即可访问CentOS: