文章目录
Internet层协议
IP协议
ICMP协议
/proc/sys/net/ipv4/icmp_echo_ignore_all 关闭ICMP回应
ARP协议
RARP协议
基本网络配置
将Linux主机接入到网络,需要配置网络相关设置。一般包括如下内容:
主机名(hostname)
IP地址和子网掩码(IP/netmask)
路由(默认网关gateway)
主DNS服务器(dns)
次DNS服务器
CentOS 6 网卡名称
以太网:eth[0-9]
ppp:ppp[0-9]
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
ARP表
arp -n
路由表
Destination:目标网络ID,主机IP,0.0.0.0/0默认路由
Gateway:把数据报文交给下一个路由临近当前设备的接口IP
Genmask:netmask
Metric:花费越小优先级越高
Ifac:接口,表示当前设备在哪个网卡发出去,才能到达Destination
命令:route
路由管理命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
#目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1
#删除:route del
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
#目标:192.168.1.3 网关:172.16.0.1
route del -host 192.168.1.3
#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0
配置动态路由
通过守护进程获取动态路由
•安装quagga包
•支持多种路由协议:RIP、OSPF和BGP
•命令vtysh配置
命令:netstat
显示网络连接:
netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e]] [--program|-p]
[OPTION] | 注释 |
---|---|
-t | tcp协议相关 |
-u | udp协议相关 |
-w | raw socket相关 |
-l | 处于监听状态 |
-a | 所有状态 |
-n | 以数字显示IP和端口 |
-e | 扩展格式 |
-p | 显示相关进程及PID |
常用组合:
-tan, -uan, -tnl, -unl
显示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0
命令:ip
配置Linux网络属性:ip 命令(显示、操作路由,设备,路由策略和隧道)
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT ={ link | address | addrlabel | route | rule | neigh |
ntable | tunnel | tuntap | maddress | mroute | mrule |
monitor | xfrm | netns | l2tp | tcp_metrics | token | macsec }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link }|
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
命令的使用
ip link - 网卡配置
set dev/IFACE
up and down:激活或禁用指定接口(也可以ifup/ifdown)
name NETNAME(修改网卡名)
show [dev IFACE]:指定接口
ip addr - IP地址配置
add/del IP/mask dev DEVICE (添加/删除IP)
[scope {global|link|host}] - 指明作用域(全局/仅链接/本机)
[label LABEL] - 指明网卡别名
[broadcast ADDRESS]:指明广播地址
show - 查看网络
[dev DEVICE]
[label PATTERN]
[primary and secondary]
flush - 刷新网卡,使用格式同show
ip route - 路由配置
add/del NET/MASK via GATEWAY_IP [dev IFACE] [src SOURCE_IP]
default - 默认路由
flush [dev IFACE] [via GATEWAY_IP] - 清空路由表
show/list - 显示路由
实验准备
路由思维导图
虚拟机实验环境
#关闭防火墙
systemctl disable --now firewalld
#关闭selinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
重新设置网卡名
#在你的虚拟机执行以下命令,可重新设置你的网卡为eth开头,默认从eth0开始,这样方便咱们识别网卡,以便进行实验。
sed -ir '/GRUB_CMDLINE_LINUX/s@"$@ net.ifnames=0"@' /etc/default/grub
grub2-mkconfig -o /etc/grub2.cfg
配置虚拟机网卡
如图所示,实验所需三台虚拟机都需要连接两个网段,所以都需要配置两个网卡。在设置网卡时,要把对应的网卡设置到对应的网段。下面是实验的范例,都是根据路由导图走的:
PC1
eth0:172.10.0.0/16 #桥接网卡
Router1:
eth0:172.10.0.0/16 #桥接网卡
eth1:10.0.0.0/8 #仅主机网卡
Router:
eth0:10.0.0.0/8 #仅主机网卡
eth1:192.168.39.0/24 #NAT网卡
Router:
eth0:192.168.39.0/24 #NAT网卡
eth1:172.20.0.0/24 #桥接网卡
PC2:
eth0:172.10.0.0/24 #桥接网卡
配置主机
配置PC1
1.ifconfig eth0 172.10.0.10/16
2.route add -net 172.10.0.0/16 dev eth0
3.route add default gw 172.10.0.100 dev eth0
4.route -n #查看路由表
5.ip a #查看ip地址
配置PC2
1.ifconfig eth0 172.20.0.20/24
2.route add -net 172.20.0.0/24 dev eth0
3.route add default gw 172.20.0.200 dev eth0
4.route -n #查看路由表
5.ip a #查看ip地址
配置路由器
配置Router1
1.ifconfig eth0 172.10.0.100/16
2.ifconfig eth1 10.0.0.1/8
3.route add -net 172.10.0.0/16 dev eth0
4.route add -net 10.0.0.0/8 dev eth1
5.route add -net 192.168.39.0/24 gw 10.0.0.2 dev eth1
6.route add -net 172.20.0.0/24 gw 10.0.0.2 dev eth1
7.echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发协议
配置Router2
1.ifconfig eth0 10.0.0.2/8
2.ifconfig eth1 192.168.39.10/24
3.route add -net 10.0.0.0/8 dev eth0
4.route add -net 192.168.39.0/24 dev eth1
5.route add -net 172.10.0.0/16 gw 10.0.0.1 dev eth0
6.route add -net 172.20.0.0/24 gw 192.168.39.100 dev eth1
7.echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发协议
配置Router3
1.ifconfig eth0 192.168.39.100/24
2.ifconfig eth1 172.20.0.200/24
3.route add -net 192.168.39.0/24 dev eth0
4.route add -net 172.20.0.0/24 dev eth1
5.route add -net 172.10.0.0/16 gw 192.168.39.10 dev eth1
6.route add -net 10.0.0.0/8 gw 192.168.39.10 dev eth1
7.echo 1 > /proc/sys/net/ipv4/ip_forward #开启路由转发协议
就此所有的设备就全部配置好了,所有网段是可以相互ping通的,因为实验环境不同,所以具体情况具体分析。愿天下没有难写的代码!!!