标签 IP 下的文章

prips是一个可以打印出指定范围内所有ip地址的一个工具。它可以增强那些只能同时工作在一个主机上的工具的可用性。

在ubuntu上安装prips

打开终端并输入下面的命令

sudo apt-get install prips

使用prips

prips语法

prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] start end
prips [-c] [-d delim] [-e exclude] [-f format] [-i incr] CIDR-block

可用选项

prips接受下面的命令行选项:

  • -c -- 以CIDR形式打印范围。
  • -d 分隔符 -- 用ASCII码作为分隔符,0 <= 分隔符 <= 255。
  • -e -- 排除输出的范围。
  • -f 格式 -- 设置地址格式 (hex:16进制, dec:10进制, 或者dot:以点分隔).
  • -i 增长 -- 设置增长上限

Prips示例

显示保留的子网内的所有地址:

prips 192.168.32.0 192.168.32.255

同上面一样,使用CIDR标示:

prips 192.168.32/24

只显示A类保留子网内所有可用的地址,用空格而不是换行作为分隔符:

prips -d 32 10.0.0.1 10.255.255.255

每块显示4个ip地址:

prips -i 4 192.168.32.7 192.168.33.5

打印包含两个地址的最小CIDR块。

prips -c 192.168.32.5 192.168.32.11

via: http://www.ubuntugeek.com/prips-print-ip-address-on-a-given-range.html

作者:ruchi 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

在过去的十年间,IPv6 本来应该得到很大的发展,但事实上这种好事并没有降临。由此导致了一个结果,那就是大部分人都不了解 IPv6 的一些知识:它是什么,怎么使用,以及,为什么它会存在?

IPv4 and IPv6 Comparison

IPv4 和 IPv6 的区别

IPv4 做错了什么?

自从1981年发布了 RFC 791 标准以来我们就一直在使用 IPv4。在那个时候,电脑又大又贵还不多见,而 IPv4 号称能提供40亿条 IP 地址,在当时看来,这个数字好大好大。不幸的是,这么多的 IP 地址并没有被充分利用起来,地址与地址之间存在间隙。举个例子,一家公司可能有254(2 8-2)条地址,但只使用其中的25条,剩下的229条被空占着,以备将来之需。于是这些空闲着的地址不能服务于真正需要它们的用户,原因就是网络路由规则的限制。最终的结果是在1981年看起来那个好大好大的数字,在2014年看起来变得好小好小。

互联网工程任务组(IETF)在90年代初指出了这个问题,并提供了两套解决方案:无类型域间选路(CIDR)以及私有IP地址。在 CIDR 出现之前,你只能选择三种网络地址长度:24 位 (共16,777,214个可用地址), 20位 (共1,048,574个可用地址)以及16位 (共65,534个可用地址)。CIDR 出现之后,你可以将一个网络再划分成多个子网。

举个例子,如果你需要5个 IP 地址,你的 ISP 会为你提供一个子网,里面的主机地址长度为3位,也就是说你最多能得到6个地址(LCTT:抛开子网的网络号,3位主机地址长度可以表示0~7共8个地址,但第0个和第7个有特殊用途,不能被用户使用,所以你最多能得到6个地址)。这种方法让 ISP 能尽最大效率分配 IP 地址。“私有地址”这套解决方案的效果是,你可以自己创建一个网络,里面的主机可以访问外网的主机,但外网的主机很难访问到你创建的那个网络上的主机,因为你的网络是私有的、别人不可见的。你可以创建一个非常大的网络,因为你可以使用16,777,214个主机地址,并且你可以将这个网络分割成更小的子网,方便自己管理。

也许你现在正在使用私有地址。看看你自己的 IP 地址,如果这个地址在这些范围内:10.0.0.0 – 10.255.255.255172.16.0.0 – 172.31.255.255192.168.0.0 – 192.168.255.255,就说明你在使用私有地址。这两套方案有效地将“IP 地址用尽”这个灾难延迟了好长时间,但这毕竟只是权宜之计,现在我们正面临最终的审判。

IPv4 还有另外一个问题,那就是这个协议的消息头长度可变。如果数据的路由通过软件来实现,这个问题还好说。但现在路由器功能都是由硬件提供的,处理变长消息头对硬件来说是一件困难的事情。一个大的路由器需要处理来自世界各地的大量数据包,这个时候路由器的负载是非常大的。所以很明显,我们需要固定消息头的长度。

