Linux常用网络指令

网络参数设定使用的指令

手动/自动设定与启动/关闭 IP 参数:ifconfig, ifup, ifdown

ifconfig

ifconfig常用于修改网络配置以及查看网络参数的指令

[root@www ~]# ifconfig {interface} {up|down} <== 观察与启动接口
[root@www ~]# ifconfig interface {options} <== 设定与修改接口
选项与参数:
interface:网络卡接口代号,包括 eth0, eth1, ppp0 等等
options :可以接的参数,包括如下:
up, down :启动 (up) 或关闭 (down) 该网络接口(不涉及任何参数)
mtu :可以设定不同的 MTU 数值,例如 mtu 1500 (单位为 byte)
netmask :就是子屏蔽网络;
broadcast:就是广播地址啊!

基础示例

[zhangshiyu@localhost ~]$ ifconfig# 输出结果
# ens33为网卡代号 mtu为以太网最大传输单元 1500
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
# inet 为ipv4地址 netmask 为子网掩码 broadcast 为广播地址inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255# inet6 为ipv6地址inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)# RX packets 代表接受到网络包数量  errors代表网络包发生错误的数量 ,dropped 代表被丢失的网络包数量RX packets 63446  bytes 63343307 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0# 由本机传输的网络包数量 其余字段代表语义遇上相同,只不过传输方向相反TX packets 9302  bytes 1593829 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0# 环回口网络参数信息,不多赘述
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3668  bytes 316656 (309.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3668  bytes 316656 (309.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

临时修改某接口ip,如下所示,将lo环回口ip地址改为127.0.0.2,注意我们没有增加子网掩码、广播地址等配置,所以这些参数值都是由系统自动计算得出的


[root@localhost zhangshiyu]# ifconfig lo 127.0.0.2
# 使用ifconfig确定修改结果是否生效
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 63701  bytes 63365589 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9417  bytes 1606248 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.2  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3668  bytes 316656 (309.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3668  bytes 316656 (309.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改环回口地址,子网掩码,mtu值

[root@localhost zhangshiyu]# ifconfig lo 127.0.0.2 \
> netmask 255.255.255.255 mtu 8000
# 使用ifconfig确认修改是否生效
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 63887  bytes 63381397 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9500  bytes 1614832 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 8000inet 127.0.0.2  netmask 255.255.255.255inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3668  bytes 316656 (309.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3668  bytes 316656 (309.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@localhost zhangshiyu]#

仅仅修改以太网最大mtu的值

[root@localhost zhangshiyu]# ifconfig lo mtu 9000
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 63963  bytes 63387686 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9535  bytes 1618429 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.2  netmask 255.255.255.255inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3668  bytes 316656 (309.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3668  bytes 316656 (309.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

基于lo口,创建一个仿真的虚拟网络接口

# 如下所示格式为   ifconfig    网口:数字 ip地址等参数
[root@localhost zhangshiyu]# ifconfig lo:0 127.0.0.4
# 可以看到最终会输出一个lo:0的网口
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 64048  bytes 63394595 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9577  bytes 1622719 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.2  netmask 255.255.255.255inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3668  bytes 316656 (309.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3668  bytes 316656 (309.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.4  netmask 255.0.0.0loop  txqueuelen 1000  (Local Loopback)

将上述修改还原

/etc/init.d/network restart

如果我们希望接口直接启动,而无需配置ip,使用下述命令即可

ifconfig eth0 up

ifup、ifdown

这两条指令只能用于修改过/etc/sysconfig/network-scripts对应接口配置后,对接口进行启动和关闭所用的.注意假如你用ifconfig等命令修改过网络的话,那么ifup、ifdown可能就不会成功,因为这两条指令会将当前网络参数和上述的配置文件进行比较,若不同则不允许ifup、ifdown

# 关闭接口示例
[root@localhost ~]# ifdown ens33
Device 'ens33' successfully disconnected.# 可以看到ens33的ip消失了
[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 64366  bytes 63427667 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9731  bytes 1650547 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3892  bytes 336256 (328.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3892  bytes 336256 (328.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0# 启动接口示例
[root@localhost ~]# ifup ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)# 可以看到ens33的ip回来了
[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 64370  bytes 63428006 (60.4 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 9749  bytes 1653181 (1.5 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 3980  bytes 344032 (335.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 3980  bytes 344032 (335.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

路由修改: route

[root@www ~]# route [-nee]
[root@www ~]# route add [-net|-host] [网域或主机] netmask [mask]
[gw|dev]
[root@www ~]# route del [-net|-host] [网域或主机] netmask [mask]
[gw|dev]
观察的参数:
-n :不要使用通讯协议或主机名,直接使用 IP 或 port number;
-ee :使用更详细的信息来显示
增加 (add) 与删除 (del) 路由的相关参数:
-net :表示后面接的路由为一个网域;
-host :表示后面接的为连接到单部主机的路由;
netmask :与网域有关,可以设定 netmask 决定网域的大小;
gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
net.qiang@hotmail.com
dev :如果只是要指定由那一块网络卡联机出去,则使用这个设定,
后面接 eth0 等

不显示计算机名字,直接以ip的形式查看路由

[zhangshiyu@localhost ~]$ route -n# 输出结果
#Destination     目标网段
# Gateway         经过网关
# Genmask         子网掩码
# flags:U 代表该路由启动的,H 目标是一部主机而非某个网段,G 该路由要走网关,R 使用动态路由时,恢复路由信息的旗标,D:已经由服务或转 port 功能设定为动态路由 	M:路由已经被修改了;
# Iface该路由经过的网卡
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

注意路由的排序是由精确到模糊,所以当你配置的两条路由目标网段一致,永远只会走最上面的那条路由,如下所示,两条路由目标地址一致,但是计算机永远只会走ens33这个接口的路由

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens34

增加一条路由,注意这条路由必须是你和你计算机同网段或者是可达的,否则会报错

# 增加一条到达127网段的路由 从ens33这张网卡走
[root@localhost zhangshiyu]# route add -net 127.0.0.0 netmask 255.255.255.0 dev ens33# 可以看到这条路有添加成功了
[root@localhost zhangshiyu]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
127.0.0.0       0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

增加一条默认路由

# 增加一条默认路由 网关为127.0.0.6
[root@localhost zhangshiyu]# route add default gw 127.0.0.6# 可以看到增加了一条经过网关的默认路由
[root@localhost zhangshiyu]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         127.0.0.6       0.0.0.0         UG    0      0        0 ens33
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
127.0.0.0       0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

删除一条路由,就以笔者路由为例上文中有一条Gateway 为127.0.0.6的默认路由,Destination 为0.0.0.0所以我们的命令如下

# 删除一条Destination 为0.0.0.0 netmask 0.0.0.0 网口为ens33的路由
[root@localhost zhangshiyu]# route del -net 0.0.0.0 netmask 0.0.0.0 dev ens33# 可以看到删除成功了
[root@localhost zhangshiyu]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
127.0.0.0       0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33

网络参数综合指令: ip

这条指令可以完成上述指令的功能,且可以做更多的事情

[root@www ~]# ip [option] [动作] [指令]
选项与参数:
net.qiang@hotmail.com
option :设定的参数,主要有:
-s :显示出该装置的统计数据(statistics),例如总接受封包数等;
动作:亦即是可以针对哪些网络参数进行动作,包括有:
link :关于装置 (device) 的相关设定,包括 MTU, MAC 地址等等
addr/address :关于额外的 IP 协议,例如多 IP 的达成等等;
route :与路由有关的相关设定

列出所有的接口信息

[root@localhost zhangshiyu]# ip link show# 输出内容
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether 00:0c:29:bd:2b:9e brd ff:ff:ff:ff:ff:ff
3: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff

启动和关闭网络

# 关闭环回口
[root@localhost zhangshiyu]# ip link set lo down
# 查看ip发现lo消失
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 66790  bytes 63767299 (60.8 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 10587  bytes 1748607 (1.6 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0# 开启环回口
[root@localhost zhangshiyu]# ip link set lo up# 查看ip发现lo回来了
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 66879  bytes 63774928 (60.8 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 10641  bytes 1754435 (1.6 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 4194  bytes 362432 (353.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 4194  bytes 362432 (353.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改网卡名称

# 修改前记得将网络关闭
[root@localhost zhangshiyu]# ip link set lo down# 将lo修改为test_lo
[root@localhost zhangshiyu]# ip link set lo name test_lo# 再次启动查看ip发现名字确实修改了
[root@localhost zhangshiyu]# ip link set lo up
Cannot find device "lo"
[root@localhost zhangshiyu]# ip link set test_lo up# 查看ip发现名字确实修改了
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 67093  bytes 63792856 (60.8 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 10751  bytes 1765917 (1.6 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0test_lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 4194  bytes 362432 (353.9 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 4194  bytes 362432 (353.9 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

修改mac地址

# 将test_lo环回口改为aa:aa:aa:aa:aa:aa
[root@localhost zhangshiyu]# ip link set test_lo address aa:aa:aa:aa:aa:aa# 查看ip信息得以印证
[root@localhost zhangshiyu]# ip link show
1: test_lo: <LOOPBACK,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback aa:aa:aa:aa:aa:aa brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether 00:0c:29:bd:2b:9e brd ff:ff:ff:ff:ff:ff
3: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff

上文操作都是和网络第二层(数据链路层)相关的操作,接下来我们介绍一下网络第三层的操作

[root@www ~]# ip address show <==就是查阅 IP 参数啊!
[root@www ~]# ip address [add|del] [IP 参数] [dev 装置名] [相关参数]
选项与参数:
show :单纯的显示出接口的 IP 信息啊;
add|del :进行相关参数的增加 (add) 或删除 (del) 设定,主要有:
IP 参数:主要就是网域的设定,例如 192.168.100.100/24 之类的设定
喔;
dev :这个 IP 参数所要设定的接口,例如 eth0, eth1 等等;
相关参数:主要有底下这些:
broadcast:设定广播地址,如果设定值是 + 表示『让系统自动计算』
label :亦即是这个装置的别名,例如 eth0:0 就是了!
scope :这个界面的领域,通常是这几个大类:
global :允许来自所有来源的联机;
site :仅支持 IPv6 ,仅允许本主机的联机;
link :仅允许本装置自我联机;
host :仅允许本主机内部的联机;
所以当然是使用 global 啰!预设也是 global 啦

列出所有接口的ip参数

[root@localhost zhangshiyu]# ip address show# 输出结果
1: test_lo: <LOOPBACK,UP,LOWER_UP> mtu 9000 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback aa:aa:aa:aa:aa:aa brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host test_lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:bd:2b:9e brd ff:ff:ff:ff:ff:ffinet 192.168.0.100/24 brd 192.168.0.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::fee8:8f4e:2041:7509/64 scope link noprefixroutevalid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:75:26:83 brd ff:ff:ff:ff:ff:ff

为ens33网卡增加一个虚拟ip

# 增加一条 ip为192.168.2.33/24 广播地址为192.168.0.255 经过ens33网卡的地址
[root@localhost zhangshiyu]#ip address add 192.168.2.33/24 broadcast  +  dev ens33 label ens33:5233# 可以看到增加成功了
[root@localhost zhangshiyu]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255inet6 fe80::fee8:8f4e:2041:7509  prefixlen 64  scopeid 0x20<link>ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)RX packets 67995  bytes 63887086 (60.9 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 11217  bytes 1815310 (1.7 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0ens33:5233: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.2.33  netmask 255.255.255.0  broadcast 192.168.2.255ether 00:0c:29:bd:2b:9e  txqueuelen 1000  (Ethernet)test_lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 9000inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 4350  bytes 376116 (367.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 4350  bytes 376116 (367.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

接下来就是ip指令关于路由的操作了

# 查看当前路由表
[root@localhost zhangshiyu]# ip route show
default via 192.168.0.254 dev ens33 proto static metric 100
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.100 metric 100
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.33# 增加一条到达192.168.5.0网段的路由,交由ens33网卡处理
[root@localhost zhangshiyu]# ip route add 192.168.5.0/24 dev ens33# 查看路由,可以看到增加的路由,说明配置成功了
[root@localhost zhangshiyu]# ip route show
default via 192.168.0.254 dev ens33 proto static metric 100
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.100 metric 100
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.33
192.168.5.0/24 dev ens33 scope link
[root@localhost zhangshiyu]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33

增加一条默认路由

# 查看当前路由
[root@localhost zhangshiyu]# ip route show
\default via 192.168.0.254 dev ens33 proto static metric 100
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.100 metric 100
192.168.2.0/24 dev ens33 proto kernel scope link src 192.168.2.33
192.168.5.0/24 dev ens33 scope link# 增加一条默认路由 网关为192.168.1.254 经过ens33网卡处理
[root@localhost zhangshiyu]# ip route add default via 192.168.1.254 dev ens33
RTNETLINK answers: Network is unreachable
[root@localhost zhangshiyu]# ip route add default via 192.168.0.254 dev ens33
[root@localhost zhangshiyu]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.254   0.0.0.0         UG    0      0        0 ens33
0.0.0.0         192.168.0.254   0.0.0.0         UG    100    0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.5.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33

手动使用 DHCP 自动取得 IP 参数:dhclient(选看)

如果你是使用 DHCP 协议在局域网络内取得 IP 的话,那么是否一定要去编辑
ifcfg-eth0 内的 BOOTPROTO 呢? 嘿嘿!有个更快速的作法,那就是利用 dhclient 这
个指令~因为这个指令才是真正发送 dhcp 要求工作的程序啊!那要如何使用呢?很简
单!如果不考虑其他的参数,使用底下的方法即可:

[root@www ~]# dhclient eth0

网络侦错与观察指令

两部主机两点沟通: ping, 用 ping 追踪路径中的最大 MTU 数值

[root@www ~]# ping [选项与参数] IP
选项与参数:
-c 数值:后面接的是执行 ping 的次数,例如 -c 5 ;
-n :在输出数据时不进行 IP 与主机名的反查,直接使用 IP 输出(速度
较快);
-s 数值:发送出去的 ICMP 封包大小,预设为 56bytes,不过你可以放大此
一数值;
-t 数值:TTL 的数值,预设是 255,每经过一个节点就会少一;
-W 数值:等待响应对方主机的秒数。
-M [do|dont] :主要在侦测网络的 MTU 数值大小,两个常见的项目是:
do :代表传送一个 DF (Don't Fragment) 旗标,让封包不能重新拆包与
打包;
dont:代表不要传送 DF 旗标,表示封包可以在其他主机上拆包与打包

ping三次目标主机

[root@localhost zhangshiyu]# ping -c 3 192.168.0.107# 64 bytes 代表icmp封包大小
# icmp_seq=1 第几次探测 1代表第一次
#  ttl=128代表网络封包经过的最大跳数
# time响应时间
PING 192.168.0.107 (192.168.0.107) 56(84) bytes of data.
64 bytes from 192.168.0.107: icmp_seq=1 ttl=128 time=0.345 ms
64 bytes from 192.168.0.107: icmp_seq=2 ttl=128 time=0.352 ms
64 bytes from 192.168.0.107: icmp_seq=3 ttl=128 time=0.277 ms--- 192.168.0.107 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.277/0.324/0.352/0.039 ms
[root@localhost zhangshiyu]#

探测目标路径最大mtu值

# ping 3次 每个包都不切割,mtu大小为1000byte
[root@localhost zhangshiyu]# ping -c 3 -s 1000 -M do 192.168.0.107
PING 192.168.0.107 (192.168.0.107) 1000(1028) bytes of data.
1008 bytes from 192.168.0.107: icmp_seq=1 ttl=128 time=0.364 ms
1008 bytes from 192.168.0.107: icmp_seq=2 ttl=128 time=0.402 ms
1008 bytes from 192.168.0.107: icmp_seq=3 ttl=128 time=0.705 ms--- 192.168.0.107 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.364/0.490/0.705/0.153 ms# 同理mtu增加到1501
[root@localhost zhangshiyu]# ping -c 3 -s 1501 -M do 192.168.0.107
PING 192.168.0.107 (192.168.0.107) 1501(1529) bytes of data.
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500
ping: local error: Message too long, mtu=1500--- 192.168.0.107 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2001ms

常见以太网最大mtu值

在这里插入图片描述

两主机间各节点分析: traceroute

[root@www ~]# traceroute [选项与参数] IP
选项与参数:
-n :可以不必进行主机的名称解析,单纯用 IP ,速度较快!
-U :使用 UDP 的 port 33434 来进行侦测,这是预设的侦测协议;
-I :使用 ICMP 的方式来进行侦测;
net.qiang@hotmail.com
-T :使用 TCP 来进行侦测,一般使用 port 80 测试
-w :若对方主机在几秒钟内没有回声就宣告不治...预设是 5 秒
-p 埠号:若不想使用 UDP 与 TCP 的预设埠号来侦测,可在此改变埠号。
-i 装置:用在比较复杂的环境,如果你的网络接口很多很复杂时,才会用到
这个参数;
举例来说,你有两条 ADSL 可以连接到外部,那你的主机会有两个
ppp,
你可以使用 -i 来选择是 ppp0 还是 ppp1 啦!
-g 路由:与 -i 的参数相仿,只是 -g 后面接的是 gateway 的 IP 就是了。
# 追踪本机到百度的路由状态
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# traceroute -n www.baidu.com
traceroute to www.baidu.com (110.242.68.3), 30 hops max, 60 byte packets1  10.247.219.126  0.730 ms 10.130.126.126  0.436 ms 10.130.127.126  0.804 ms2  11.73.6.241  0.971 ms 11.73.15.93  0.900 ms
# 设置等待时间 为1秒,以及 TCP 80 端口的情况下探测路由
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# traceroute -w 1    -n -T  www.baidu.com
traceroute to www.baidu.com (110.242.68.4), 30 hops max, 60 byte packets1  10.247.218.126  0.757 ms 10.247.219.126  0.682 ms 10.247.218.126  0.758 ms2  11.73.16.45  3.663 ms * 11.73.15.117  1.492 ms3  11.95.20.137  1.011 ms 11.95.19.193  1.085 ms 11.54.243.125  0.968 ms4  10.102.35.113  5.864 ms * 116.251.124.165  1.906 ms5  * 10.54.254.73  5.134 ms 140.205.24.145  6.110 ms6  10.102.155.114  6.082 ms 61.55.133.157  10.110 ms 10.102.155.130  6.065 ms7  202.99.167.25  10.245 ms 116.251.115.61  10.158 ms 202.99.167.53  17.354 ms8  211.90.1.37  9.495 ms 61.182.145.22  16.153 ms 211.90.1.69  11.396 ms9  61.182.172.41  16.644 ms 202.99.167.53  17.375 ms  17.153 ms
10  61.182.145.26  16.081 ms * 110.242.66.182  18.371 ms
11  * 61.182.184.105  13.422 ms *
12  110.242.66.182  18.259 ms * *
13  * * *
14  * * 110.242.68.4  19.453 ms

察看本机的网络联机与后门: netstat

[root@www ~]# netstat -[rn] <==与路由有关的参数
[root@www ~]# netstat -[antulpc] <==与网络接口有关的参数
选项与参数:
与路由 (route) 有关的参数说明:
-r :列出路由表(route table),功能如同 route 这个指令;
-n :不使用主机名与服务名称,使用 IP 与 port number ,如同 route -n
与网络接口有关的参数:
-a :列出所有的联机状态,包括 tcp/udp/unix socket 等;
-t :仅列出 TCP 封包的联机;
-u :仅列出 UDP 封包的联机;
-l :仅列出有在 Listen (监听) 的服务之网络状态;
-p :列出 PID 与 Program 的檔名;
-c :可以设定几秒钟后自动更新一次,例如 -c 5 每五秒更新一次网络状态
的显示;

列出当前路由表,以ip和port的格式输出


[zhangshiyu@localhost ~]$ netstat -rn# 输出结果
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.92.254  0.0.0.0         UG        0 0          0 ens33
192.168.92.0    0.0.0.0         255.255.255.0   U         0 0          0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0
[zhangshiyu@localhost ~]$

查看当前网络联机状态以ip和port的格式输出

[zhangshiyu@localhost ~]$ netstat -an
# 输出内容
# Proto 协议是tcp还是udp
# Recv-Q:用户未接收字节数
# Send-Q: 用户未发送完成的字节数,或者说远程主机未确认收到的字节数
# Local Address:本地ip地址以及端口
# Foreign Address:远程ip地址以及端口
# State :连接状态
# ESTABLISED:已建立联机的状态;
#  SYN_SENT:请求同步;
#  SYN_RECV:远程主机收到我们的同步包
#  FIN_WAIT1:请求断开连接
#  FIN_WAIT2:该联机已挂断,但正在等待对方主机响应断线确认的封
包;
#  TIME_WAIT:该联机已挂断,但 socket 还在网络上等待结束;
#  LISTEN:通常用在服务的监听 port Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN
tcp        0      0 192.168.92.10:22        192.168.92.1:53374      ESTABLISHED
tcp        0     36 192.168.92.10:22        192.168.92.1:53373      ESTABLISHED
tcp6       0      0 :::111                  :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN
tcp6       0      0 ::1:631                 :::*                    LISTEN
tcp6       0      0 ::1:25                  :::*                    LISTEN
tcp6       0      0 ::1:6010                :::*                    LISTEN
udp        0      0 127.0.0.1:323           0.0.0.0:*
udp        0      0 0.0.0.0:872             0.0.0.0:*
udp        0      0 192.168.122.1:53        0.0.0.0:*
udp        0      0 0.0.0.0:67              0.0.0.0:*
udp        0      0 0.0.0.0:111             0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp        0      0 0.0.0.0:49417           0.0.0.0:*
udp6       0      0 ::1:323                 :::*
udp6       0      0 :::872                  :::*
udp6       0      0 :::111                  :::*
raw6       0      0 :::58                   :::*                    7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     28673    /var/run/libvirt/libvirt-sock
unix  2      [ ACC ]     STREAM     LISTENING     28675    /var/run/libvirt/libvirt-sock-ro
unix  2      [ ACC ]     STREAM     LISTENING     9219     /run/systemd/journal/stdout
unix  2      [ ACC ]     STREAM     LISTENING     28677    /var/run/libvirt/libvirt-admin-sock

查看当前启动的网络进程


[zhangshiyu@localhost ~]$ netstat -tulnp
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -
tcp6       0      0 :::111                  :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 ::1:631                 :::*                    LISTEN      -
tcp6       0      0 ::1:25                  :::*                    LISTEN      -
tcp6       0      0 ::1:6010                :::*                    LISTEN      -
udp        0      0 127.0.0.1:323           0.0.0.0:*                           -
udp        0      0 0.0.0.0:872             0.0.0.0:*                           -
udp        0      0 192.168.122.1:53        0.0.0.0:*                           -
udp        0      0 0.0.0.0:67              0.0.0.0:*                           -
udp        0      0 0.0.0.0:111             0.0.0.0:*                           -
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -
udp        0      0 0.0.0.0:49417           0.0.0.0:*                           -
udp6       0      0 ::1:323                 :::*                                -
udp6       0      0 :::872                  :::*                                -
udp6       0      0 :::111                  :::*                                -

查出当前所有的网络进程

[zhangshiyu@localhost ~]$ netstat -atunp
(Not all processes could be identified, non-owned process infowill not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      -
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      -
tcp        0      0 192.168.92.10:22        192.168.92.1:53374      ESTABLISHED -
tcp        0     36 192.168.92.10:22        192.168.92.1:53373      ESTABLISHED -
tcp6       0      0 :::111                  :::*                    LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 ::1:631                 :::*                    LISTEN      -
tcp6       0      0 ::1:25                  :::*                    LISTEN      -
tcp6       0      0 ::1:6010                :::*                    LISTEN      -
udp        0      0 127.0.0.1:323           0.0.0.0:*                           -
udp        0      0 0.0.0.0:872             0.0.0.0:*                           -
udp        0      0 192.168.122.1:53        0.0.0.0:*                           -
udp        0      0 0.0.0.0:67              0.0.0.0:*                           -
udp        0      0 0.0.0.0:111             0.0.0.0:*                           -
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           -
udp        0      0 0.0.0.0:49417           0.0.0.0:*                           -
udp6       0      0 ::1:323                 :::*                                -
udp6       0      0 :::872                  :::*                                -
udp6       0      0 :::111                  :::*                                -

侦测主机名与 IP 对应: host, nslookup

host

[root@www ~]# host [-a] hostname [server]
选项与参数:
-a :列出该主机详细的各项主机名设定数据
[server] :可以使用非为 /etc/resolv.conf 的 DNS 服务器 IP 来查询。

列出百度的ip地址


[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 110.242.68.4
www.a.shifen.com has address 110.242.68.3

指定dns解析域名,命令如下所示,笔者使用8.8.8.8这台dns解析百度的ip地址


[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# host www.baidu.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com is an alias for www.wshifen.com.
www.wshifen.com has address 103.235.46.40

nslookup

[root@www ~]# nslookup [-query=[type]] [hostname|IP]
选项与参数:
-query=type:查询的类型,除了传统的 IP 与主机名对应外,DNS 还有很多
信息,
所以我们可以查询很多不同的信息,包括 mx, cname 等等,
例如: -query=mx 的查询方法!

解析百度域名对应的ip

[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nslookup www.baidu.com
Server:         100.100.2.136
Address:        100.100.2.136#53Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 110.242.68.4
Name:   www.a.shifen.com
Address: 110.242.68.3

用ip找出对应的域名

[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nslookup 8.8.8.8
# 从输出结果可以看出这个ip是谷歌的
8.8.8.8.in-addr.arpa    name = dns.google.

远程联机指令与实时通讯软件

telnet

这条指令常用于测试机器某端口是否启动,通过检查连通性判断端口状况

[root@www ~]# telnet [host|IP [port]]

示例

# 测试本机3000端口连通性,看到输出结果就知道连接被拒绝,该端口无法连通
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# telnet localhost 3000
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
# 测试本机80端口联通性,因为笔者开启了http服务,所以会显示连接上了
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# telnet localhost 80
Trying ::1...
Connected to localhost.

FTP

文件传输协议,使用ftp与目标主机连接命令格式如下

[root@www ~]# ftp [host|IP] [port]

使用示例

# 范例一:联机到昆山科大去看看
[root@www ~]# yum install ftp
[root@www ~]# ftp ftp.ksu.edu.tw
Connected to ftp.ksu.edu.tw (120.114.150.21).
220---------- Welcome to Pure-FTPd [privsep] ----------
220-You are user number 1 of 50 allowed.
220-Local time is now 16:25. Server port: 21.
220-Only anonymous FTP is allowed here <==讯息要看啊!这个 FTP 仅支
援匿名
220-IPv6 connections are also welcome on this server.
220 You will be disconnected after 5 minutes of inactivity.
Name (ftp.ksu.edu.tw:root): anonymous <==鸟哥这里用匿名登录!
230 Anonymous user logged in <==嗯!确实是匿名登录了!
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <==最终登入的结果看起来是这样!
ftp> help <==提供需要的指令说明,可以常参考!
ftp> dir <==显示远程服务器的目录内容 (文件名列表)
ftp> cd /pub <==变换目录到 /pub 当中
ftp> get filename <==下载单一档案,档名为 filename
ftp> mget filename* <==下载多个档案,可使用通配符 *
ftp> put filename <==上传 filename 这个档案到服务器上
ftp> delete file <==删除主机上的 file 这个档案
net.qiang@hotmail.com
ftp> mkdir dir <==建立 dir 这个目录
ftp> lcd /home <==切换『本地端主机』的工作目录
ftp> passive <==启动或关闭 passive 模式
ftp> binary <==数据传输模式设定为 binary 格式
ftp> bye <==结束 ftp 软件的使用

lftp则是ftp的升级版,它支持将文件采集的指令写到脚本中,然后通过lftp指令进行文件采集

[root@www ~]# lftp [-p port] [-u user[,pass]] [host|IP]
[root@www ~]# lftp -f filename
[root@www ~]# lftp -c "commands"
选项与参数:
-p :后面可以直接接上远程 FTP 主机提供的 port
net.qiang@hotmail.com
-u :后面则是接上账号与密码,就能够连接上远程主机了
如果没有加账号密码, lftp 默认会使用 anonymous 尝试匿名登录
-f :可以将指令写入脚本中,这样可以帮助进行 shell script 的自动处理
喔!
-c :后面直接加上所需要的指令。

使用脚本采集文件示例

# 使用档案配合 lftp 去处理时:
[root@www ~]# mkdir lftp; cd lftp
[root@www lftp]# vim lftp.ksu.sh
open ftp.ksu.edu.tw
cd /pub/CentOS/
mget -c -d RPM-GPG*
bye
[root@www lftp]# lftp -f lftp.ksu.sh
[root@www lftp]# ls
lftp.ksu.sh RPM-GPG-KEY-CentOS-3 RPM-GPG-KEY-CentOS-4
RPM-GPG-KEY-CentOS-6
RPM-GPG-KEY-beta RPM-GPG-KEY-centos4 RPM-GPG-KEY-CentOS-5
# 直接将要处理的动作加入 lftp 指令中
[root@www lftp]# vim lftp.ksu.sh
lftp -c "open ftp.ksu.edu.tw
cd /pub/CentOS/
mget -c -d RPM-GPG*
bye"
[root@www lftp]# sh lftp.ksu.sh

文字接口网页浏览

links

[root@www ~]# links [options] [URL]
选项与参数:
-anonymous [0|1]:是否使用匿名登录的意思;
-dump [0|1] :是否将网页的数据直接输出到 standard out 而非 links
软件功能
-dump_charset :后面接想要透过 dump 输出到屏幕的语系编码,big5 使
用 cp950 喔

例如我们想访问Linux内核的网站

 links http://www.kernel.org

我们就会见到如下图所示的界面,页面操作大抵如下

1. 回车或者方向键右:进入白标选中连接
2. 左键:回退到上一个网页
3. 上下键:切换白标选中项
4. g键:按住g输入网址后可进入另一个页面

在这里插入图片描述

将百度的网页导到本地文件中

# 用links将连接文件导入到本地baidu.html中
[root@iZ8vb7bhe4b8nhhhpavhwpZ tmp]# links -dump www.baidu.com >baidu.html
# 查看文件可以看出导入成功了
[root@iZ8vb7bhe4b8nhhhpavhwpZ tmp]# more baidu.htmlRefresh: http://www.baidu.com/baidu.html?from=noscript<style data-for="result" type="text/css">body{color:#333;background:#fff;padding:6px 00;margin:0;position:relative}body,th,td,.p1,.p2{font-family:arial}p,form,ol,ul,li,dl,dt,dd,h3{margin:0;padding:0;list-style:none}input{padding-top:0;padding
-bottom:0;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}table,img{border:0}td{font-size:9pt;line-height:18px}em{font-style:nor
mal}em{font-style:normal;color:#c00}aem{text-decoration:underline}cite{font-style:normal;color:green}.m,a.m{color:#666}a.m:visited{color:#606}.g,a.g{color:green}.c{color:#77c}.f14{font-size:14p

wget

[root@www ~]# wget [option] [网址]
选项与参数:
若想要联机的网站有提供账号与密码的保护时,可以利用这两个参数来输入
喔!
--http-user=usrname
--http-password=password
--quiet :不要显示 wget 在抓取数据时候的显示讯息
更多的参数请自行参考 man wget 吧! ^_^

使用示例,使用wget获取jquery资源


[root@iZ8vb7bhe4b8nhhhpavhwpZ tmp]# wget https://code.jquery.com/jquery-3.6.0.min.js
--2022-07-07 09:53:57--  https://code.jquery.com/jquery-3.6.0.min.js
Resolving code.jquery.com (code.jquery.com)... 69.16.175.10, 69.16.175.42, 2001:4de0:ac18::1:a:3a, ...
Connecting to code.jquery.com (code.jquery.com)|69.16.175.10|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 89501 (87K) [application/javascript]
Saving to: ‘jquery-3.6.0.min.js’100%[=====================================================================================================================>] 89,501       262KB/s   in 0.3s2022-07-07 09:53:59 (262 KB/s) - ‘jquery-3.6.0.min.js’ saved [89501/89501][root@iZ8vb7bhe4b8nhhhpavhwpZ tmp]# ll# 可以看到jquery的js已经下载到本地了
total 308
-rw-r--r-- 1 root root 211949 Jul  7 09:47 baidu.html
-rw-r--r-- 1 root root  89501 Oct 18  1991 jquery-3.6.0.min.js
drwx------ 3 root root   4096 May 21 19:18 systemd-private-c2a4f4c84d3e40f1b4accddd4d520313-chronyd.service-93ko8E
drwx------ 3 root root   4096 May 21 19:21 systemd-private-c2a4f4c84d3e40f1b4accddd4d520313-nginx.service-cHMIRd
drwxrwxrwx 2 root root   4096 Jun 22 10:28 testDir
[root@iZ8vb7bhe4b8nhhhpavhwpZ tmp]#

当然我们也可以修改wget的代理,只需编辑/etc/wgetrc文件即可,示例如下

[root@www ~]# vim /etc/wgetrc
#http_proxy = http://proxy.yoyodyne.com:18023/ <==找到底下这几行,
大约在 78 行
#ftp_proxy = http://proxy.yoyodyne.com:18023/
#use_proxy = on
# 将他改成类似底下的模样,记得,你必须要有可接受的 proxy 主机才行!
net.qiang@hotmail.com
http_proxy = http://proxy.ksu.edu.tw:3128/
use_proxy = on

网络嗅探

tcpdump

root@www ~]# tcpdump [-AennqX] [-i 接口] [-w 储存档名] [-c 次数] \
[-r 档案] [所欲撷取的封包数据格式]
选项与参数:
-A :封包的内容以 ASCII 显示,通常用来捉取 WWW 的网页封包资料。
-e :使用资料连接层 (OSI 第二层) 的 MAC 封包数据来显示;
-nn:直接以 IP 及 port number 显示,而非主机名与服务名称
-q :仅列出较为简短的封包信息,每一行的内容比较精简
-X :可以列出十六进制 (hex) 以及 ASCII 的封包内容,对于监听封包内容
很有用
-i :后面接要『监听』的网络接口,例如 eth0, lo, ppp0 等等的界面;
-w :如果你要将监听所得的封包数据储存下来,用这个参数就对了!后面接
档名
-r :从后面接的档案将封包数据读出来。那个『档案』是已经存在的档案,
并且这个『档案』是由 -w 所制作出来的。
-c :监听的封包数,如果没有这个参数, tcpdump 会持续不断的监听,
直到使用者输入 [ctrl]-c 为止。
所欲撷取的封包数据格式:我们可以专门针对某些通讯协议或者是 IP 来源进
行封包撷取,
net.qiang@hotmail.com
那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有:
'host foo', 'host 127.0.0.1' :针对单部主机来进行封包撷取
'net 192.168' :针对某个网域来进行封包的撷取;
'src host 127.0.0.1' 'dst net 192.168':同时加上来源(src)或目标
(dst)限制
'tcp port 21':还可以针对通讯协议侦测,如 tcp, udp, arp, ether 等
还可以利用 and 与 or 来进行封包数据的整合显示呢!

基础示例

# 以ip和port的形式,获取ens192网卡的网络包
[root@localhost docs]# tcpdump  -i ens192 -nn# 输出结果,可以看到网络包的tpc三次握手的过程,关于tcp三次握手读者可执行查阅网上资料了解,这里就不多赘述了
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
10:09:56.298783 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 1307652082:1307652126, ack 910651255, win 355, length 44
10:09:56.298986 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 44, win 8206, length 0
10:09:56.299012 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 44:184, ack 1, win 355, length 140
10:09:56.299069 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 184:276, ack 1, win 355, length 92
10:09:56.299126 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 276:328, ack 1, win 355, length 52
10:09:56.299182 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 328:380, ack 1, win 355, length 52
10:09:56.299217 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 276, win 8212, length 0
10:09:56.299247 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 380:424, ack 1, win 355, length 44
10:09:56.299342 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 424:492, ack 1, win 355, length 68
10:09:56.299353 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 380, win 8212, length 0
10:09:56.299404 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 492:552, ack 1, win 355, length 60

我们都知道ssh协议端口号是22,属于知名端口(知名端口号为0-1023。注册端口号为1024-49151。剩下的端口号叫动态端口号或私有端口号,为49152-65535)。所以客户端使用ssh连接远程主机时,使用的就是动态端口,对此我们可以使用tcpdump进行验证

# 使用tcpdump 抓10次ssh协议的包
[root@localhost docs]# tcpdump  -i ens192 -nn port 22 -c 10
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
10:13:53.326007 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 1309467622:1309467778, ack 910667235, win 355, length 156
10:13:53.326229 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 156, win 8210, length 0
10:13:53.326294 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 156:232, ack 1, win 355, length 76
10:13:53.326366 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 232:300, ack 1, win 355, length 68
10:13:53.326421 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 300:352, ack 1, win 355, length 52
10:13:53.326485 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 352:396, ack 1, win 355, length 44
10:13:53.326513 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 300, win 8209, length 0
10:13:53.326559 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 396:456, ack 1, win 355, length 60
10:13:53.326653 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 396, win 8209, length 0
10:13:53.326731 IP 10.168.104.32.22 > 10.168.3.14.53198: Flags [P.], seq 456:500, ack 1, win 355, length 44
10 packets captured
10 packets received by filter
0 packets dropped by kernel

例题:如何使用 tcpdump 监听 (1)来自 ens192 适配卡且 (2)通讯协议为 port22 ,(3)封包来源为 10.168.3.14 的封包资料?


[root@localhost docs]# tcpdump -i ens192 -nn 'port 22 and src 10.168.3.14' -c 10
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
10:19:18.322530 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 1309470746, win 8210, length 0
10:19:18.367757 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 61, win 8210, length 0
10:19:18.412806 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 105, win 8209, length 0
10:19:18.458625 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 157, win 8209, length 0
10:19:18.518701 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 201, win 8209, length 0
10:19:18.563508 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 245, win 8209, length 0
10:19:18.608907 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 289, win 8209, length 0
10:19:18.653772 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 333, win 8209, length 0
10:19:18.699672 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 377, win 8208, length 0
10:19:18.745809 IP 10.168.3.14.53198 > 10.168.104.32.22: Flags [.], ack 421, win 8208, length 0
10 packets captured
10 packets received by filter
0 packets dropped by kernel

测试端口可达性(nc、netcat)

nc和netcat一样都是用于测试某个端口的连通性的,使用的命令格式如下(若没有安装记得使用yum -y install nc):

[root@www ~]# nc [-u] [IP|host] [port]
[root@www ~]# nc -l [IP|host] [port]
选项与参数:
-l :作为监听之用,亦即开启一个 port 来监听用户的联机;
-u :不使用 TCP 而是使用 UDP 作为联机的封包状态

基础示例

# 可以看到本机25端口未开放
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nc localhost 25
Ncat: Connection refused.
# 而80端口连通性是没问题的
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nc localhost 80

自定义监听并使用nc测试连通性

# 建立一个2000的nc后台监听
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nc -l localhost 20000 &
[1] 4624
# 可以看到监听建立了
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# netstat -tulnp |grep nc |grep -v 'grep'
tcp6       0      0 ::1:20000               :::*                    LISTEN      4624/nc
[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]#

此时我们再开启一个终端使用nc输入字符串

[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# nc localhost 20000
hello
ls

再回到开启nc监听的终端,也能看到同样的输出内容


[root@iZ8vb7bhe4b8nhhhpavhwpZ ~]# hello
ls

课后习题

  1. 暂时将你的 eth0 这张网络卡的 IP 设定为 192.168.1.100 ,如何进行?
ifconfig eth0 192.168.1.100
  1. 我要增加一个路由规则,以 eth0 连接 192.168.100.100/24 这个网域,应
    该如何下达指令?
ip route add 192.168.100.100/24 dev eth0
route add -net 192.168.100.100 netmask 255.255.255.0 dev eth0
  1. 我的网络停顿的很厉害,尤其是连接到 tw.yahoo.com 的时候,那么我应该
    如何检查那个环节出了问题?
traceroute tw.yahoo.com
  1. 我发现我的 Linux 主机上面有个联机很怪异,想要将他断线,应该如何进
    行?
netstat -tulnp 然后工具pid 使用kill -9 pid杀掉
  1. 你如何知道 green.ev.ncku.edu.tw 这部主机的 IP ?
host  green.ev.ncku.edu.tw
nslookup  green.ev.ncku.edu.tw
  1. 请找出你的机器上面最适当的 MTU 应该是多少?
ping -c 3 -s mtu的数值 -M do 目标机器
  1. 如何在终端机接口上面进行 WWW 浏览?又该如何下载 WWW 上面提供的档
    案?
1.  使用links连接
2. 使用wget下载
  1. 在终端机接口中,如何连接 bbs.sayya.org 这个 BBS ?
telnet bbs.sayya.org

参考文献

鸟哥的Linux私房菜

知名端口号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/220785.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

net6使用StackExchangeRedis实现分布式缓存

上一篇讲解了Redis的搭建及ServiceStack.Redis 与 StackExchange.Reids 的区别https://blog.csdn.net/qq_39569480/article/details/105249607 这篇文章遗我们来说下使用Microsoft.Extensions.Caching.StackExchangeRedis来对redis进行操作及帮助类。 首先在windows上安装red…

产品入门第六讲:Axure中继器

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c…

Unity | Shader基础知识(第七集:案例<让图片和外部颜色叠加显示>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、添加图片资源 三、 常用cg数据类型 1 float 2 bool 3 sampler 四、加入图片资源 五、使用图片资源 1 在通道里加入资源 2 使用图片和颜色叠加 2.1 2D纹理采样tex2D 2.2 组合颜色 六、全部代码 七、下集介绍 相关…

git-lfs基本知识讲解

目录 1. 基本知识2. 安装 1. 基本知识 git-lfs 是 Git Large File Storage 的缩写&#xff0c;是 Git 的一个扩展&#xff0c;用于处理大文件的版本控制。 它允许你有效地管理和存储大型二进制文件&#xff0c;而不会使 Git 仓库变得过大和不稳定。以下是一些与 git-lfs 相关…

【微服务】springboot整合minio详解

目录 一、前言 二、Minio 概述 2.1 Minio简介 2.1 Minio特点 三、Minio 环境搭建 3.1 部署过程 3.1.1 拉取镜像 3.1.2 启动容器 3.1.3 访问web页面 四、Minio基本使用 4.1 基本概念 4.2 上传文件演示 4.3 用户管理 4.4 Java操作Minio 4.4.1 导入依赖 4.4.2 上传…

机器学习——支持向量机

目录 一、基于最大间隔分隔数据 二、寻找最大间隔 1. 最大间隔 2. 拉格朗日乘子法 3. 对偶问题 三、SMO高效优化算法 四、软间隔 五、SMO算法实现 1. 简化版SMO算法 2. 完整版SMO算法 3. 可视化决策结果 六、核函数 1. 线性不可分——高维可分 2. 核函数 …

调用第三方http接口 hutool工具类

1、引入依赖 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.0.M2</version> </dependency>2、请求组装 String params"<BSXml>" " <MsgHeader>&…

org.springframework.boot.autoconfigure.AutoConfiguration.imports新版自动配置

文章目录 场景 场景 springboot2.7.0之后的版本 自动配置方式有了变化, 新版兼容旧版 旧版新版META-INF/spring.factoriesMETA-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.importsConfigurationAutoConfiguration

【期末复习向】长江后浪推前浪之ChatGPT概述

参考文章&#xff1a;GPT系列模型技术路径演进-CSDN博客 这篇文章讲了之前称霸NLP领域的预训练模型bert&#xff0c;它是基于预训练理念&#xff0c;采用完形填空和下一句预测任务2个预训练任务完成特征的提取。当时很多的特定领域的NLP任务&#xff08;如情感分类&#xff0c…

STM32-UART-DMA HAL库缓冲收发

文章目录 1、说明1.1、注意事项&#xff1a;1.2、接收部分1.3、发送部分 2、代码2.1、初始化2.2、缓冲接收2.3、缓冲发送2.4、格式化打印 1、说明 1.1、注意事项&#xff1a; HAL库的DMA底层基本都会默认开启中断使能&#xff0c;如果在STM32CubeMx禁用了中断相关的功能&…

基于vue+element-plus+echarts制作动态绘图页面(柱状图,饼图和折线图)

前言 我们知道echarts是一个非常强大的绘图库&#xff0c;基于这个库&#xff0c;我们可以绘制出精美的图表。对于一张图来说&#xff0c;其实比较重要的就是配置项&#xff0c;填入不同的配置内容就可以呈现出不同的效果。 当然配置项中除了样式之外&#xff0c;最重要的就是…

07-抽象工厂

意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 适用性 在以下的情况可以选择使用抽象工厂模式&#xff1a; 一个系统要独立于它的产品的创建、组合和表示。一个系统要由多个产品系列中的一个来配置。要强调一系列相关的产品对象的…

linux驱动的学习 驱动开发初识

1 设备的概念 在学习驱动和其开发之前&#xff0c;首先要知道所谓驱动&#xff0c;其对象就是设备。 1.1 主设备号&次设备号&#xff1a; 在Linux中&#xff0c;各种设备都以文件的形式存在/dev目录下&#xff0c;称为设备文件。最上层的应用程序可以打开&#xff0c;关…

云原生之深入解析减少Docker镜像大小的优化技巧

一、什么是 Docker&#xff1f; Docker 是一种容器引擎&#xff0c;可以在容器内运行一段代码&#xff0c;Docker 镜像是在任何地方运行应用程序而无需担心应用程序依赖性的方式。要构建镜像&#xff0c;docker 使用一个名为 Dockerfile 的文件&#xff0c;Dockerfile 是一个包…

数据分析场景下,企业大模型选型的思路与建议

来源/作者&#xff1a;爱分析 随着大模型带来能力突破&#xff0c;让AI与数据分析相互结合&#xff0c;使分析结果更好支撑业务&#xff0c;促进企业内部数据价值释放&#xff0c;成为了当下企业用户尤为关注的话题。本次分享主要围绕数据分析场景下大模型底座的选型思路&#…

Kafka 安装与部署

目录 Kafka 下载 &#xff08;1&#xff09;将 kafka_2.11-2.4.1.tgz 上传至 /opt/software/ &#xff08;2&#xff09;解压安装包至 /opt/module/ [huweihadoop101 ~]$ cd /opt/software/ [huweihadoop101 software]$ tar -zxvf kafka_2.11-2.4.1.tgz -C ../module/&#…

什么是供应链安全及其工作原理?

6000公里长的丝绸之路将丝绸、谷物和其他货物从中国运送到帕尔米拉。尽管蒙古治下的和平保护丝绸之路免受海盗、强盗和内部盗窃的侵害&#xff0c;但商人仍然装备精良&#xff0c;并依赖于大型商队旅行和战略性放置的小型堡垒所提供的安全。 为什么供应链安全很重要&#xff1…

Content-Type是什么

目录 Content-Type是什么 获取方式 设置方式 常见类型 application/x-www-form-urlencoded multipart/form-data application/json text/xml text/html text/plain Content-Type是什么 Content-Type出现在请求标头和响应标头中&#xff0c;意思是内容类型&#xff0…

JAVA主流日志框架梳理学习及使用

前言&#xff1a;目前市面上有挺多JAVA的日志框架&#xff0c;比如JUL(JDK自带的日志框架),Log4j,Logback,Log4j2等&#xff0c;有人可能有疑问说还有slf4j&#xff0c;不过slf4j不是一种日志框架的具体实现&#xff0c;而是一种日志门面&#xff08;日志门面可以理解为是一种统…

PyTorch机器学习与深度学习

近年来&#xff0c;随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生&#xff0c;人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术&#xff0c;在许多行业都取得了颠覆性的成果。另外&#xff0c;近年来&#xff0c;Pytorch深度学习框架受…