https://blog.csdn.net/lanmolei814/article/details/38078361
DESCRIPTION
ipsec.conf指定了Openswan IPsec子系统的大多数配置和控制信息。
包含指定的配置文件
CONN SECTIONS
conn项定义了一个IPsec连接的规范,名字可以随意定义。例如:
1
2
3
4
5
6
7
8
9
10
| 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| 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
中连接状态改变时, “updown”中的脚本调整路由和防火墙(缺省为 ipsec _updown)。 详细请看 ipsec_pluto(8)
leftfirewall
不再使用此选项
|
CONN PARAMETERS:AUTOMATIC KEYING
下面所有项选自动生成key中起作用,在手动指定key中被忽略。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
| 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 modp1536
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的话也接受
sareftrack
XXXXXX
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 。
nm_configured
XXXX
forceencaps
参数为 yes 或 no (缺省为no)。当 forceencaps=yes时将强制使用RFC-3948封装(UPD端口4500包封闭ESP)。如果此选项打开,那么 nat_traveral=yes必须打开。
overlapip
XXXX
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
disablearrivalcheck
XXXX 参数为 yes 或 no (缺省为 no)
failureshunt
当协商失败时执行的动作。缺省为 none; passthrough; drop; reject;具体看选项 type。
|
CONFIG SECTIONS
config部分使用为一名字 setup,此部分包含了软件启动时所使用到的信息 ( ipsec_setup(8))。例如:
1
2
3
4
5
6
| config setup
interfaes="ipsec0=eth1 ipsec1=ppp0"
klipsdebug=none
plutodebug=control
protostack=auto
manualstart=
|
config setup 目前可用的选项如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| myid
XXX
protostack
指定IPsec协议攻栈。参数为 auto/klips/netkey/mast。 mast是klips的变种。
interfaces
IPsec使用的虚接口和实接口。格式为 " virtual=physical virtual=physical ..."。
XXXX
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保活包发送间隔时间
virtual_private
XXXX
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,那么默认定义将被忽略
下面是自动提供的定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| 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 policy
conn 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/ 目录下,包括
1
2
3
4
5
| /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
|
man: http://www.freeswan.org/freeswan_trees/freeswan-1.91/doc/manpage.d/ipsec.conf.5.html