路由跟踪

traceroute

打印用于跟踪到网络主机的路由包。利用了IP协议的存活时间(time to live, TTL)字段和尝试引起到目的主机路径的每个网关的 ICMP TIME_EXCEEDED 响应。

Traceroute的工作原理(来自:http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html

Traceroute最简单的基本用法是:traceroute hostname
Traceroute 程序的设计是利用ICMP及IP header的TTL(Time To Live)栏位(field)。首先,traceroute送出一个TTL是1 的IP datagram(其实,每次送出的为3个40字节的包,包括源地址,目的地址和包发出的时间标签)到目的地,当路径上的第一个路由器 (router)收到这个datagram时,它将TTL减1。此时,TTL变为0了,所以该路由器会将此datagram丢掉,并送回一个 「ICMP time exceeded」消息(包括发IP包的源地址,IP包的所有内容及路由器的IP地址),traceroute 收到这个消息后, 便知道这个路由器存在于这个路径上,接着traceroute 再送出另一个TTL是2 的datagram,发现第2 个路由 器...... traceroute 每次将送出的datagram的TTL 加1来发现另一个路由器,这个重复的动作一直持续到某个 datagram 抵达目的地。当datagram到达目的地后,该主机并不会送回ICMP time exceeded消息,因为它已是目的地了,那么 traceroute如何得知目的地到达了呢?
Traceroute 在送出UDP datagrams到目的地时,它所选择送达的port number 是一个一般应用程序都不会用的号码(30000 以上),所以当此 UDP datagram 到达目的地后该主机会送回一个「ICMP port unreachable」的消息,而当traceroute 收到这个消 息时,便知道目的地已经到达了。所以traceroute 在Server端也是没有所谓的Daemon 程式。
Traceroute提取发 ICMP TTL到期消息设备的IP地址并作域名解析。每次 ,Traceroute都打印出一系列数据,包括所经过的路由设备的域名及 IP地址,三个包每次来回所花时间。
     

继续阅读

tcpdump

tcpdump是Linux内置的一个抓包工具,用于对网络上的数据包进行截获、分析的工具。

完整命令格式

       tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ expression ]

继续阅读

wget 备忘

今天要从github下个库很慢,突然来了这个命令:ssh coderbee@coderbee.net 'wget https://github.com/sbt/sbt-assembly/archive/master.zip && cat master.zip' > master.zip,把vps当作下载中转站了,速度还行。

下完后觉得wget还是很nice的,以前也用来下载过一些api文档,多学习点。

wget介绍

wget 是非交互式(可以在后台运行)的网络下载工具,支持的协议有HTTP、HTTPS、FTP。

wget 可以解析并获取HTML、XHTML和CSS页面里的链接,创建远程web页面的本地版本,完全重建原始页面的目录结构。可以命令wget转换已下载文件里的链接指向本地文件,用于离线浏览。

wget的健壮性可用于慢速或不稳定的网络连接;如果下载由于网络问题失败,wget会重试直到文件下载成功。还支持断点下载,如果服务器支持的话。

使用方式: wget [option]... [URL]...
继续阅读

ssh 命令说明与使用

ssh

简介

SSH(secure shell)是一种网络协议,用于计算机之间的加密登录。SSH有多种实现,Linux系统下使用的一般是OpenSSH。

来自维基百科:


传统的网络服务程序,如rsh、FTP、POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据传给真正的服务器。

而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH可以对所有传输的数据进行加密,也能够防止DNS欺骗和IP欺骗。

SSH之另一项优点为其传输的数据可以是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、POP、甚至为PPP提供一个安全的“通道”。

