分类目录归档:network

MAC地址厂商分配表

MAC 对照表可从ieee获得

http://standards-oui.ieee.org/oui/oui.txt

。。。。。

这个MAC对照表资源是从wireshark源码中获取的。
每块网卡都有一个MAC地址,MAC地址是一个6字节、也即48bit的数据。前3字节称为OUI,是由IEEE组织注册给网络设备生产商的;每个厂商拥有一个或多个OUI,彼此不同。后三字节则是由网络设备生产商分配给自己生产的每一个拥有MAC地址的设备,互不重复。
原理就是根据MAC地址前3字节来判断的,前3个字节、对应制造商的名称
此TXT资源是MAC前3字节与对应制造商的名称的对应关系表,如下所示:
000000 Xerox
000001 Xerox
000002 Xerox
000003 Xerox
000004 Xerox
000005 Xerox
000006 Xerox
000007 Xerox
000008 Xerox
000009 Xerox
00000A Omron Tateisi Electronics CO.
00000B Matrix
。。。。。。
001110 Maxanna Technology Co.
001111 Intel
001112 Honeywell Cmss
。。。。。。
001301 IronGate S.L.
001302 Intel Corporate
001303 GateConnect Technologies GmbH
001838 PanAccess Communications
001839 Cisco-Linksys
00183A Westell Technologies
00183B Cenits Co.
。。。。。。
001D09 Dell
001D0A Davis Instruments
001D0B Power Standards Lab
001D0C MobileCompia
。。。。。。
005055 Doms A/S
005056 VMWare
005057 Broadband Access Systems
有19037个不同制造商,见资源文件txt
Wireshark解析MAC地址时会把前三个字节解析为一个公司的名字。
例如:
MAC Address: 00:1D:09:14:D2:7E  (Dell)
MAC Address: 00:1E:4F:E7:FE:F9   (Dell)
MAC Address: 00:13:02:81:7C:36   (Intel Corporate)
MAC Address: 00:11:11:74:02:72    (Intel)
MAC Address: 00:1D:72:8C:8B:96   (Wistron)
MAC Address: 00:18:39:84:8B:84    (Cisco-Linksys)
MAC Address: 00:50:56:C0:00:01    (VMWare)                        



..
虚拟化:

在VM的世界中,每一台拥有虚拟NIC(网卡)的设备当然也拥有MAC地址。
这虚拟网卡的MAC地址,当然也是按照规定,前三字节为OUI,后三字节逐一分配给每个设备。
由于虚拟网卡的”制造商“是VMware,XenSource,微软 等虚拟平台软件的生产商,OUI当然就分配给了他们。

VMware VM所使用的OUI
按照VMware ESX 3的[Server Configuration Guide ]的说法,VMware的使用下面的三个OUI作为VM的MAC地址:
00:0C:29 – 用于自动生成的MAC地址
00:50:56 – 用于手动设置的MAC地址
00:05:69 – 曾经用于旧版本的VM(大约是在ESX 1.5的时代),在ESX 3中已经不再使用
但是在实际应用中,发现00:50:56这一MAC地址段并不是完全用于手动设置的MAC地址:
00:50:56:00:00:00 – 00:50:56:3F:FF:FF
这一段MAC地址可以用于手动设置的MAC地址
00:50:56:40:00:00 – 00:50:56:FF:FF:FF

MAC地址的生成
OUI有了,后三字节如何生成呢?要知道虚拟机是经常被创建和销毁的,这一点不像实体PC。网卡生产商可以计算每年生产多少块网卡,从而为每块网卡分配不同的MAC地址; VMware却不可能计算出每年有多少台VM、有多少块虚拟网卡被创建。
VMware ESX Server的算法是,使用散列算法,通过VM的UUID来生成MAC地址。VM的UUID是每一台VM特有的、128bit的ID,是由ESX Server硬件SMBIOS的UUID、加上VM的路径生成的。因此,一台虚拟机的虚拟网卡的MAC地址就与下面四个因素有关:
VMware的OUI
Host (ESX Server)的SMBIOS中的UUID
VM在服务器上的路径
网卡的实体名 (Entity Name),用来确保同一VM上的不同网卡有不同的MAC地址

 

..

pluto实现分析

pluto实现分析(1)
本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。
msn: yfydz_no1@hotmail.com
来源:http://yfydz.cublog.cn
1. 前言
pluto是著名的VPN开源项目freeswan及其后续项目中的一个重要组成部分,实现了IKEv1(RFC2409),原始的fresswan只是实现IKE的基本功能,但不包括很多其他扩展功能,都需要打补丁实现,freeswan停止开发后,继续扩展出两个不同的分支,openswan和strongswan,前者综合各种功能的补丁,IKE功能比较全面;后者功能相对少点,但重要特点就是支持了IKEv2(RFC4306),因此两者各有优势。目前国内做IPSec VPN的基本都是基于这实现的,好象没听说一家国内公司敢拍胸脯说自己的VPN产品是全部是自己写的代码,所作的最大改动就是增加硬件加密卡的支持了。目前国内IKEv2使用的可能性应该还不大,因为即使是上面要制定的国内的VPN标准其实还是根据IKEv1来走的,会不会升级到IKEv2还是未知数。
本文主要是解析openswan-2.4.7中的pluto的实现过程,代码基本都是在programs/pluto目录下。
2. IKEv1概述
2.1 概述
IKEv1在RFC2409中定义,用于定义自动建立IPSec SA的协商处理过程,该RFC只是定义数据的交换过程,而具体的数据格式的定义则是在RFC2408中定义的。
IKEv1协商过程分两个阶段,第一个阶段分两种模式,一种是主模式(main mode),是用于正常情况下的协商处理,交换数据回合比较多,速度较慢,这个模式是IKE的具体实现中必须实现的;另一种的野蛮模式(Aggressive Mode),这种模式的数据交换回合比较少,速度较快,但有不安全因素,通常用于已经建立过的IPSec连接中断后的重新建立处理,而且不是在具体实现中必须实现的。第一阶段的处理目的是建立一个ISAKMP SA,为下一阶段的协商建立安全通道。
IKEv1的第二阶段只有一种模式:快速模式(quick mode),通过这个阶段的数据协商,最终建立起IPSec SA。
对于扩展认证EAP(XAUTH),是在第一阶段结束,第二阶段开始前处理的。
在进行协商时,肯定是要用到非对称加密算法或DH交换来协商对称加密密钥的,使用非对称加密算法时可以使用RSA,或者是本质相同的相同的;另外也可以使用共享密钥方式进行对称密钥的协商,协商算法可使用DH。按不同的密钥处理方法,IKEv1的协商过程也有区别。
2.2 第一阶段: (以下各类是独立,HDR*表示数据包是加密的)

