8.1 简介
TCP/IP网络的运作过程就是在节点之间传递分组。每一个分组中都包含了目标的IP地址以及处理分组中数据的应用程序端口号。
当节点接收到分组时,它会查看自己是否就是改分组的目的地。如果是,节点会再检查端口号并调用相应的应用程序来处理分组数据。如果不是,节点则根据已知的网络配置,将分组发送到离最终目的地更近的下一个节点。
8.2 网络设置
限制它只显示某个特定接口的信息
如果想要从ifconfig输出中提取ip地址,可以使用
ifconfig的子命令可以定义设备类别以及MAC地址
将IP地址映射为符号名称的这种技术称为域名服务。当我们输入www.google.com,计算机使用DNS服务器将域名解析为对应的IP地址。
一个域名可以对应多个IP地址,对于这种情况,ping只会显示其中的一个地址。
如果一个网络中的设备想要同另一个网络中的设备通信,就需要借助某个同时连接了两个网络的设备分组。这个特殊的设备叫做网关,它的作用就是在不同的网络中转发分组。
操作系统维护着一个叫做路由表的表格,它包含了分组如何转发的信息。
-n选项可以指定数字形式显示地址,默认情况下route命令会将IP地址映射为名字。
如果系统不知道如何分组到目的地的路由,它会将其发送到默认网关。
route add命令可以添加默认网关。
8.3 ping
ping可以用于检验网络上主机之间的连通性,找出活动主机。
默认情况下,ping会发送连续分组,可以使用ctrl+c来停止ping命令。
网络管理员通常会对网络设备进行配置,使其不响应ping命令。
ping命令可以显示每个分组的往返时间RTT。
其中mdev代表的是平均偏差。
ping发出的每个分组都有一个序列号,从1开始,知道ping结束。
依据你使用的系统或ping命令版本的不同,生存时间TTL的初始值也不尽相同。你可以通过向环回接口发出ping命令来确定TTL的初始值。
使用TTL的初始值减去回应中的TTL值,就可以得到两个位置之间的跳数。(128-54)
8.4 跟踪IP路由
traceroute命令可以显示分组途径的所有网管的地址,帮助我们搞清楚分组到达目的地需要经过多少跳。
8.5 列出网络中所有的活动主机
8.6 使用SSH在远程主机上执行命令
SSH能够让你访问远程计算机上的shell,从而在其上执行交互命令并接收结果,或是启动交互会话。
连接运行了SSH服务器的远程主机
SSH服务器默认在端口22上运行,但是有些SSH服务器并没有使用这个端口。针对这个特殊情况,可以使用-p port_number来指定端口。
8.8 通过网络传输文件
计算机联网的主要目的之一就是资源共享,文件就是常见的共享资源。
启动SFTP会话:
可以使用-oPort=PORT_NUMBER来指定端口号。
scp的选项-r可以在两台网络主机之间以递归形式复制目录;scp的-p选项能够在复制文件的同时保留文件的权限和模式。
8.10 实现SSH的无密码自动登录
SSH广泛用于脚本自动化。借助SSH,我们可以在远程主机上执行命令并读取输出。SSH使用用户名和密码进行认证。在SSH命令的执行过程中提示输入密码。但是在自动化脚本中,SSH命令可能在一个循环中执行上百次,每次都得提供密码的话,显然不实际。因此,我们需要将登入过程自动化。SSH就包含了一个内建的特性,可以用SSH密钥实现自动登陆。这则攻略描述了如何创建SSH密钥并协助实现自动登陆。
SSH采用基于公钥和基于私钥的加密技术进行自动化认证。认证密钥包含两部分:一个公钥和一个私钥。我们可以通过“ssh-keygen”命令创建认证密钥。要想实现自动化认证,公钥必须放置在服务器中(将其加入文件~/.ssh/authorized_keys),与公钥对应的私钥应该放入你用来登录的客户机的~/.ssh目录中。另一些与SSH相关的配置信息(例如,authorized_keys文件的路径与名称)可以通过修改文件/etc/ssh/sshd_config进行配置。
设置SSH自动化认证步骤:
1. 创建SSH密钥,这需要登录到远程主机
2. 将生成的密钥传输到远程主机,并将其加入文件~/.ssh/authorized_keys中
1、输入命令创建SSH密钥,并指定加密算法
ssh-keygen -t rsa
这里使用ssh-keygen 命令,-t参数表示接下来跟的是加密类型(type),然后就是加密的算法,可以选择rsa1(老版的rsa),rsa(新版的rsa),dsa,ecdsa,ed25519 等。这里用作证书通常使用rsa算法。
然后会要求你填输出的文件夹,一般默认就摆在/home/user/.ssh/下的id_rsa文件中吧。不过需要注意的是,如果曾经生成过密钥,现在重新生成一个的话,如果不改地址是会将原来的覆盖掉的,这样可能会惹一些麻烦的。。。
接下来你可以另外设置一个密码,这个密码相当于一个独立的连接服务器的密码,而不是服务器用户的密码。你就是相当于用这个密码来替代服务器的用户密码(这个密码的长度要大于四)。当然如果怕麻烦可以直接回车回车,表示不用这个密码。
到这一步密码就生成完了,在~/.ssh/下就有了生成的文件了。其中id_rsa.pub是公钥,id_rsa是私钥。
2、上传公钥到远程服务器
公钥必须添加到想要自动登录的远程服务器的/home/user/.ssh/authorized_key文件中。
scp id_rsa.pub user@remote_host:~/.ssh/authorized_keys
本地服务器操作过程:
远程服务器检查:
8.13 分析网络流量和端口
8.15 创建套接字
netcat和nc命令都可以创建用于在TCP/IP网络上传输数据的套接字。我们需要两个套接字:一个负责侦听连接,一个负责发起连接。(注意关闭防火墙)
8.18 使用ipables架设简易防火墙
1)iptables -A INPUT -s IP地址 -p tcp 端口号 -j ACCEPT
2)iptables -A INPUT -s IP地址 -p tcp --dport 端口号 -j ACCEPT
3)iptables -A INPUT -p tcp --dport 端口号-j DROP
- netstat也可以显示网络服务统计信息
- lsof命令可以列出已打开的文件,选项-i将范围限制在已打开的网络连接
- 无密码登录检验
- 实现方法
- 储备知识
- SCP是一个安全的文件复制命令,文件传输均通过SSH加密通道进行传输。
- SFTP是一个运行在SSH连接之上并模拟了FTP接口的文件传输系统,它不需要远端运行FTP服务器来进行文件传输,但是必须要有SSH服务器。
- fping
- 实际效果
- shell脚本
- 限制发送的分组数量
- 生存时间
- 序列号
- 往返时间
- 显示路由表信息
- DNS查找
- 名字服务器与DNS(域名服务)
- 硬件地址欺骗
- 显示IP地址
- 打印网络接口列表
- 很多网络使用动态主机配置协议(DHCP)自动为连接到网络上的计算机分配IP地址。dhclient命令可以用于完成这项任务,很多linux发行版在感知到有网络物理连接的时候会自动调用dhclient。
- 补充内容
- 设置网络接口的IP地址
- ifconfig命令用于配置及显示网络接口、子网掩码等细节信息。