草庐IT

网络管理

tushanbu 2023-03-28 原文

网络管理

1.如何查看系统中每个ip的连接数

[root@lnh ~]# ss -ant | grep ESTAB
ESTAB  0      0      192.168.222.250:22   192.168.222.1:53501       
ESTAB  0      0      192.168.222.250:22   192.168.222.1:63094       
ESTAB  0      36     192.168.222.250:22   192.168.222.1:52769   
//-a:所有 -n:数字格式  -t:tcp协议相关  ESTAB 代表网络连接的状态是“已建立”(Established)    
[root@lnh ~]# ss -ant|grep ESTAB|awk '{print $4}'|awk -F: '{print $1}'|uniq -c
      2 192.168.222.250
//awk '{print $5}'是以空格分割,截取第五列,也就是Foreign Address列
//awk是一个选取命令,-F指定为分隔符,这里指定":"为分隔符,分隔符后的第一个
//{print $1}打印分隔符后面的一列
//uniq 用于报告或删除内容中的重复行,-c在输出行前面加上出现的次数

2.请列出下列服务使用的端口,http,ftp,ssh,telnet,mysql,dns

http    80/tcp 
https   443/tcp 
ssh     22/tcp 
ftp     20,21/tcp
telnet  23/tcp
mysql   3306/tcp
dns     53/UDP

3.如何在虚拟机上新增加一块网卡,并配置IP为172.16.0.10,指定网关为172.16.0.1