1) Authenticated With Signatures
主模式:
Initiator                          Responder
-----------                        -----------
HDR, SA                -->
                    <--             HDR, SA
HDR, KE, Ni            -->
                    <--          HDR, KE, Nr
HDR*, IDii, [ CERT, ] SIG_I     -->
             <--  HDR*, IDir, [ CERT, ] SIG_R
野蛮模式:
Initiator                          Responder
-----------                        -----------
HDR, SA, KE, Ni, IDii  -->
                      <--    HDR, SA, KE, Nr,
                              IDir, [ CERT, ]
                          SIG_RHDR, [ CERT, ] 
SIG_I                  -->
2) Authenticated With Public Key Encryption
主模式:
Initiator                        Responder
-----------                      -----------
HDR, SA               -->
                  <--           HDR, SA
                       HDR, KE, [ HASH(1), ]
                         PubKey_r,
PubKey_r           -->
HDR, KE, PubKey_i,
                    <--        PubKey_i
HDR*, HASH_I            -->
                      <--    HDR*, HASH_R
野蛮模式:
Initiator                        Responder
-----------                      -----------
HDR, SA, [ HASH(1),] KE,
Pubkey_r,
Pubkey_r         -->
                  HDR, SA, KE, PubKey_i,
            <--         PubKey_i, HASH_R
HDR, HASH_I           -->
3) Authenticated With a Revised Mode of Public Key Encryption
主模式:
Initiator                        Responder
-----------                      -----------
HDR, SA             -->
                         <--    HDR, SA
                         HDR, [ HASH(1), ]
                          Pubkey_r,
                            Ke_i,
                           Ke_i,
[<Ke_i]       -->
HDR, PubKey_i,
Ke_r,
                <--          Ke_r,
HDR*, HASH_I          -->
                <--             HDR*, HASH_R
野蛮模式:
Initiator                        Responder
-----------                      -----------
HDR, SA, [ HASH(1),]
Pubkey_r,
Ke_i, Ke_i
[, Ke_i ]      -->
                     HDR, SA, PubKey_i,
                     Ke_r, Ke_r,
                <--                HASH_R
HDR, HASH_I          -->
 
4) Authenticated With a Pre-Shared Key
主模式:
Initiator                        Responder
----------                       -----------
HDR, SA             -->
                <--                HDR, SA
HDR, KE, Ni           -->
                <--              HDR, KE, Nr
HDR*, IDii, HASH_I         -->
                <--         HDR*, IDir, HASH_R
野蛮模式:
            Initiator                        Responder
-----------                      -----------
HDR, SA, KE, Ni, IDii     -->
                <-- HDR, SA, KE, Nr, IDir, HASH_R
HDR, HASH_I          -->
 
2.3 第二阶段
快速模式:
Initiator                        Responder
-----------                      -----------
HDR*, HASH(1), SA, Ni
[, KE ] [, IDci, IDcr ] -->
                 <--    HDR*, HASH(2), SA, Nr
                      [, KE ] [, IDci, IDcr ]
HDR*, HASH(3)          -->
 
如果有多个SA和密钥可使用下面的数据交换方法:
Initiator                        Responder
-----------                      -----------
HDR*, HASH(1), SA0, SA1, Ni,
[, KE ] [, IDci, IDcr ]     -->
                <--  HDR*, HASH(2), SA0, SA1, Nr,
                     [, KE ] [, IDci, IDcr ]
