linux网络基础
学习linux,网络基础尤为关键,这是架设服务器的根基,没有网络,就没有服务。
简单介绍下网络常用的命令
ifconfig:传统的配置网络接口的命令
route:主要是配置路由功能
ip:集成了网络接口和路由配置,建议使用这个命令
hostname:设置主机名
ping:测试网络的连通性
host:dns信息查询
nslookup:dns解析查询
tcpdump:抓包工具,类似wireshark
netstat:查看网络连接状态
ss:查看网络连接状态,推荐使用
1 ip路由
网络属于内核的功能,网卡信息内核识别的。
网卡命名
网卡在centos6命名规则的配置文件:
/etc/udev/rules.d/70-persistent-net.rules7
可以在这里修改网卡的名字:
ip地址:
私有地址:
A类10.0.0.0/8
B类172.16.0.0/16-172.31.0.0/16
C类 192.168.0.0/24-192.168.255.0/24
A类: 255.0.0.0, 8:
0 000 0001 - 0 111 1111
127个A类,127用于回环,1-126
2^7-1个A类
容纳多少个主机:2^24-2
主机位全0:网络地址
主机位全1:广播地址
B类:255.255.0.0, 16
10 00 0000- 10 11 1111
128-191
129.1.0.0.
130.1.0.0
64个B类,2^14个B类网
容纳多少个主机:2^16-2
C类:255.255.255.0, 24
110 0 0000 - 110 1 1111
192-223
32个C类, 2^21个C类网
容纳多个少个主机:2^8-2
D类:
1110 0000 - 1110 1111
224-239
E类:
240-255 用于科学实验
169.254.0.0
上面这个是当dhcp没有生效之后会自动随机获取的地址,是ICANN组织预留的,和本地私有Ip地址一样(windows)
网络服务脚本:
Usage: /etc/init.d/network {start|stop|status|restart|reload|force-reload}
网络配置文件:
网络功能配置文件:
/etc/sysconfig/network
NETWORKING=yes #是否开启网络功能
HOSTNAME=localhost.localdomain #主机名
网卡配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 关联的设备名称,要与文件名的后半部“INTERFACE_NAME”保持一致;
BOOTPROTO={static|none|dhcp|bootp}: 引导协议;要使用静态地址,使用static或none;dhcp表示使用DHCP服务器获取地址;
IPADDR=: IP地址
NETMASK=:子网掩码
GATEWAY=:设定默认网关;
ONBOOT=:开机时是否自动激活此网络接口;
HWADDR=: 硬件地址,要与硬件中的地址保持一致;可省;
USERCTL={yes|no}: 是否允许普通用户控制此接口;
PEERDNS={yes|no}: 是否在BOOTPROTO为dhcp时接受由DHCP服务器指定的DNS地址;
DNS1= : dns服务器地址,也可以配置在这里
DNS2=
域名配置文件:
/etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
例子:
[root@localhost ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 114.114.114.114
路由配置文件:
/etc/sysconfig/network-scripts/route-ethX
默认是没有的,需要手动新建文件
注意:1 .对应的网络nexthop一定要是这个ethX对应接口IP的网络,不然无法生效
2.由于默认网关是当配置ip的时候则会生效,假如2个接口,两个网关,建议
route add default gw nexthop #来手动指定
或者是一个接口不要设置网关即可
添加格式一:
DEST via NEXTHOP
例子
[root@localhost network-scripts]# vi route-eth0
default via 192.168.80.2
192.168.10.0/24 via 172.16.0.1
添加格式二:
ADDRESS0=
NETMASK0=
GATEWAY0=
例子:
[root@localhost network-scripts]# vi route-eth0
ADDRESS0=192.168.20.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.80.100
1.1 ifconfig
ifconfig
ifconfig命令
功能:配置网络接口ip,mtu等相关网卡信息
语法:
ifconfig [ethX]
ifconfig ethX IP/MASK [up|down]
配置的ip地址立即生效,但是重启则失效
192.168.1.1/24
192.168.1.1/255.255.255.0
常用的选项
--a: 显示所有接口的配置住处
默认是up的网络接口
设置虚拟辅助网卡:
ifconfig eth0:1 192.168.1.1/24 up
删除虚拟辅助网卡
ifconfig eth0:1 down
例子:
1.显示开启的网卡up
ifconfig
2.显示所有的网卡
ifconfig –a
3显示特定的网卡
ifconfig eth0
4.设置网卡ip地址
ifconfig eth0 192.168.1.1/24 up
ifconfig eth0 192.168.1.10/255.255.255.0 up
1.2 route
route
route命令
功能:配置和查看路由(临时生效)
语法:
查看路由 route –n
添加路由 route add {-host|-net} DEST gw NEXT-HOP [dev ethX]
删除路由 route del {-host|-net} DEST
其中default == 0.0.0.0/0
例子:
1.查看路由
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
2.添加主机路由
[root@localhost ~]# route add -host 192.168.10.8 gw 172.16.0.1
3.添加网络路由
[root@localhost ~]# route add -net 192.168.100.0/24 gw 172.16.0.1 dev eth1
4.添加默认路由
[root@localhost ~]# route add default gw 192.168.80.2
5.删除主机路由,网络路由和默认路由
[root@localhost ~]# route del default
[root@localhost ~]# route del -host 192.168.10.8
[root@localhost ~]# route del -net 192.168.100.0
[root@localhost ~]# route del -net 192.168.100.0/24
1.3 ip
ip
ip命令
功能:集成ifconfig和route的功能
语法:
ip [ OPTIONS ] OBJECT { COMMAND | help }
常用object:
link:网络接口属性
addr:协议地址
route:路由
link
show
ip [–s]link show [dev] #显示接口统计信息
set
ip link set dev [up|down] #启动关闭接口
ip link set dev mtu length #设置接口IP的mtu大小,以太网要小于1500
ip link set dev name devname #设置dev的名字
注意:修改网卡名字,需要先关闭网卡,修改完成,重启
addr
add
ip addr add ADDRESS dev DEV
broadcast {地址|+} #+是有系统根据这个设置自行计算
如果不指定,则广播地址为全0
label name 设备设置一个别名,例如eth0:0
scope :
global:允许所有的连接
site:只允许ipv6,来自本机的连接
link :只允许本设备的自我连接
host:只允许本机内部连接
默认是这个globe,通过ip addr show
ip addr add 172.16.0.1/16 dev eth2 broadcast 172.16.255.255
ip addr add 172.16.0.2/16 broadcast 172.16.255.255 dev eth2 label eth2:1# secondary地址
del
ip addr del ADDRESS dev DEV
broadcast {地址|+} #+是有系统根据这个设置自行计算
label name 设备设置一个别名,例如eth0:0
scope :
global:允许所有的连接
site:只允许ipv6,来自本机的连接
link :只允许本设备的自我连接
host:只允许本机内部连接
默认是这个global 肯定使用global
删除地址只要能唯一指定该地址即可,不需要写出全命令
ip addr del 172.16.0.2/16 dev eth2
ip addr del 172.16.0.2/16 broadcast 172.16.255.255 dev eth2 label eth2:1
show
ip addr show dev DEV
利用这个就可以查询到一个网卡的辅助ip了ip addr show dev eth0
或者是这个ifconfig可以查询到
ip addr show
ip addr show eth0
flush 删除
ip addr flush dev DEV to PREFIX
ip addr flush dev eth0 to 10.28.28/24 即删除了
route
show
ip route show|list
add
ip addr add DEST via NEXTHOP dev DEV
ip route add 192.168.10.0/24 via 192.168.80.8 dev eth0
ip route add default via 192.168.80.2
注意:这个下一跳一定要和这个出接口是同个网段的,默认路由不用指定出接口
del
ip addr del DEST
ip route del 192.168.10.0/24
ip route del default
replace
ip addr replace DEST via NEXTHOP dev DEV
ip route replace 192.168.10.0/24 via 192.168.80.80 dev eth0
常用的选项
-s :统计更多输出数据 == ifconfig eth0
例子:
link的设置
1.设置接口的mtu值为1480
[root@fireward ~]# ip link set dev1 mtu 1488
2.显示接口的信息
[root@fireward ~]# ip link show eth1
3: eth1:
link/ether 00:0c:29:3e:58:cd brd ff:ff:ff:ff:ff:ff
3.修改eth1的名字为mydev,并修改mtu为1500
[root@fireward ~]# ip link set dev eth1 down
[root@fireward ~]# ip link set eth1 name mydev
[root@fireward ~]# ip link show mydev
3: mydev:
link/ether 00:0c:29:3e:58:cd brd ff:ff:ff:ff:ff:ff
[root@fireward ~]# ip link set mydev mtu 1500
注意:修改了网卡名字之后,通过服务service network restart重启对其无效,可以手动重启
addr的设置
route的设置
1.4 ethtool
ethtool
ethtool命令
功能:显示网络接口的属性信息
语法:
ethtool [options] dev
常用的选项
-S :显示网络接口的统计信息
例子:
1.显示这个接口的电器信息等
2显示网络接口的统计信息
1.5 traceroute命令
traceroute
traceroute命令
功能:跟踪路由经过的节点
语法:
traceroute IP|HOST
mtr
mtr命令
功能:动态跟踪路由经过的节点
语法:
mtr IP|HOST
2 ping
ping
ping命令
功能:查看网络的连通性
语法:
ping [option] ip
常用的选项
-c num :设定ping的次数,默认一直ping
-s packetssize : 包大小
-i :设置ping包的发送interval root才有权限设置小于0.2s
-n: 只是输入这个ip ,不去域名解析,快速,推荐
-t: ttl set the ip time to live,ttl值
-W num :等待对方响应的秒数
-M {do|dont}: 主要检测网络的MTU数值的大小
do: 不让这个数据包重新拆装和打包
dont:代表不传送这个DF标志,表示数据包可以重新拆包和打包
例子:
#只ping 8个包
ping -c 8 8.8.8.8
#设置ttl值为2,丢失
ping -t 2 8.8.8.8
#不做域名解析,速度比较快
ping -n 168.95.1.1
#ping主机,会做域名解析
ping www.baidu.com
#0.02s发送一个icmp包
ping -i 0.02 8.8.8.8
#等待对方0.3秒的时间来响应数据包
ping -W 0.3 8.8.8.8
#发送数据包大小为1000,数量为2,不拆封数据包的icmp包
ping -c 2 -s 1000 -M do www.baidu.com #找出最大的MTU
如果有响应就是可以接收,如果无响应就是这个mtu太大了
3 dns相关的命令
linux服务器指定dns服务器的方法为:/etc/resolv.conf
/etc/resolv.conf
nameserver DNS_IP_1
nameserver DNS_IP_2
指定本地域名解析/etc/hosts文件
配置格式为:主机IP 主机名 主机别名
192.168.80.250 www.test.com
host
host命令
功能:dns解析工具,可以ip-host host-ip
语法:
host [OPTION] server
常用的选项
-a :显示详细信息
-T : 使用tcp查询 默认是53udp
-w seconds :等待时间
-t RT :查询名称的解析结果
RT: A NS SOA SIG CNAME
例子:
1.解析谷歌的域名服务器
2.查看百度的A记录对应的dns服务器ip
3.查看百度的NS服务器
nslookup
nslookup命令
功能:直接或者交互查询名称服务器,ip-host host-ip
语法:
nslookup #交互
nslookup [option] server
常用的选项
-query=type{mx,cname ,A}:查看对应记录的名称对应服务器ip
例子:
1.直接查询谷歌域名服务器的域名为
2.查询百度的ns服务器
3.交互查询
4 tcpdump
tcpdump
tcpdump命令
功能:数据包捕获工具
语法:
tcpdump [-AennqX] [-i 接口] [-w 存储文件名]
[-r 文件] [所要摘取的数据包数据格式]
默认是不停止一直监听的
常用的选项
-A:数据包的内容以ASCII码打印,通常用来抓取WWW服务
-c packets :exit 知道收到这么多的包后
-e :使用数据链路层的MAC数据包来显示
-i interface : 监听的网络接口
-n :可以防止使用域名解析,速度快
-nn:直接使用ip:port ,不使用这个域名服务
-r file :从这个file文件读出数据包文件,通过-w保存的文件
-w 存储的文件名:把抓到的数据包保存成这个文件
-q: quick quite output,输入简短的数据包信息
-X : 十六进制输出hex ASCII 数据包信息,这个就类似wireshark查看密码信息了
-XX :输出十六进制的ASCII数据包信息,包括包头
所要摘取的数据包数据格式:
host ip
host hostname
src host hostname|ip
dst host hostname|ip
src net netnum
dst net netnum
tcp port num
udp port num
ip host ip
gateway host
{ip|icmp|igrp|rip|udp|tcp}
逻辑组合 and or not
例子:
1.捕获eth0接口的所有数据包到屏幕
[root@fireward ~]# tcpdump -i eth0
2.捕获发送给目的ip192.168.80.253的数据包
[root@fireward ~]# tcpdump host 192.168.80.253
3.抓取特定协议的数据包
# tcpdump -i eth1 -nn arp
# tcpdump -i eth1 –X ip
# tcpdump -i eth1 –XX tcp
# tcpdump -i eth1 –nn udp
# tcpdump -i eth1 –v icmp
4.截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.37.28.11 and \(218.119.10.2 or 118.52.25.20\)
5.如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
6.将捕获的数据包保存到文件中
[root@fireward ~]# tcpdump -nn -XX -i eth0 -w /tmp/test tcp port 22
7.将保存的特定的文件读取出来,直接打开无法查看
[root@fireward ~]# tcpdump -r /tmp/test
5 TCP相关命令
5.1 三次握手四次断开图解
5.2 netstat
netstat
netstat命令
功能:查看网络连接状态,路由,接口等统计信息
语法:
netstat [option]
常用的选项
-r :打印路由表 == route –n
-t :显示tcp数据包连接
-u :显示udp的数据包连接
-l :显示正在监听的服务
-a:显示所有连接
-n:直接显示FQDN ip:port,不做域名解析
-p:显示进程号和进程名
-c:每隔一秒显示一次,类似监控
建议使用命令watch –n second command 来监控
watch –n 2 netstat –ntup
统计类信息显示:
-r 统计路由表信息
-g:统计多播组的信息
-i:统计all network interfaces tableinformation
例子:
1.显示当前的路由表
2.显示正在监听的tcp和udp连接,显示pid
[root@localhost ~]# netstat –ntlpu
3.显示本机所有的网络连接,包括socket类
[root@localhost ~]# netstat -an
5.3 ss
ss
ss命令
功能:显示linux网络连接的状态,同netstat,信息更详细
语法:
ss [option]
常用的选项
-a :显示所有套接字
-l :显示正在监听的套接字
-n :不做域名解析
-p :显示套接字进程信息
-t : 只显示tcp连接
-u :只显示udp连接
-o :显示套接字计时器信息,已建立的连接
-m :显示套接字的内存使用情况,已建立的连接
-V :显示版本
-h :显示帮助信息
-4 :只显示ipv4
-6: 只显示ipv6
例子:
1.显示已经建立的连接的计时器信息
2.显示已经建立的连接的内存使用情况
3. 过滤tcp连接状态中源端口或目的端口是22的