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.hqwc.cn/news/284009.html

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

相关文章

Windows如何安装使用TortoiseSVN客户端并实现公网访问本地SVN Server

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

备忘录可以设置闹钟提醒吗怎么设置

虽然很多人都有使用备忘录的习惯&#xff0c;将待办事项一一记录下来&#xff0c;但单纯的记录并不足以保证我们不会忘记。尤其是那些不经常查看备忘录的人&#xff0c;可能会错过一些重要的信息。这就是为什么备忘录需要带闹钟提醒功能的原因。 带闹钟提醒的备忘录就像是一个…

CRM如何帮助中小微企业优化销售、营销和客服

CRM系统的一大价值就是分析。CRM系统沉淀着大量数据。将这些数据呈现出来&#xff0c;并进行数据挖掘和辅助决策&#xff0c;是判断CRM系统是否具有商业智能的分水岭。下面我们就来聊聊&#xff0c;CRM如何帮助中小微企业进行统计分析。 CRM包括客户管理、线索管理、商机管理、…

python 实现 AIGC 大模型中的概率论:生日问题的公式推导

在前两节中&#xff0c;我们推导了生日问题的求解算法&#xff0c;但在数学上的最终目标就是希望能针对问题推导出一个简洁漂亮的公式&#xff0c;就像爱因斯坦著名的质能方程 E MC^2 那样&#xff0c;毕竟数学是以符号逻辑来看待世界本质的语言&#xff0c;所以絮絮叨叨不是数…

codeforces D. Cyclic MEX

思路 手模发现把第一个 x x x 移到最末尾时&#xff0c;进入队列吐出大于等于 x x x 的&#xff0c;保留小于 x x x 的。模拟此过程。如果队列里存 n n n 个数的话&#xff0c;那么时间复杂度达到 n 2 n^2 n2 不可取。所以队列存储 ( x , f x ) (x,\;f_x) (x,fx​) 大小及…

✺ch4——管理3D图形数据

目录 缓冲区和顶点属性统一变量顶点属性插值应用变换矩阵一个3D立方体示例渲染一个对象的多个副本——实例化在同一场景中渲染多个不同模型矩阵栈应对“Z冲突”伪影图元的其他选项性能优先的编程方法 使用 OpenGL 渲染 3D 图形通常需要将若干数据集发送给 OpenGL 着色器管线。举…

中小型企业网络综合实战案例分享

实验背景 某公司总部在厦门&#xff0c;北京、上海都有分部&#xff0c;网络结构如图所示&#xff1a; 一、网络连接描述&#xff1a; 厦门总部&#xff1a;内部网络使用SW1、SW2、SW3三台交换机&#xff0c;SW1为作为核心交换机&#xff0c;SW2、SW3作为接入层交换机&#x…

python识别增强静脉清晰度 opencv-python图像处理案例

一.任务说明 用python实现静脉清晰度提升。 二.代码实现 import cv2 import numpy as npdef enhance_blood_vessels(image):# 调整图像对比度和亮度enhanced_image cv2.convertScaleAbs(image, alpha0.5, beta40)# 应用CLAHE&#xff08;对比度受限的自适应直方图均衡化&…

基于深度学习的森林火焰烟雾检测系统(含UI界面,Python代码,数据集、yolov5)

项目介绍 项目中所用到的算法模型和数据集等信息如下&#xff1a; 算法模型&#xff1a;     yolov5 yolov5主要包含以下几种创新&#xff1a;         1. 添加注意力机制&#xff08;SE、CBAM、CA等&#xff09;         2. 修改可变形卷积&#xff08;DySnake-主…

安装centos 7及配置网卡、连接Xshell

1.点击新建虚拟机 2.默认自定义 3.默认选择17版本的 4.选择稍后安装操作系统 5.选择Linux 6.选择安装目录和自定义名称&#xff0c;安装时尽量新建一个文件夹 7.根据电脑配置&#xff0c;自定义处理器大小&#xff0c;这里是建议配置 8.最少2个G 9.使用NAT 注&#xff1a; VMn…

AI分布式训练:DDP (数据并行)技术详解与实战

编者按&#xff1a; 如今传统的单机单卡模式已经无法满足超大模型进行训练的要求&#xff0c;如何更好地、更轻松地利用多个 GPU 资源进行模型训练成为了人工智能领域的热门话题。 我们今天为大家带来的这篇文章详细介绍了一种名为 DDP(Distributed Data Parallel)的并行训练技…

秒搜全网闲鱼商品!一键实现商品详情关键词搜索的酷炫电商API接口!

在如今的电商时代&#xff0c;商品搜索已经成为一个非常重要的功能。当用户在电商平台上浏览商品时&#xff0c;如果能够快速而准确地搜索到自己感兴趣的商品&#xff0c;无疑会提升用户的购物体验&#xff0c;进而增加平台的销售额。联讯数据将介绍一款名为“闲鱼商品秒搜API”…