HDR*, HASH(3)         -->
HASH(1) = prf(SKEYID_a, M-ID | SA | Ni [ | KE ] [ | IDci | IDcr )
HASH(2) = prf(SKEYID_a, M-ID | Ni_b | SA | Nr [ | KE ] [ | IDci | IDcr )
HASH(3) = prf(SKEYID_a, 0 | M-ID | Ni_b | Nr_b)
 
2.4 新组模式(New Group Mode)
新组模式不是必须实现的, 是用来定义DH交换的私有组的, 必须在ISAKMP SA建立前使用, 也就是在第一阶段后, 第二阶段前。
Initiator                        Responder
-----------                      -----------
HDR*, HASH(1), SA        -->
                  <--       HDR*, HASH(2), SA
                    HASH(1) = prf(SKEYID_a, M-ID | SA)
                 HASH(2) = prf(SKEYID_a, M-ID | SA)
 

3. 源文件概述
programs/pluto目录下编译后会生成3个执行文件:pluto, whack, _pluto_adns。其中pluto是基本程序,提供IKEv1服务,打开UDP500和4500端口监听网卡数据,打开UNIX域套接口监听whack的输入,并和内核进行PFKEY/netlink通信;whack是控制程序,通过UNIX域套接口和pluto通信;_pluto_adns
进行异步DNS处理。
各个C程序大致功能如下:
ac.c:X509证书相关支持处理
adns.c:异步DNS辅助处理
asn1.c:简单的ASN.1解析器
certs.c:证书处理
connections.c:连接处理
cookie.c:cookie处理
crypto.c:加密
crypt_dh.c:DH算法
crypt_ke.c:密钥交换KE处理
crypt_utils.c:加密相关函数
db_ops.c:数据库操作
defs.c:一些辅助函数集合
demux.c:数据包解析
dnskey.c:从DNS获取公钥的处理
dpd.c:DPD处理
dsa.c:DSA签名
elgamal.c:ElGamal公开密钥加密
fetch.c:动态获取X.509的证书吊销列表CRL
foodgroups.c:策略组控制
gcryptfix.c:进行gcrypt处理
id.c:端点ID处理
ikeping.c:ping IKE包
ikev1_aggr.c:野蛮模式处理
ikev1_quick.c:快速模式处理
ike_alg.c:IKE算法处理
ike_alginit.c:IKE算法初始化
ike_alg_aes.c:AES加密算法
ike_alg_blowfish.c:blowfish加密算法
ike_alg_serpent.c:serpent加密算法
ike_alg_sha2.c:SHA2哈希算法
ike_alg_twofish.c:twofish加密算法
ipsec_doi.c:IKE模式转换处理
kernel.c:内核接口
kernel_netlink.c:和内核的netlink接口
kernel_noklips.c:noklips模式下的内核接口
kernel_pfkey.c:和内核的pfkey接口
keys.c:密钥处理
lex.c:配置文件语法分析器
log.c:日志处理
md2.c:MD2哈希算法
md5.c:MD5哈希算法
nat_traversal.c:NAT穿越支持
ocsp.c:在线证书状态协议支持
oid.c:常见的一些对象的ID定义
pem.c:PEM格式证书处理
pending.c:连接的相关信息处理
pgp.c:PGP证书处理
pkcs.c:PKCS#1和PKCS#7数据结构支持
plutoalg.c:pluto算法处理
plutomain.c:主函数
pluto_constants.c:pluto常数
pluto_crypt.c:pluto加密算法处理
primegen.c:生成素数
rcv_info.c:接收数据
rcv_whack.c:接收whack输入信息
rnd.c:随机数
server.c:IKE服务
sha1.c:SHA1哈希算法
smallprime.c:小素数处理
smartcard.c:smartcard支持
spdb.c:安全策略数据库处理
spdb_print.c:安全策略输出
spdb_struct.c:安全策略结构
state.c:状态处理
stubs.c:某些功能的stub
sysdep_linux.c:和linux相关的相关处理
timer.c:定时器
vendor.c:VPN功能提供者信息
virtual.c:虚拟IP支持
whack.c:whack控制
whackinit.c:whack初始化
whacklib.c:whack相关库函数
x509.c:X509证书支持
x509keys.c:X509密钥
xauth.c:扩展认证处理
...... 待续 ......

移动网络NAT心跳过期时间

心跳典型值

WhatsApp Line GCM
WIFI 4分45秒 3分20秒 15分钟
手机网络 4分45秒 7分钟 28分钟

移动NAT时间

大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT表中的对应项,造成链路中断。下表列出一些已测试过的网络的NAT超时时间(更多数据由于测试条件所限没有测到):

地区/网络 NAT超时时间
中国移动3G和2G 5分钟
中国联通2G 5分钟
中国电信3G 大于28分钟
美国3G 大于28分钟
台湾3G 大于28分钟

长连接心跳间隔必须要小于NAT超时时间(aging-time),如果超过aging-time不做心跳,TCP长连接链路就会中断。

 

心跳的实现一例:


a. 连接后主动到服务器Sync拉取一次数据,确保连接过程的新消息。
b. 心跳周期的Alarm 唤醒后,一般有几秒的cpu 时间,无需wakelock。
c. 心跳后的Alarm防止发送超时,如服务器正常回包,该Alarm 取消。
d. 如果服务器回包,系统通过网络唤醒,无需wakelock。

 

 

中国国际互联网的接口

海底光缆是国际互联网的骨架。光缆的多少,代表一国与互联网的联系是否紧密。
有人利用微软的Bing地图,以及wikipedia的数据,做出了一幅互动式的世界海底光缆分布图。
中国大陆的海底光缆连接点只有三个,因此非常容易对出入境的信息进行控制。
第一个是青岛(2条光缆)。
第二个是上海(6条光缆)。
第三个是汕头(3条光缆)。
由于光缆之间存在重合,所以实际上,中国大陆与Internet的所有通道,就是3个入口6条光缆。
1. APCN2(亚太二号)海底光缆
带宽:2.56Tbps
长度:19000km
经过地区:中国大陆、香港、台湾、日本、韩国、马来西亚、菲律宾。
入境地点:汕头,上海。

2. CUCN(中美)海底光缆
带宽:2.2Tbps
长度:30000km
经过地区:中国大陆,台湾,日本,韩国,美国。
入境地点:汕头,上海。

3. SEA-ME-WE 3(亚欧)海底光缆
带宽:960Gbps
长度:39000km
经过地区:东亚,东南亚,中东,西欧。
入境地点:汕头,上海。

4. EAC-C2C海底光缆
带宽:10.24Tbps
长度:36800km
经过地区:亚太地区
入境地点:上海,青岛

5. FLAG海底光缆
带宽:10Gbps
长度:27000km
经过地区:西欧,中东,南亚,东亚
入境地点:上海

6. Trans-Pacific Express(TPE,泛太平洋)海底光缆
带宽:5.12Tbps
长度:17700km
经过地区:中国大陆,台湾,韩国,美国
入境地点:上海,青岛

摘自:http://blog.sina.com.cn/s/blog_604a480b0102vi13.html

Windows Socket Connections

最大TCP连接数

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip
\Parameters] TcpNumConnections = 0x00fffffe (Default = 16,777,214)

以上注册表信息配置单机的最大允许的TCP连接数,默认为 16M。这个数值看似很大,这个并不是限制最大连接数的唯一条件,还有其他条件会限制到TCP 连接的最大连接数。

最大动态端口数

TCP客户端和服务器连接时,客户端必须分配一个动态端口,默认情况下这个动态端口的分配范围为 1024-5000 ,也就是说默认情况下,客户端最多可以同时发起3977 个Socket 连接。我们可以修改如下注册表来调整这个动态端口的范围

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters] MaxUserPort = 5000 (Default = 5000, Max = 65534)

