linux 命令 ip

ip 命令跟 ifconfig 命令有些类似,但要强力的多,它有许多新功能。

ifconfig 是 net-tools 中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2 套件里提供了许多增强功能的命令,ip 命令是其中之一。

Net tools vs Iproute2

假设我们服务器的网卡名为 enp0s3。

网卡 ip link

检查网卡的诸如 IP 地址,子网等网络信息,使用 ip addr show 命令:

$ ip a

这会显示系统中所有可用网卡的相关网络信息,不过如果你想查看某块网卡的信息,则命令为:

$ ip addr show eth0

这里 eth0 是网卡的名字。

启用/禁用网卡:

使用 ip 命令来启用一个被禁用的网卡:

$ ip link set enp0s3 up

而要禁用网卡则使用 down 触发器:

$ ip link set enp0s3 down

IP ip addr

要为网卡分配 IP 地址,我们使用下面命令:

$ ip addr add 192.168.0.50/255.255.255.0 dev eth0
$ ip addr add 192.168.0.193/24 dev eth0

也可以使用 ip 命令来设置广播地址。默认是没有设置广播地址的,设置广播地址的命令为:

$ ip addr add broadcast 192.168.0.255 dev enp0s3

我们也可以使用下面命令来根据 IP 地址设置标准的广播地址, brd 代替 broadcast 来设置广播地址:

$ ip addr add 192.168.0.10/24 brd + dev enp0s3

若想从网卡中删掉某个 IP,使用如下 ip 命令:

$ ip addr del 192.168.0.10/24 dev enp0s3

添加别名,即为网卡添加不止一个 IP,执行下面命令:

$ ip addr add 192.168.0.20/24 dev enp0s3 label enp0s3:1

ipv6

$ ip -6 addr show [dev <接口名>]

路由表 ip route

查看路由信息会给我们显示数据包到达目的地的路由路径。要查看网络路由信息,执行下面命令:

$ ip route show

在上面输出结果中,我们能够看到所有网卡上数据包的路由信息。我们也可以获取特定 IP 的路由信息,方法是:

$ ip route get 192.168.0.1

我们也可以使用 IP 来修改数据包的默认路由。方法是使用 ip route 命令:

$ ip route add default via 192.168.0.150/24

这样所有的网络数据包通过 192.168.0.150 来转发,而不是以前的默认路由了。若要修改某个网卡的默认路由,执行:

$ ip route add 172.16.32.32 via 192.168.0.150/24 dev enp0s3

要删除之前设置的默认路由,打开终端然后运行:

$ ip route del 192.168.0.150/24

注意: 用上面方法修改的默认路由只是临时有效的,在系统重启后所有的改动都会丢失。要永久修改路由,需要修改或创建 route-enp0s3 文件。将下面这行加入其中:

$ vi /etc/sysconfig/network-scripts/route-enp0s3172.16.32.32 via 192.168.0.150/24 dev enp0s3

保存并退出该文件。

若你使用的是基于 Ubuntu 或 debian 的操作系统,则该要修改的文件为 /etc/network/interfaces,然后添加 ip route add 172.16.32.32 via 192.168.0.150/24 dev enp0s3 这行到文件末尾。

ARP ip neigh

ARP,是地址解析协议Address Resolution Protocol的缩写,用于将 IP 地址转换为物理地址(也就是 MAC 地址)。所有的 IP 和其对应的 MAC 明细都存储在一张表中,这张表叫做 ARP 缓存。

要查看 ARP 缓存中的记录,即连接到局域网中设备的 MAC 地址,则使用如下 ip 命令:

$ ip neigh

删除 ARP 记录的命令为:

$ ip neigh del 192.168.0.106 dev enp0s3

若想往 ARP 缓存中添加新记录,则命令为:

$ ip neigh add 192.168.0.150 lladdr 33:1g:75:37:r3:84 dev enp0s3 nud perm

这里 nud 的意思是 “neghbour state”(网络邻居状态),它的值可以是:

  • perm - 永久有效并且只能被管理员删除
  • noarp - 记录有效,但在生命周期过期后就允许被删除了
  • stale - 记录有效,但可能已经过期
  • reachable - 记录有效,但超时后就失效了

清空ARP表(不影响永久条目)

ip neigh flush all

查看网络信息

通过 ip 命令还能查看网络的统计信息,比如所有网卡上传输的字节数和报文数,错误或丢弃的报文数等。使用 ip -s link 命令来查看:

$ ip -s link

监控netlink消息

也可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:

$ ip monitor all

参考资料


常见的黑入网站的链接

如果你手头有网站放在互联网上,只要搜索一遍 nginx 或者 apache 的日志,肯定看到很多奇怪的请求链接。