在分配 IP 地址的同时,还有一个问题,因特网是美国人发明的(LCTT:这个万恶的资本主义国家占用了大量 IP 地址)。其他国家只得到了 IP 地址的碎片。我们需要重新定制一个架构,让连续的 IP 地址能在地理位置上集中分布,这样一来路由表可以做的更小(LCTT:想想吧,网速肯定更快)。

还有一个问题,这个问题你听起来可能还不大相信,就是 IPv4 配置起来比较困难,而且还不好改变。你可能不会碰到这个问题,因为你的路由器为你做了这些事情,不用你去操心。但是你的 ISP 对此一直是很头疼的。

下一代因特网需要考虑上述的所有问题。

IPv6 和它的优点

IETF 在1995年12月公布了下一代 IP 地址标准,名字叫 IPv6,为什么不是 IPv5?→\_→ 因为某个错误原因,“版本5”这个编号被其他项目用去了。IPv6 的优点如下:

  • 128位地址长度(共有3.402823669×10³⁸个地址)
  • 其架构下的地址在逻辑上聚合
  • 消息头长度固定
  • 支持自动配置和修改你的网络。

我们一项一项地分析这些特点:

地址

人们谈到 IPv6 时,第一件注意到的事情就是它的地址好多好多。为什么要这么多?因为设计者考虑到地址不能被充分利用起来,我们必须提供足够多的地址,让用户去挥霍,从而达到一些特殊目的。所以如果你想架设自己的 IPv6 网络,你的 ISP 可以给你分配拥有64位主机地址长度的网络(可以分配1.844674407×10¹⁹台主机),你想怎么玩就怎么玩。

聚合

有这么多的地址,这些地址可以被稀稀拉拉地分配给主机,从而更高效地路由数据包。算一笔帐啊,你的 ISP 拿到一个80位地址长度的网络空间,其中16位是 ISP 的子网地址,剩下64位分给你作为主机地址。这样一来,你的 ISP 可以分配65,534个子网。

然而,这些地址分配不是一成不变地,如果 ISP 想拥有更多的小子网,完全可以做到(当然,土豪 ISP 可能会要求再来一个80位网络空间)。最高的48位地址是相互独立地,也就是说 ISP 与 ISP 之间虽然可能分到相同地80位网络空间,但是这两个空间是相互隔离的,好处就是一个网络空间里面的地址会聚合在一起。

固定的消息头长度

IPv4 消息头长度可变,但 IPv6 消息头长度被固定为40字节。IPv4 会由于额外的参数导致消息头变长,IPv6 中,如果有额外参数,这些信息会被放到一个紧挨着消息头的地方,不会被路由器处理,当消息到达目的地时,这些额外参数会被软件提取出来。

IPv6 消息头有一个部分叫“flow”,是一个20位伪随机数,用于简化路由器对数据包的路由过程。如果一个数据包存在“flow”,路由器就可以根据这个值作为索引查找路由表,不必慢吞吞地遍历整张路由表来查询路由路径。这个优点使 IPv6 更容易被路由。

自动配置

IPv6 中,当主机开机时,会检查本地网络,看看有没有其他主机使用了自己的 IP 地址。如果地址没有被使用,就接着查询本地的 IPv6 路由器,找到后就向它请求一个 IPv6 地址。然后这台主机就可以连上互联网了 —— 它有自己的 IP 地址,和自己的默认路由器。

如果这台默认路由器宕机,主机就会接着找其他路由器,作为备用路由器。这个功能在 IPv4 协议里实现起来非常困难。同样地,假如路由器想改变自己的地址,自己改掉就好了。主机会自动搜索路由器,并自动更新路由器地址。路由器会同时保存新老地址,直到所有主机都把自己地路由器地址更新成新地址。

IPv6 自动配置还不是一个完整地解决方案。想要有效地使用互联网,一台主机还需要另外的东西:域名服务器、时间同步服务器、或者还需要一台文件服务器。于是 dhcp6 出现了,提供与 dhcp 一样的服务,唯一的区别是 dhcp6 的机器可以在可路由的状态下启动,一个 dhcp 进程可以为大量网络提供服务。