最大TCB 数量

系统为每个TCP 连接分配一个TCP 控制块(TCP control block or
TCB),这个控制块用于缓存TCP连接的一些参数,每个TCB需要分配 0.5 KB的pagepool 和 0.5KB
的Non-pagepool,也就说,每个TCP连接会占用 1KB 的系统内存。

系统的最大TCB数量由如下注册表设置决定

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip
\Parameters] MaxFreeTcbs = 2000 (Default = RAM dependent, but usual Pro =
1000, Srv=2000)

非Server版本,MaxFreeTcbs 的默认值为1000 (64M 以上物理内存)

Server 版本,这个的默认值为 2000。

也就是说,默认情况下,Server 版本最多同时可以建立并保持2000个TCP 连接。

最大TCB Hash table 数量

TCB 是通过Hash table 来管理的,下面注册表设置决定了这个Hash table 的大小

HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip
\Parameters] MaxHashTableSize = 512 (Default = 512, Range = 64-65536)

这个值指明分配 pagepool 内存的数量,也就是说,如果MaxFreeTcbs = 1000 , 则 pagepool 的内存数量为 500KB

那么 MaxHashTableSize 应大于 500 才行。这个数量越大,则Hash table 的冗余度就越高,每次分配和查找 TCP 连接用时就越少。这个值必须是2的幂,且最大为65536.

TcpTimedWaitDelay
微軟建議最低可設定續存時間為 30 秒,而且也提到設定 30 秒應該不會出問題,因此我幾乎都只設定 30 秒而已:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters]
"TcpTimedWaitDelay"=dword:0000001e

参考:

IBM WebSphere Voice Server 在windows server 2003 下的典型配置

MaxUserPort = 65534 (Decimal)

MaxHashTableSize = 65536 (Decimal)

MaxFreeTcbs = 16000 (Decimal)

这里 MaxHashTableSize 被配置为比MaxFreeTcbs 大4倍,这样可以大大增加TCP建立的速度。

Links:
http://www.xiaobo.li/network/538.html

ipsec.conf

NAME

ipsec.conf —— IPsec配置
DESCRIPTION

ipsec.conf指定了Openswan IPsec子系统的大多数配置和控制信息。

include ipsec.*.conf 包含指定的配置文件
CONN SECTIONS

conn项定义了一个IPsec连接的规范,名字可以随意定义。例如:

conn snt
		left=10.11.11.1
		leftsubnet=10.0.1.0/24
		leftnexthop=172.16.55.66
		leftsourceip=10.0.1.1
		right=192.168.22.1
		rightsubnet=10.0.2.0/24
		rightnexthop=172.16.88.99
		rightsourceip=10.0.2.1
		keyingtries=%forever

CONN PARAMETERS: GENERAL

connaddrfamily

连接地址族,可用参数为ipv4(缺省)或者ipv6。
IPv6在openswan 2.4中的NETKEY支持和openswan 2.6.33中的KLIPS支持

type

连接类型,参数如下:
tunnel(缺省)表示 host-to-host,host-to-subnet,subnet-to-subnet 隧道模式;
transport,表示 host-to-host传输模式;
passthrough,表示不使用IPsec;        drop,表示丢弃数据;
reject,表示丢弃数据并返回ICMP诊断包

left

[必选项] 左侧设备公网接口IP地址,其中IP地址的格式请看ipsec_ttoaddr(3)。当前支持IPv4和IPv6。
如果其参数为 %defaultroute,同时 config setup 项中的 interfaces 包含 %defaultroute,那么left将自动由本地的缺省路由接口地址填充;leftnexthop也支持。    %any 表示在协商时填充。    %opportunistic 表示 left 和 lefnexthop 的参数从 left 侧客户端的DNS数据中获取

leftsubnet

左侧设备的私有子网,格式为 network/netmask (请看ipsec_ttosubnet(3));当前支持IPv4和IPv6地址范围。
支持 vhost: 和 vnet: 这2个速记,语法与 virtual_private 相同    %priv 表示子网与 virtual_private相同    %no 表示没有子网

leftsubnets

指定左侧设备的多个私有子网,格式 { networkA/netmaskA networkB/netmaskB [..] }。leftsubnet 和 leftsubnets 不能同时使用。 例子请看 testing/pluto/multinet-*

leftprotoport

指定隧道中允许的通过的协议和端口。参数可以是数字或者协议名(请在 /etc/protocols 中查找),例如 leftprotoport=icmp,或 protocol/port,如 tcp/smtp。
ports可以使用数字或名字表示(请在 /etc/services 中查找)。    %any 表示所有的协议端口

leftnexthop

左侧设备连接公网的下一跳网关IP地址;缺省为 %direct。如果这方法没有使用,则leftnexthop为 %defaultroute

leftsourceip

连接中主机的IP地址

leftupdown

当连接状态改变时, 回调此处设置的命令(缺省为 ipsec _updown)。 详细请看 ipsec_pluto(8)

leftfirewall

不再使用此选项

CONN PARAMETERS:AUTOMATIC KEYING

auto

IPsec启动时自动执行,支持的参数有

add (ipsec auto --add)
route(ipsec auto --route)
start(ipsec auto --up)
manual(ipsec manual --up)
ignore 表示不自动启动

具体请看 config setup

authby

2个安全网关之间的认证方法;
secret 表示共享密钥
rsasig 表示RSA数据签名(缺省)
secret|rsasig 同时使用

ike