我也是如此。这篇文章纯粹做个记录,遇到新的请求也会记录更新本文。

  • /wp-login.php
  • /phpmyadmin/
  • /xmlrpc.php
  • /_Incapsula_Resource
  • /index.php/api/Uploadify/preview
  • /user.php
  • /d.php
  • /plus/moon.php
  • /plus/mytag_js.php
  • /type.php
  • /data/cache_template/rss.tpl.php
  • /robots1.php
  • /robots.php
  • /x.php
  • /index.php
  • /uploadfile/member/0/0x0.php
  • /index.php
  • /x.php
  • /SiteServer/Ajax/ajaxOtherService.aspx
  • /SiteFiles/SiteTemplates/sectest/include.aspx
  • /index.php
  • bad URI /admin_aspcms/_system/AspCms_SiteSetting.asp
  • /fckeditor/editor/filemanager/upload/php/upload.php
  • /view/img/favicon.ico
  • /home/favicon.ico
  • /view/img/favicon.ico
  • /2/favicon.ico
  • /3/favicon.ico
  • /home/favicon.ico
  • /2/favicon.ico
  • /3/favicon.ico
  • /wp-login.php
  • /wls-wsat/coordinatorporttype
  • /index.php/api/Uploadify/preview
  • /user.php
  • /user.php
  • /d.php
  • /plus/moon.php
  • /plus/mytag_js.php
  • /type.php
  • /data/cache_template/rss.tpl.php
  • /robots1.php
  • /robots.php
  • /x.php
  • /index.php
  • /uploadfile/member/0/0x0.php
  • /index.php
  • /index.php/list/5/
  • /x.php
  • /SiteServer/Ajax/ajaxOtherService.aspx
  • /SiteFiles/SiteTemplates/sectest/include.aspx
  • /index.php
  • bad URI /admin_aspcms/_system/AspCms_SiteSetting.as
  • /wp-login.php
  • /recordings/Do.php
  • /recordings/Do.php *
  • /ads.txt
  • /vuln1.php
  • /pe.php
  • /test.php
  • /she.php
  • /hh.php
  • /_asterisk/
  • /category/tags/hacker.html
  • /recordings/Do.php
  • /_asterisk/
  • /TP/public/index.php
  • /TP/index.php
  • /thinkphp/html/public/index.php
  • /html/public/index.php
  • /public/index.php
  • /TP/html/public/index.php
  • /elrekt.php
  • /index.php
  • /wp-content/themes/headway-166/style.css not foun
  • /w00tw00t.at.blackhats.romanian.anti-sec:) *
  • /phpMyAdmin
  • unsupported method POST
  • /login
  • unsupported method PUT
  • unsupported method PUT
  • unsupported method PUT
  • /FxCodeShell.jsp
  • /wp-login.php
  • /.env
  • unsupported method POST
  • /.well-known/assetlinks.json
  • /wp-login.php
  • /wp-login.php
  • /thinkphp/base.php

debian 下简单的时间同步

以前写过一个 CentOS 下的 ntp 时间同步,centos 一般公司的服务器会使用。就我个人还是比较习惯 Debian 系的,所以我Debian 系的一些文章都是相对简易的,主要目标就是 It Just Work 即可。

说一下写这篇的背景,我给自己服务器中安装了 Etcd 集群,使用集群的时候就有一个重要的前提——时钟一致。一般的做法是在集群中指定一台机器作为ntp服务器,由这台向远端同步,其它机器同步这台。

个人服务要求不高的话,可以在所有机器中按照如下方式实现:

  1. 安装
     $ sudo apt-get update
     $ sudo apt-get install ntpdate -y
    
  2. 同步

     ntpdate time.windows.com
    

    当然也可以用阿里的服务器 ntp.aliyun.com

  3. 定时同步 每小时同步一次

     $ sudo crontab -e
    
     在最后一行添加
     5 * * * * ntpdate time.windows.com > /dev/null 2>&1
    

Debian 8 修改本机dns地址

最近架设了自用的dns服务器,修改本机的 /etc/resolv.conf 实际上并不生效,解决办法如下:

  1. 查看 /etc/resolv.conf 文件头部

先说说为什么/etc/resolv.conf每次重启会清理掉,通过ls -l 查看,会发现resolv.conf只是一个软链接文件,源文件位于/run/resolvconf/resolv.conf ,查看该文件会发现如下两条注释:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

上面已经说的非常清晰明了了。

解决方法

方法一:

/etc/network/interfaces中添加一行DNS信息

dns-nameservers 8.8.8.8

方法二:

编辑/etc/resolvconf/resolv.conf.d/base文件,加入DNS信息

nameserver 8.8.8.8

方法三:

编辑/etc/resolvconf/resolv.conf.d/head 文件,在其中加入DNS信息

nameserver 8.8.8.8

注:此方法虽然有用但不推荐,因为该文件中,同样有警告信息。

增加完DNS信息后,执行下面的命令生效

resolvconf  -u
service networking restart

执行完该命令后,查看/etc/resovle.conf文件,会发现其DNS信息,就是我们刚刚在方法一或方法二中写的DNS信息。