使用形式


     ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
         [-D [bind_address:]port] [-e escape_char] [-F configfile] [-I pkcs11]
         [-i identity_file] [-L [bind_address:]port:host:hostport]
         [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
         [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
         [-w local_tun[:remote_tun]] [user@]hostname [command]

继续阅读

netstat

netstat

用于输出网络连接,路由表,接口统计,伪连接和广播关系 的信息。

使用方式


       netstat  [address_family_options]  [--tcp|-t]   [--udp|-u]   [--raw|-w]
       [--listening|-l]     [--all|-a]     [--numeric|-n]    [--numeric-hosts]
       [--numeric-ports]           [--numeric-users]           [--symbolic|-N]
       [--extend|-e[--extend|-e]]  [--timers|-o] [--program|-p] [--verbose|-v]
       [--continuous|-c]

       netstat              {--route|-r}              [address_family_options]
       [--extend|-e[--extend|-e]]         [--verbose|-v]        [--numeric|-n]
       [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]

       netstat {--interfaces|-i} [--all|-a] [--extend|-e[--extend|-e]] [--ver-
       bose|-v]  [--program|-p]  [--numeric|-n]  [--numeric-hosts] [--numeric-
       ports] [--numeric-users] [--continuous|-c]

       netstat      {--groups|-g}       [--numeric|-n]       [--numeric-hosts]
       [--numeric-ports] [--numeric-users] [--continuous|-c]

       netstat       {--masquerade|-M}       [--extend|-e]      [--numeric|-n]
       [--numeric-hosts] [--numeric-ports] [--numeric-users] [--continuous|-c]

       netstat {--statistics|-s} [--tcp|-t] [--udp|-u] [--raw|-w]

       netstat {--version|-V}

       netstat {--help|-h}

      address_family_options:
      [-4]      [-6]       [--protocol={inet,unix,ipx,ax25,netrom,ddp}[,...]]
      [--unix|-x] [--inet|--ip] [--ax25] [--ipx] [--netrom] [--ddp]

继续阅读

stat 显示文件或文件系统状态

stat

显示文件或文件系统的状态。

使用形式

stat [option]... file...

选项

  • -L, --dereference:解析链接符号。
  • -f, --file-system:显示文件系统而不是文件的状态。
  • -c, --format=FORMAT:使用指定格式FORMAT而不是默认的,在每个FORMAT后面输出一个新行。
  • --printf=FORMAT:与--format类似,但解释反斜杠转义,且不输出命令末尾的新行,如果需要新行,在FORMAT里包含\n
  • -t, --terse:输出信息的简洁格式。

输出格式的选项参考man文档。

继续阅读

ln 创建链接文件

ln

在文件之间创建链接。链接有硬链接、软链接之分。软链接(soft link)也就是符号连接(symbolic link)。

使用形式

  • ln [option]... [-T] target link_name:用link_name创建一个链接到target。
  • ln [option]... target:在当前目录下创建一个链接到target。
  • ln [option]... target... directory:为directory目录下的每个target创建链接。
  • ln [option]... -t directory target...:为directory目录下的每个target创建链接。

默认创建硬链接,用 --symbolic-s 选项创建软链接。
当创建硬链接时,每个target必须存在。软链接可以持有任意的文本(指向目的文件的路径),即使target不存在。

选项

  • -s, --symbolic:创建软链接,而不是硬链接。
  • -f, --force:移除已经存在的目的文件。
  • -i, --interactive:提示是否移除目的文件。
  • -P, --physical:创建链接文件到链接文件所指向的文件。
  • -t, --target-directory=DIRECTORY:在制定目录下创建链接文件。
  • -T, --no-target-directory:把 link_name 作为普通文件对待。
  • --backup[=CONTROL]:为每个目的文件创建一个备份(创建链接而不是拷贝内容)。
  • -b:与--backup一样,但不接收参数。
  • -d, -F, --directory:允许超级用户尝试硬链接到目录。(可能会因为系统的约束而失败)
  • -S, --suffix=SUFFIX:覆盖通常的备份后缀。
  • -v, --verbose:打印每个链接文件的名字。

继续阅读

开机自动执行脚本 与 update-rc.d

所有的机器都有可能重启,很多应用程序、服务需要在机器启动的时候自动执行,这里记录两种开机执行脚本的方法及相关的一个命令。

修改/etc/rc.local

/etc/rc.localexit 0语句之间添加启动脚本。脚本必须具有可执行权限。

用update-rc.d命令添加开机执行脚本

创建要开机自动执行的脚本:/home/test/blog/startBlog.sh,并给予可执行权限:chmod +x /home/test/blog/startBlog.sh

/etc/init.d目录下创建链接文件到前面的脚本: ln -s /home/test/blog/startBlog.sh /etc/init.d/startBlog

进入/etc/init.d目录,用 update-rc.d 命令将连接文件 startBlog 添加到启动脚本中去:update-rc.d startBlog defaults 99
其中的99表示启动顺序,取值范围是0-99。序号越大的越晚执行。

移除启动的脚本:update-rc.d -f startBlog remove
-f选项表示强制执行。

update-rc.d命令

此命令用于安装或移除System-V风格的初始化脚本连接。脚本是存放在 /etc/init.d/目录下的,当然可以在此目录创建连接文件连接到存放在其他地方的脚本文件。

此命令可以指定脚本的执行序号,序号的取值范围是 0-99,序号越大,越迟执行。

用法

update-rc.d [-n] [-f] name remove 用于移除脚本。
update-rc.d [-n] name default [NN | SS KK],NN表示执行序号(0-99),SS表示启动时的执行序号,KK表示关机时的执行序号,SS、KK主要用于在脚本直接的执行顺序上有依赖关系的情况下。

选项

  • -n:不做任何事情,只显示将要做的。(预览、做测试)
  • -f:强制移除符号连接,即使 /etc/init.d/script-name 仍然存在。

举例

update-rc.d startBlog defaults 99:添加一个启动连接,执行序号是99。

如果执行脚本B需要先执行脚本A,如下设置(A的启动顺序比B的小,结束顺序比B的大):
update-rc.d script_for_A defaults 80 20
update-rc.d script_for_B defaults 90 10

添加一个不被其他任何服务需要的服务:update-rc.d script_name defaults 98 02

添加一个需要 开始/结束 序号在20的服务的服务:update-rc.d script_depends_on_service_20 default 21 19

移除一个脚本,假定/etc/init.d/目录下的脚本文件已先被删除:update-rc.d script_name remove

移除一个脚本,不管/etc/init.d/目录下的脚本文件是否已删除:update-rc.d -f script_name remove


欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。