IKE第一阶段(ISAKMP SA)中的加密/认证算法。
格式为 "cipher-hash;modpgroup,cipher-hash;modpgroup,..."
例如:
ike=3des-sha1,aes-sha1
ike=aes
ike=aes128-md5;modp2048
ike=aes128-sha1;dh22,
ike=3des-md5;modp1024,aes-sha1;modp1536 or ike=modp1536

算法值请查看 ipsec_spi(8)中的 --ike选项。
IKE组合形式:       

cipher:                                    3des or aes
hash:                                      sha1 or md5
pfsgroupt(DHgroup):                        modp1024 or modp153

phase2

设置将产生的SA类型。esp用于加密(缺省),ah用于认证

phase2alg

指定第二阶段中支持的算法。算法之间用逗号分隔

esp

此选项不再使用,用phase2alg代替

ah

连接中的AH算法。算法格式请看 ipsec_spi(8)中的 --ah选项

ikev2

IKEv2(RFC4309)设置使用。
never 或 no 表示不使用IKEv2;
propos 或 yes 表示允许使用IKEv2,同时缺省使用IKEv2进行协商;
insist,表示只接受IKEv2协商,IKEv1将被拒绝;
permit(缺省),表示不主动使用IKEv2,但对端使用IKEv2的话也接受

leftid

左侧参加者的身份确认方法。
可以是IP地址,域名    %fromcert 表示ID从证书的DN获取;%none 表示不使用ID值

leftrsasigkey

左侧RSA签名认证,格式使用RFC2537 ipsec_ttodata(3)编码。    %none 表示不指定值;
%dnsondemand 表示值从DNS中获取当需要使用到此值时;
%dnsonload 表示值从DNS中获取当读取ipsec.conf时;    %cert 表示信息从 %leftcert 中获取

leftrsasigkey2

第2个公钥

leftcert

指定X509证书,如果没有指定全路径,则从 /etc/ipsec.d/certs/ 目录中查找
如果opesnswan编译时指定了 USE_LIBNSS=true,那么openswan将会去NSS数据库中查找RSA key

leftca

指定CA,如果没有指定,那么将用 leftcert 中的证书认为是CA证书

leftsendcert

openswan发送X509证书到远程主机的选项配置。    yes|always 表示总是允许发送证书
ifasked 表示如果远程主机要求证书则进行发送    no|never 表示从不发送证书。
缺省参数为 ifasked

leftxauthserver

左侧为XAUH服务端。可以使用PAM认证或 /etc/ipsec.d/passwd中的MD5口令。对端必须配置为rightxauthclient ,做为XAUTH客户端

leftxauthclient

左侧为XAUT客户端。xauth连接必须进行交互启动,不能使用配置 atuo=start。它必须使用命令行ipsec auto --up conname

leftxauthusername

XAUTH认证中使用的用户名,XAUTH密码在 ipsec.secrets 文件中配置

leftmodecfgserver

左侧是模式配置服务端。它能下发网络配置到客户端。 参数为 yes 或 no (缺省)

leftmodecfgclient

左侧是模式配置客户端。它能从服务端接收网络配置。参数为 yes 或 no (缺省)

modecfgpull

从服务端接收模式配置信息。参数为 yes 或 no (缺省)

modecfgdns1, modecfgdns2, modecfgwins1, modecfgwins2

指定DNS、WINS的IP地址

remote_peer_type

设置远程主机类型。参数为 cisco 或 ietf

forceencaps

参数为 yes 或 no (缺省为no)
当forceencaps=yes时将强制使用RFC-3948封装(UPD端口4500包封闭ESP)
如果此选项打开,那么 nat_traveral=yes必须打开

dpddelay

主机探测延迟时间,缺省为30秒。如果此选项被设置,dpdtimeout也应该设置

dpdtimeout

主机探测超时时间(以秒为单位),缺省为120秒。如果超时,将删除SA

dpdaction

当PDP探测到主机死亡时要执行的动作
hold (缺省)表示eroute将进入 %hold 状态
clear 表示eroute和SA都要清除
restart 表示SA将立即从协商
restart_by_peer 表示所有死亡主机的SA将进行从协商

pfs

参数为 yes 或 no (缺省为yes)

aggrmode

使用野蛮模式替换主模式。野蛮模式不安全,容易受到服务拒绝攻击。
参数为 yes 或 no (缺省为no)

salifetime

SA存活时间,参数为数字 + s/m/h/d (缺省为8h,最大24h)    "keylife""lifetime" 是 "salifetime" 的别名

rekey

参数为 yes 或 no (缺省为 yes)。表示当密钥到期后是否进行从协商

rekeymargin

密钥到期前多长时间进行从协商。参数请看 salifetime (缺省9m)

keyingtries

协商尝试次数。 %forever 表示从不放弃,一直进行协商

ikelifetime

IKE存活时间。参数请看salifetime

compress

是否进行压缩处理。 参数为 yes 或 no (缺省为 no)

metric

设置ipsecX 或 mastX 接口的 metric 优先级

mtu

设置MTU

failureshunt

当协商失败时执行的动作。缺省为 none;passthrough;drop;reject;具体看选项 type

CONFIG SECTIONS