[root@lnh ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:57:f6:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.222.250/24 brd 192.168.222.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe57:f6f5/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:57:f6:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.222.132/24 brd 192.168.222.255 scope global dynamic noprefixroute eth1
       valid_lft 1786sec preferred_lft 1786sec
    inet6 fe80::e61:94ae:7774:c88f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
//查看是否添加成功
[root@lnh network-scripts]# cp ifcfg-eth0 ifcfg-eth1
[root@lnh network-scripts]# ls
ifcfg-eth0  ifcfg-eth1
[root@lnh network-scripts]# vim ifcfg-eth1
[root@lnh network-scripts]# cat ifcfg-eth1
TYPE=Ethernet
BOOTPROTO=static
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.0.10
NETMASK=255.255.255.0
GATEWAY=172.16.0.1
DNS1=172.16.0.1
[root@lnh network-scripts]# ifdown eth1;ifup eth1
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
//重启网卡
[root@lnh network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:57:f6:f5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.222.250/24 brd 192.168.222.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe57:f6f5/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:57:f6:ff brd ff:ff:ff:ff:ff:ff
    inet 172.16.0.10/24 brd 172.16.0.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe57:f6ff/64 scope link 
       valid_lft forever preferred_lft forever
//查看是否设置成功

4.详细描述dns解析过程,以访问(www.baidu.com.)为例
1.先查找本地DNS缓存,有就返回没有就下一步
2.查看本地hosts文件有没有相当于的映射记录没有就下一步
3.向本地DNS服务器发送请求查询本地DNS服务器收到请求后,它会先查下自己的缓存记录,如果查到了直接返回就结束了,如果没有查到,本地DNS服务器就会向DNS的根域名服务器发起查询请求
4.DNS的根域名服务器收到请求后发现这是.com的域名,就回应本地DNS服务器说这是.com域名服务器的,你去问它
5.本地DNS服务器接到回复后,照着联系方式去访问.com域名服务器,.com 顶级域名服务器接收到请求后,看到这是 baidu.com 的域名,就回应说这个域名是 .baidu.com域名服务器的,你就去问它就行了,这是它的联系方式
6.本地DNS服务器接到回复后,照着联系方式去访问.baidu.com域名服务器,.baidu.com域名服务器管理确认是自己管理的域名后,查看自己的域名然后告诉本地DNS服务器访问ip
7.本地DNS服务器接到回复后,就给查询客户回复,由于这个过程比较漫长,本地DNS服务器会记住这次的查询结果,方便下次有客户再访问。

[root@lnh ~]# dnf provides host
Last metadata expiration check: 2 days, 6:15:34 ago on Wed 13 Jul 2022 04:13:33 AM CST.
bind-utils-32:9.11.26-6.el8.x86_64 : Utilities for querying DNS name servers
Repo        : AppStream
Matched from:
Filename    : /usr/bin/host

[root@lnh ~]# dnf provides nslookup
bind-utils-32:9.11.26-6.el8.x86_64 : Utilities for querying DNS name servers
Repo        : AppStream
Matched from:
Filename    : /usr/bin/nslookup
[root@lnh ~]# dnf -y install bind-utils
//可以先查询这两个命令需要的包,然后进行下载
[root@lnh ~]# host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 182.61.200.6
www.a.shifen.com has address 182.61.200.7
[root@lnh ~]# nslookup www.baidu.com
Server:		192.168.222.2
Address:	192.168.222.2#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 182.61.200.6
Name:	www.a.shifen.com
Address: 182.61.200.7

可以用其查询的地址进行访问

5.如何查看系统中运行了多少个进程

[root@lnh ~]# ps aux |wc -l
166

6.如何查看系统中启动了哪些端口

[root@lnh ~]# ss -ant
State   Recv-Q  Send-Q     Local Address:Port    Peer Address:Port  Process 
LISTEN  0       128              0.0.0.0:22           0.0.0.0:*             
ESTAB   0       36       192.168.222.250:22     192.168.222.1:58662         
LISTEN  0       128                 [::]:22              [::]:*     
[root@lnh ~]# ss -ant |awk  '{print $4}' |awk -F: '{print $NF}'
Local
22
22
22

7.如何查看是否开启80端口,及查看sshd进程是否存在

[root@lnh ~]# ss -antl
State   Recv-Q  Send-Q   Local Address:Port     Peer Address:Port  Process  
LISTEN  0       128            0.0.0.0:22            0.0.0.0:*              
LISTEN  0       128               [::]:22               [::]:*              
LISTEN  0       128                  *:80                  *:*              
[root@lnh ~]# ss -antl |grep 80
LISTEN 0      128                *:80              *:*          
[root@lnh ~]# ss -antlp |grep 80
LISTEN 0      128                *:80              *:*    users:(("httpd",pid=1993,fd=4),("httpd",pid=1992,fd=4),("httpd",pid=1991,fd=4),("httpd",pid=1990,fd=4))
[root@lnh ~]# ps -ef|grep sshd 
root         937       1  0 10:03 ?        00:00:00 /usr/sbin/sshd -D -oCiphers=aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr,aes256-cbc,aes128-gcm@openssh.com,aes128-ctr,aes128-cbc -oMACs=hmac-sha2-256-etm@openssh.com,hmac-sha1-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha1,umac-128@openssh.com,hmac-sha2-512 -oGSSAPIKexAlgorithms=gss-curve25519-sha256-,gss-nistp256-sha256-,gss-group14-sha256-,gss-group16-sha512-,gss-gex-sha1-,gss-group14-sha1- -oKexAlgorithms=curve25519-sha256,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,diffie-hellman-group18-sha512,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1 -oHostKeyAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oPubkeyAcceptedKeyTypes=ecdsa-sha2-nistp256,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp521-cert-v01@openssh.com,ssh-ed25519,ssh-ed25519-cert-v01@openssh.com,rsa-sha2-256,rsa-sha2-256-cert-v01@openssh.com,rsa-sha2-512,rsa-sha2-512-cert-v01@openssh.com,ssh-rsa,ssh-rsa-cert-v01@openssh.com -oCASignatureAlgorithms=ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-256,rsa-sha2-512,ssh-rsa
root        1167     937  0 10:03 ?        00:00:00 sshd: root [priv]
root        1182    1167  0 10:03 ?        00:00:00 sshd: root@pts/0
root        2094    1183  0 11:18 pts/0    00:00:00 grep --color=auto sshd
//ps -ef:打开所有的进程 grep sshd:过滤出含有“sshd”字符的进程

8.列出所有处于监听状态的tcp端口

[root@lnh ~]# ss -antlp  
State    Recv-Q   Send-Q       Local Address:Port       Peer Address:Port   Process                                                                     
LISTEN   0        128                0.0.0.0:22              0.0.0.0:*       users:(("sshd",pid=937,fd=5))                                              
LISTEN   0        128                   [::]:22                 [::]:*       users:(("sshd",pid=937,fd=7))                                              
LISTEN   0        128                      *:80                    *:*       users:(("httpd",pid=1993,fd=4),("httpd",pid=1992,fd=4),("httpd",pid=1991,fd=4),("httpd",pid=1990,fd=4))
    -l:listen状态的连接
    -a:所有
    -n:数字格式
    -p:相关的程序及pid
    -t:tcp协议相关

9.查看所有的端口信息, 包括 PID 和进程名称

[root@lnh ~]# ss -atulp  
Netid  State   Recv-Q  Send-Q     Local Address:Port     Peer Address:Port  Process                                                                     
tcp    LISTEN  0       128              0.0.0.0:ssh           0.0.0.0:*      users:(("sshd",pid=937,fd=5))                                              
tcp    LISTEN  0       128                 [::]:ssh              [::]:*      users:(("sshd",pid=937,fd=7))                                              
tcp    LISTEN  0       128                    *:http                *:*      users:(("httpd",pid=1993,fd=4),("httpd",pid=1992,fd=4),("httpd",pid=1991,fd=4),("httpd",pid=1990,fd=4))
-u:udp协议相关

DNS的查询流程

什么是递归查询

一般我们向本地 DNS 服务器发送请求的方式就是递归查询(当客户端向本地DNS服务器发送需求,本地DNS服务器可以马上给予答案)因为我们只需要发出一次请求,本地 DNS 服务器便返回给我们最终的请求结果。

什么是迭代查询

本地 DNS 服务器向其他域名服务器请求的过程是迭代查询(当客户端请求没有得到DNS服务器的明确回复时,DNS服务器只是告诉客户端如何去获取这个内容而其本身不进行请求查询)因为每一次域名服务器只返回单次查询的结果,下一级的查询由本地 DNS 服务器自己进行。

磁盘列阵

什么是磁盘阵列?

磁盘阵列是由很多块独立的磁盘,组合成一个容量巨大的磁盘组,利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。

磁盘阵列在电脑当中我们通常称之为Raid,给多块磁盘组建Raid后我们电脑内就只会看到一个Raid的阵列盘,它的子磁盘我们是看不到的,我们就跟使用普通磁盘一样去使用这个由多块磁盘组合起来的Raid磁盘,Raid有很多的等级。不同的Raid等级之间并没有优劣之分,它们仅仅是不同功能的阵列,只是在我们实际使用的时候需要根据不同的情况和不同的需求去灵活的决定用哪个等级的Raid。

Raid主要有如下几种:
1,RAID0

至少需要的硬盘数:2,将一个完整的数据拆分后分别放到磁盘中,写入时各磁盘同时写入,读取时各磁盘同时读取,和内存双通道一个道理,带宽翻倍速度翻倍的效果,加的磁盘越多速度就是越快,同样的磁盘越多数据就越危险。

优点: 资料会被均分并写入不同的硬盘上。数据存取会更快速并更有效率。

缺点: 如果其中一颗硬盘损毁,所有数据将会遗失除非平时有在做额外的数据备份。

2,RAID1

至少需要的硬盘数:2,是将一份完整的数据复制到阵列中所有的磁盘当中,但速度及容量都会取决于最慢与最小的磁盘。

优点: 数据将会被复制到所有的硬盘上,不管坏了几颗硬盘,只要还有一颗硬盘是正常的,数据将不受影响。

缺点: 不管安装了多少颗硬盘,可用空间会被局限同等于一颗硬盘。

3,RAID5

至少需要的硬盘数:3,使用相当于是1块盘的大小作为校验盘,n-1块盘的大小作为数据盘,但校验码分布在各个磁盘中,不是单独的一块磁盘,也就是分布式校验盘。

优点: 一颗硬盘的容错机制。数据会被均分到不同的硬盘上并加上同比特 (储备) 的数据检查,如果坏了一颗硬盘,同比特数据将会确保数据的完整性。

缺点: 存储空间将会有一颗硬盘的容量大小被保留为同比特数据的检查/存储,因此将会影响整体的数据可用空间。

4,RAID6

至少需要的硬盘数:4,带有两种分布存储的奇偶校验码的独立磁盘结构,它是对RAID5的扩展,主要是用于要求数据绝对不能出错的场合,使用了二种奇偶校验值,所以需要N+2个磁盘,同时对控制器的设计变得十分复杂,写入速度也不好,用于计算奇偶校验值和验证数据正确性所花费的时间比较多,造成了不必须的负载,较少人用。

优点: 两颗硬盘的容错机制。数据会被均分到不同的硬盘上并加上同比特 (储备) 的数据检查,如果坏了一颗硬盘,同比特数据将会提升数据的完整性。

缺点: 存储空间将会有两颗硬盘的容量大小被保留为同比特数据的检查/存储,因此将会影响整体的数据可用空间。

5,RAID10

至少需要的硬盘数:4,且必须为偶数,可以理解为先组合成较安全的RAID1,再将多个RAID1组合成RAID0,达到既高效又高速的目的。主要用于数据容量不大,但要求速度和差错控制的数据库中。

优点: 利用了 RAID 0 的速度以及 RAID 1 地保护两种特性。

缺点: 所需的硬盘数较多,至少必须拥有四个以上的偶数硬盘才能使用,且能被利用的可用空间有限。

有关网络管理的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  3. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  4. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

  5. 网络编程套接字 - 2

    网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识

  6. ruby - (Ruby || Python) 窗口管理器 - 2

    我想用这两种语言中的任何一种(最好是ruby​​)制作一个窗口管理器。老实说,除了我需要加载某种X模块外,我不知道从哪里开始。因此,如果有人有线索,如果您能指出正确的方向,那就太好了。谢谢 最佳答案 XCB,X的下一代API使用XML格式定义X协议(protocol),并使用脚本生成特定语言绑定(bind)。它在概念上与SWIG类似,只是它描述的不是CAPI,而是X协议(protocol)。目前,C和Python存在绑定(bind)。理论上,Ruby端口只是编写一个从XML协议(protocol)定义语言到Ruby的翻译器的问题。生

  7. ruby-on-rails - 事件管理员和自定义方法 - 2

    这是我在ActiveAdmin中的自定义页面ActiveAdmin.register_page"Settings"doaction_itemdolink_to('Importprojects','settings/importprojects')endcontentdopara"Text"endcontrollerdodefimportprojectssystem"rakedataspider:import_projects_ninja"para"OK"endendend我想做的是,当我单击“导入项目”按钮时,我想在Controller中执行rake任务。但是我无法访问该方法。可能是什

  8. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

  9. ruby - 检查网络文件是否存在,而不下载它? - 2

    是否可以在不实际下载文件的情况下检查文件是否存在?我有这么大的(~40mb)文件,例如:http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm这与ruby​​不严格相关,但如果发件人可以设置内容长度就好了。RestClient.get"http://mirrors.sohu.com/mysql/MySQL-6.0/MySQL-6.0.11-0.glibc23.src.rpm",headers:{"Content-Length"=>100} 最佳答案

  10. ruby - 404 未找到,但可以从网络浏览器正常访问 - 2

    我在这方面尝试了很多URL,在我遇到这个特定的之前,它们似乎都很好:require'rubygems'require'nokogiri'require'open-uri'doc=Nokogiri::HTML(open("http://www.moxyst.com/fashion/men-clothing/underwear.html"))putsdoc这是结果:/Users/macbookair/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/2.0.0/open-uri.rb:353:in`open_http':404NotFound(OpenURI::HT

随机推荐