唯一的大问题

如果 IPv6 真的比 IPv4 好那么多,为什么它还没有被广泛使用起来(Google 在2014年5月份估计 IPv6 的市场占有率为4%)?一个最基本的原因是“先有鸡还是先有蛋”。服务商想让自己的服务器为尽可能多的客户提供服务,这就意味着他们必须部署一个 IPv4 地址。

当然,他们可以同时使用 IPv4 和 IPv6 两套地址,但很少有客户会用到 IPv6,并且你还需要对你的软件做一些小修改来适应 IPv6。另外比较头疼的一点是,很多家庭的路由器压根不支持 IPv6。还有就是 ISP 也不愿意支持 IPv6,我问过我的 ISP 这个问题,得到的回答是:只有客户明确指出要部署这个时,他们才会用 IPv6。然后我问了现在有多少人有这个需求,答案是:包括我在内,共有1个。

与这种现实状况呈明显对比的是,所有主流操作系统:Windows、OS X、Linux 都默认支持 IPv6 好多年了。这些操作系统甚至提供软件让 IPv6 的数据包披上 IPv4 的皮来骗过那些会丢弃 IPv6 数据包的主机,从而达到传输数据的目的。

总结

IPv4 已经为我们服务了好长时间。但是它的缺陷会在不远的将来遭遇不可克服的困难。IPv6 通过改变地址分配规则、简化数据包路由过程、简化首次加入网络时的配置过程等策略,可以完美解决这个问题。

问题是,大众在接受和使用 IPv6 的过程中进展缓慢,因为改变代价太大了。好消息是所有操作系统都支持 IPv6,所以当你有一天想做出改变,你的电脑只需要改变一点点东西,就能转到全新的架构体系中去。


via: http://www.tecmint.com/ipv4-and-ipv6-comparison/

作者:Jeff Silverman 译者:bazz2 校对:Mr小眼儿

本文由 LCTT 原创翻译,Linux中国 荣誉推出

【编者注】都说IPv4地址枯竭了,要推广IPv6,但是迟迟不见动静,既然如此,在它完全就绪前,就不要让它来打扰我们的系统好了。

IPv6

IPv6是寻址方案IPv4的下一个版本,被用来给域名分配数字地址。

IPv6比IPv4支持更多的地址。然而,它还没有被广泛支持,还在被接受的过程中。

你的系统支持IPv6么?

为了支持IPv6,需要很多事情。首先你需要系统/操作系统支持IPv6。Ubuntu,Linux Mint,和大多是现代发行版都支持它。如果你看一下ifconfig指令的输出,你就会看见你的网络接口被分配了IPv6地址。

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:1c:c0:f8:79:ee  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fef8:79ee/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:110880 errors:0 dropped:0 overruns:0 frame:0
          TX packets:111960 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:62289395 (62.2 MB)  TX bytes:25169458 (25.1 MB)
          Interrupt:20 Memory:e3200000-e3220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:45258 errors:0 dropped:0 overruns:0 frame:0
          TX packets:45258 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4900560 (4.9 MB)  TX bytes:4900560 (4.9 MB)

看一下行“inet6 addr”。

接下来你需要一个支持ipv6的路由器/调制解调器。此外,你的ISP也必须支持IPv6。

除了检查网络设备的每一部分,最好查出你是否可以通过IPv6访问网站。

有很多网站可以检测你的网络连接是否支持IPv6. 这里就是个例子:http://testmyipv6.com/

下面是在内核中启用IPv6的参数:

$ sysctl net.ipv6.conf.all.disable_ipv6
net.ipv6.conf.all.disable_ipv6 = 0

$ sysctl net.ipv6.conf.default.disable_ipv6
net.ipv6.conf.default.disable_ipv6 = 0

$ sysctl net.ipv6.conf.lo.disable_ipv6
net.ipv6.conf.lo.disable_ipv6 = 0

同样可以在proc文件中检查

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
0

注意这里的变量是控制IPv6的“禁用”。所以设置1就会禁用IPv6。

如果它不支持就禁用IPv6