config部分使用为一名字setup,此部分包含了软件启动时所使用到的信息(ipsec_setup(8). 例如:

config setup
		interfaes="ipsec0=eth1 ipsec1=ppp0"
		klipsdebug=none
		plutodebug=control
		protostack=auto
		manualstart=

config setup目前可用的选项如下:

protostack

指定IPsec协议攻栈。参数为 auto/klips/netkey/mast。mast是klips的变种

interfaces

IPsec使用的虚接口和实接口。格式为 "virtual=physical virtual=physical ..."

listen

监听IP地址

nat_traversal

是否支持NAT。参数为 yes 或 no (缺省为no)

disable_port_floasting

是否启用NAT-T。 参数为 yes 或 no (缺省为no)

force_keepalive

是否强制发送NAT-T保活。参数为 yes 或 no (缺省为no)

keep_alive

NAT-T保活包发送间隔时间

oe

是否启用机会加密(Opportunistic Encryption)。参数为 yes 或 no(缺省为no)
只有KLIPS支持此选项

nhelpers

设置pluto处理密码运算的进程(线程)
0表示所有操作都在主线程
-1表示根据CPU进行计算(n-1,n是CPU数)
其它值则表示强制的进程(线程)数

crlcheckinterval

CRL检查间隔时间,单位为秒。 如果设置为0表示开关CRL检查

strictcrlpolicy

是否强制进行CRL检查。参数为 yes 或 no (缺省为no)

forwardcontrol

此选项不再使用。请使用 /etc/sysctl.conf 文件中的 net.ipv4.ip_forward=0 控制IP转发设置

rp_filter

此选项不再使用。请使用 /etc/sysctl.conf 文件中的 net.ipv4.conf/[iface]/rp_filter=0 。 此参数在IPsec必须设置为0

syslog

syslog(2)中的显示名。缺省为 daemon.error

klipsdebug

KLIPS日志输出设置。none表示不输出;all表示全部输出。具体参数请看 ipsec_klipsdebug(8)

plutodebug

pluto日志输出设置。none表示不输出;all表示全部输出。具体参数请看 ipsec_pluto(8)

uniqueids

唯一ID。参数为 yes 或 no (缺省为yes)

plutorestartoncrash

当pluto崩溃时重启,并生成core文件。参数为 yes 或 no(缺省为yes)

plutopts

设置pluto的额外参数。具体请看ipsec_pluto(8)

plutostderrlog

不使用syslog,把日志输出重定向到指定的文件中

pluto

是否启动pluto。参数为 yes 或 no(缺省为yes)

plutowait

在处理下一个协商时,pluto是否等待当前协商完成。参数为 yes 或 no(缺省为no)

prepluto

配置Pluto启动前执行的脚本

postpluto

配置Pluto启动后执行的脚本

dumpdir

设置core dump文件路径

fragicmp

包被分片时是否发送ICMP消息。参数为 yes 或 no (缺省为yes)。此选项只对KLIPS起作用

hidetos

隧道中数据包的TOS设置为0。参数为 yes 或 no(缺省为yes)。此选项只对KLIPS起作用

overridemtu

设置ipsecX接口的MTU。此选项只对KLIPS起作用

IMPLICIT CONNS

系统自动定义了一些conns部分于用默认的策略组。如果conn中定义了auto=ignore,那么默认定义将被忽略

下面是自动提供的定义

conn clear
		type=passthrough
		authby=never
		left=%defaultroute
		right=%group
		auto=route
		
conn clear-or-private
		type=passthrough
		left=%defaultroute
		leftid=%myid
		right=%opportunisticgroup
		failureshunt=passthrough
		keyingtries=3
		ikelifetime=1h
		salifetime=1h
		rekey=no
		auto=route

conn private-or-clear
		type=tunnel
		left=%defaultroute
		leftid=%myid
		right=%opportunisticgroup
		failureshunt=passthrough
		keyingtries=3
		ikelifetime=1h
		salifetime=1h
		rekey=no
		auto=route

conn private
		type=tunnel
		left=%defaultroute
		leftid=%myid
		right=%opportunisticgroup
		failureshunt=drop
		keyingtries=3
		ikelifetime=1h
		salifetime=1h
		rekey=no
		auto=route


conn block
		type=reject
		authby=never
		left=%defaultroute
		right=%group
		auto=route# default policyconn packetdefault
		type=tunnel
		left=%defaultroute
		leftid=%myid
		left=0.0.0.0/0
		right=%opportunistic
		failureshunt=passthrough
		keyingtries=3
		ikelifetime=1h
		salifetime=1h
		rekey=no
		auto=route
		

POLICY GROUP FILES

配置文件在 /etc/ipsec.d/policies/ 目录下,包括

/etc/ipsec.d/policies/block
/etc/ipsec.d/policies/clear
/etc/ipsec.d/policies/clear-or-private
/etc/ipsec.d/policies/private
/etc/ipsec.d/policies/private-or-clear

## 192.168.10.4	host ip
## 106.15.00.126	internet ip
## 192.168.10.1		route

conn beijing-to-shanhai
		left=192.168.10.4
		leftid=106.15.00.126
		leftsubnet=192.168.10.0/24
		leftnexthop=192.168.10.1
		
		right=203.156.000.67
		rightid=203.156.000.67
		rightsubnet=192.168.20.0/24
				
		## phase 1 ##
		ike=3des-sha1,aes128-sha1,aes256-sha1,3des-md5,aes128-md5,aes256-md5,aes256-sha2_256
		keyexchange=ike
		## phase 2 ##
		phase2=esp
		phase2alg=3des-sha1,aes128-sha1,aes256-sha1,3des-md5,aes128-md5,aes256-md5,aes256-sha2_256
		
		auto=start
		authby=secret
		pfs=no
		type=tunnel
		
		ikelifetime=8h
		## keep restart to available
		keyingtries=%forever
		rekey=no
		keylife=1h
		
		dpddelay=40
		dpdtimeout=130
		## disconnected to restart ##
		dpdaction=restart
		

links:
chinease http://www.wscon.cn/16.html
chinease https://segmentfault.com/a/1190000000646294
english  http://blog.csdn.net/werewolf_ace/article/details/50320713

 

openssl cert request

openssl req -newkey rsa:2048 -keyout name.key -out name.csr
openssl rsa -in name.key -out name.rsa

openssl pkcs12 -export -in name.crt -out name.p12 -inkey name.key
openssl pkcs12 -in name.pfx -out name.crt

 

Convert your files into PEM format

The private key: if it not in PEM format, use the following command line to convert it:
openssl rsa -in private-key-name -outform PEM

Your certificate: if it not in PEM format, use the following command line to convert it:
openssl x509 -inform PEM -in your-certificate

The certification chain: if it not in PEM format, use the following command line to convert it:
openssl x509 -inform PEM -in certification-chain-file-name

 

 

 

单播、多播(组播)、广播

单播、多播和广播单播”(Unicast)、“多播”(Multicast)和“广播”(Broadcast)这三个术语都是用来描述网络节点之间通讯方式的术语。那么这些术语究竟是什么意思?区别何在?

1.单播:网络节点之间的通信就好像是人们之间的对话一样。如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递
只在两个节点之间进行。单播在网络中得到了广泛的应用,网络上绝大部分的数据都是以单播的形式传输的,只是一般网络用户不知道而已。例如,你在收发电子邮
件、浏览网页时,必须与邮件服务器、Web服务器建立连接,此时使用的就是单播数据传输方式。但是通常使用“点对点通信”(Point to
Point)代替“单播”,因为“单播”一般与“多播”和“广播”相对应使用。


2.多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。因为如果采用单播方式,逐个节点
传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,
但是显然达不到区分特定数据接收对象的目的。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。
  IP网络的多播一般通过多播IP地址来实现。多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址。
Windows 2000中的DHCP管理器支持多播IP地址的自动分配。


3.广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。但是同单播和多播相比,广播几乎占用了
子网内网络的所有带宽。拿开会打一个比方吧,在会场上只能有一个人发言,想象一下如果所有的人同时都用麦克风发言,那会场上就会乱成一锅粥。集线器由于其
工作原理决定了不可能过滤广播风暴,一般的交换机也没有这一功能,不过现在有的网络交换机(如全向的QS系列交换机)也有过滤广播风暴功能了,路由器本身
就有隔离广播风暴的作用。
  广播风暴不能完全杜绝,但是只能在同一子网内传播,就好像喇叭的声音只能在同一会场内传播一样,因此在由几百台甚至上千台电脑构成的大中型局域网中,
一般进行子网划分,就像将一个大厅用墙壁隔离成许多小厅一样,以达到隔离广播风暴的目的。
  在IP网络中,广播地址用IP地址“255.255.255.255”来表示,这个IP地址代表同一子网内所有的IP地址。

=================================================================

当前的网络中有三种通讯模式:单播、广播、组播,其中的组播出现时间最晚但同时具备单播和广播的优点,最具有发展前景。

1.单播:
主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同
的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用单播模式,具体的说就是IP单播协议。网络中的路由器和交换机根据其目标地
址选择传输路径,将IP单播数据传送到其指定的目的地。

单播的优点:
1)服务器及时响应客户机的请求
2)服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务。

单播的缺点:
1)服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
2)现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞。而将主干扩展20倍几乎是不可能。

2.广播:
主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径
选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据
网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。

广播的优点:
1)网络设备简单,维护简单,布网成本低廉
2)由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。

广播的缺点:
1)无法针对每个客户的要求和时间及时提供个性化服务。
2)网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以
提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服
务。

3)广播禁止允许在Internet宽带网上传输。

3.组播:
主机之间一对一组的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可
以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个
有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。

组播的优点:
1)需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
2)由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。
3)此协议和单播协议一样允许在Internet宽带网上传输。

组播的缺点:
1)与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。

2)现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中。

其它1:

IP组播通信需要一个特殊的组播地址,IP组播地址是一组D类IP地址,范围从224.0.0.0 到
239.255.255.255。其中还有很多地址是为特殊的目的保留的。224.0.0.0到224.0.0.255的地址最好不要用,因为他们大多是
为了特殊的目的保持的(比如IGMP协议)。

一般建议范围: 239.0.0.0~239.255.255.255


其它2:

RIP协议基于UDP,端口号520;(RIPv1使用广播、RIPv2组播地址224.0.0.9、RIPng组播地址FF02::9)
BGP基于TCP,端口号179;
L2TP基于TCP,端口号1701;
PPTP基于TCP,端口号1723;
OSPF基于IP,协议号89;(组播地址224.0.0.5(全部路由器)、224.0.0.6(指定路由器DR))
EIGRP基于IP,协议号88;(组播地址224.0.0.9)
ISIS,使用CLNS(IOS/OSI),集成ISIS属于三层,不存在端口号和协议号的概念;
组播地址,或称为主机组地址,由D类IP地址标记。
D类IP地址的最高四位为“1110”,起范围从224.0.0.0到239.255.255.255。
部分D类地址被保留,用作永久组的地址,这段地址从224.0.0.0-224.0.0.255。

224.0.0.4 - 网段中所有的DVMRP路由器

地址

 

用途

 

介绍

 

224.0.0.1

 