如果你的网络设备中不支持IPv6,那最好就全部禁用它们。为什么?因为这会引起域名查询延迟,在网络连接中不必要地尝试连接到IPv6地址导致延迟等等问题。

我也遇到过像这样的问题,apt-get命令偶尔会尝试连接到IPv6地址失败接着检索IPv4地址。看一下下面的输出。

$ sudo apt-get update
Ign http://archive.canonical.com trusty InRelease
Ign http://archive.canonical.com raring InRelease                                                                                                    
Err http://archive.canonical.com trusty Release.gpg                                                                                                  
  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]
Err http://archive.canonical.com raring Release.gpg                                                                                                  
  Cannot initiate the connection to archive.canonical.com:80 (2001:67c:1360:8c01::1b). - connect (101: Network is unreachable) [IP: 2001:67c:1360:8c01::1b 80]

.....

像这样的错误在最近的Ubuntu中更频繁了,或许它比以前更频繁地尝试使用IPv6地址。

我在其他的应用上也注意到了相似的问题,如Hexchat,同样Google Chrome也会有时会在查询域名的时候花费更长的时间。

所以最好的方案是完全禁用IPv6来摆脱这些事情。这只需要一点点配置但可以帮助你解决很多你系统上的很多问题。用户甚至反应这可以加速网络。

禁用 IPv6 - 方案1

编辑文件 - /etc/sysctl.conf

$ sudo gedit /etc/sysctl.conf

在文件的最后加入下面的行。

# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

保存并关闭

重启sysctl

$ sudo sysctl -p

再次检查ifconfig的输出,这里应该没有IPv6地址了。

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:5f:28:8b  
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1346 errors:0 dropped:0 overruns:0 frame:0
          TX packets:965 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1501691 (1.5 MB)  TX bytes:104883 (104.8 KB)

如果不行,尝试重启系统并再次检查ifconfig

禁用 IPv6 - GRUB 方案

IPv6同样可以通过编辑grub配置文件禁用。

$ sudo gedit /etc/default/grub

查找包含"GRUBCMDLINELINUX"的行,并如下编辑:

GRUB_CMDLINE_LINUX="ipv6.disable=1"

同样可以加入名为"GRUBCMDLINELINUX\_DEFAULT"的变量,这同样有用。保存并关闭文件,重新生成grub配置。

$ sudo update-grub2

重启,现在IPv6应该就已经禁用了。


via: http://www.binarytides.com/disable-ipv6-ubuntu/

译者:geekpi ,校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们。它们通过DHCP服务器分配并且会经常改变。现在有两种IP地址。动态的一种会经常改变(几天一次),而静态的就如它的名字那样是静态的,意味着它们不会改变。

有时这会引发一些冲突。当一个动态IP被分配了并且有另外一台网络设备已经拥有了相同的IP。或者在相同网络子网上有多台分配IP的DHCP服务器。如果你有连通问题并且假设它是由于IP冲突造成的,那么你可以使用一个工具称作arp-scan来扫描它们。

这个工具会在本地网络发送ARP(Address Resolution Protocol)(地址解析协议)包来收集地址。如果有多个MAC地址声称拥有相同的IP地址,那么这里就存在冲突。

要在Ubuntu或者Debian上安装arp-scan则输入:

$ sudo apt-get install arp-scan

对于Fedora,CentOS或者RedHat:

$ sudo yum install arp-scan

要检测IP冲突,运行下面的命令:

$ sudo arp-scan –I eth0 -l

输出示例:

192.168.1.10   00:1b:a9:63:a2:4c       BROTHER INDUSTRIES, LTD.
192.168.1.30   00:1e:8f:58:ec:49       CANON INC.
192.168.1.33   00:25:4b:1b:10:20       Apple, Inc
192.168.1.37   10:9a:dd:55:d7:95       Apple Inc
192.168.1.38   20:c9:d0:27:8d:56       (Unknown)
192.168.1.39   d4:85:64:4d:35:be       Hewlett Packard
192.168.1.39   00:0b:46:e4:8e:6d       Cisco (DUP: 2)
192.168.1.40   90:2b:34:18:59:c0       (Unknown)

在本例中,192.168.1.39这个IP冲突了,因为它出现了两次。


via: http://www.unixmen.com/find-ip-conflicts-linux/

译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出