本网段所有的主机(All Hosts

网段中所有支持组播的主机

[RFC 1112, JBP]

 

224.0.0.2

 

相邻的所有的路由器(All Multicast Routers

网段中所有支持组播的路由器

[JBP]

 

224.0.0.5

 

传送OSPF协议用(OSPF Routers

所有的OSPF路由器

[RFC 1583, JXM1]

 

224.0.0.6

 

OSPF Designated Routers

所有的OSPF指派路由器

[RFC 1583, JXM1]

 

224.0.0.9

 

RIP2 Routers
所有RIPv2路由器

 

[RFC 1723, SM11]

 

224.0.0.12

 

DHCP Server/Relay Agent

 

[RFC 1884]

 

224.0.0.13

 

All PIM Routers

所有PIM路由器

[Farinacci]

 

参考:

http://baike.baidu.com/view/492256.htm

http://baike.baidu.com/view/1871353.htm

 

 

 

IP - A、B、C、D、E - 网段 - 网络

IP地址分为A,B,C,D,E五类。

网络号:用于识别主机所在的网络;

主机号:用于识别该网络中的主机。

其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用。这三种是主要的。

IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。

其中A类、B类、和C类这三类地址用于TCP/IP节点,其它两类D类和E类被用于特殊用途。

A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,

A类:0打头

B类:10打头
C类:110打头
D类:1110打头
E类:11110打头
A、B、C、D、E三类IP地址的特征:当将IP地址写成十进制形式时:
A类:1.0.0.1—126.155.255.254
B类:128.0.0.1—191.255.255.254
C类:192.0.0.1—223.255.255.254
D类:224.0.0.1—239.255.255.254
E类:240.0.0.1—255.255.255.254

 

1. A类地址
⑴ A类地址第1字节为网络地址,其它3个字节为主机地址。
⑵ A类地址范围:1.0.0.1—126.155.255.254
⑶ A类地址中的私有地址和保留地址:
10.X.X.X是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
127.X.X.X是保留地址,用做循环测试用的。

2. B类地址
⑴ B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。
⑵ B类地址范围:128.0.0.1—191.255.255.254
⑶ B类地址的私有地址和保留地址
172.16.0.0—172.31.255.255是私有地址
169.254.X.X是保留地址。如果IP地址是自动获取IP地址,而网络上又没有找到可用的DHCP服务器。就会得到其中一个IP。

3. C类地址
⑴ C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。
⑵ C类地址范围:192.0.0.1—223.255.255.254
⑶ C类地址中的私有地址:
192.168.X.X是私有地址。

4. D类地址
⑴ D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。
⑵ D类地址范围:224.0.0.1—239.255.255.254

5. E类地址
⑴ E类地址也不分网络地址和主机地址,它的第1个字节的前五位固定为11110。
⑵ E类地址范围:240.0.0.1—255.255.255.254

其它:

地址格式为:IP地址=网络地址+主机地址 或 IP地址=网络地址+子网地址+主机地址。

网络地址是由ICANN(the Internet Corporation for Assigned Names and Numbers)分配,下级有负责
北美地区的InterNIC
负责欧洲地区的RIPENIC
负责亚太地区的APNIC
目的是为了保证网络地址的全球唯一性。主机地址是由各个网络的系统管理员分配。因此,网络地址的唯一性与网络内主机地址的唯一性确保了IP地址的全球唯一性。

点击查看原图

 

Remarks:
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)    / 256*256-2 = 65534
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)    / 16*256*256-2 = 1048574
10.0.0.0 - 10.255.255.255 (10/8 prefix)    / 256*256*256-2 = 16777214

links:
http://tool.520101.com/wangluo/ipjisuan/
https://tools.ietf.org/html/rfc4632

notation       addrs/block      # blocks
--------       -----------     ----------
n.n.n.n/32               1     4294967296    "host route"
n.n.n.x/31               2     2147483648    "p2p link"
n.n.n.x/30               4     1073741824
n.n.n.x/29               8      536870912
n.n.n.x/28              16      268435456
n.n.n.x/27              32      134217728
n.n.n.x/26              64       67108864
n.n.n.x/25             128       33554432
n.n.n.0/24             256       16777216    legacy "Class C"
n.n.x.0/23             512        8388608
n.n.x.0/22            1024        4194304
n.n.x.0/21            2048        2097152
n.n.x.0/20            4096        1048576
n.n.x.0/19            8192         524288
n.n.x.0/18           16384         262144
n.n.x.0/17           32768         131072
n.n.0.0/16           65536          65536    legacy "Class B"
n.x.0.0/15          131072          32768
n.x.0.0/14          262144          16384
n.x.0.0/13          524288           8192
n.x.0.0/12         1048576           4096
n.x.0.0/11         2097152           2048
n.x.0.0/10         4194304           1024
n.x.0.0/9          8388608            512
n.0.0.0/8         16777216            256    legacy "Class A"
x.0.0.0/7         33554432            128
x.0.0.0/6         67108864             64
x.0.0.0/5        134217728             32
x.0.0.0/4        268435456             16
x.0.0.0/3        536870912              8
x.0.0.0/2       1073741824              4
x.0.0.0/1       2147483648              2
0.0.0.0/0       4294967296              1    "default route"

RFC1918:
The Internet Assigned Numbers Authority (IANA) has reserved the following three blocks of the IP address space for private internets:
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

RFC文档:
RFC4291: IP Version 6 Addressing Architecture
RFC2606: Reserved Top Level DNS Names
RFC6761: Special-Use Domain Names
RFC5735: Special Use IPv4 Addresses

#################################################

Private IP Address Ranges

Address ranges below are reserved by IANA for private intranets, and not routable to the Internet.
For additional information, see RFC 1918.

10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8 prefix)
172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12 prefix)
192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16 prefix)

Reserved and special use addresses:

0.0.0.0/8 - Current network (only valid as source address) RFC 1700
127.0.0.0 is reserved for loopback and IPC on the localhost.
127.0.0.1 ~ 127.255.255.254 (127.0.0.0/8) - loopback IP addresses (refers to self) RFC 5735
192.0.0.0/24 - reserved (IANA) RFC 5735
192.88.99.0/24 - IPv6 to IPv4 relay. RFC 3068
198.18.0.0/15 - network benchmark tests. RFC 2544
198.51.100.0/24 - TEST-NET-2. RFC 5737
203.0.113.0/24 - TEST-NET-3. RFC 5737
224.0.0.0 ~ 239.255.255.255 (224.0.0.0/4) reserved for multicast addresses. RFC 3171
240.0.0.0/4 - reserved (former Class E network) RFC 1700
255.255.255.255 is the limited broadcast address (limited to all other nodes on the LAN) RFC 919

255 in any part of the IP is reserved for broadcast addressing
0.0.0.0 in routing context means the default route (to "the rest of" the internet) RFC 1700
0.0.0.0 in the context of firewalls means "all addresses of the local machine" RFC 1700