Loading... # NAME ipsec.conf —— IPsec配置 # DESCRIPTION ipsec.conf指定了Openswan IPsec子系统的大多数配置和控制信息。 include ipsec.*.conf 包含指定的配置文件 # CONN SECTIONS conn项定义了一个IPsec连接的规范,名字可以随意定义。例如: <pre>conn snt<br/> left=10.11.11.1<br/> leftsubnet=10.0.1.0/24<br/> leftnexthop=172.16.55.66<br/> leftsourceip=10.0.1.1<br/> right=192.168.22.1<br/> rightsubnet=10.0.2.0/24<br/> rightnexthop=172.16.88.99<br/> rightsourceip=10.0.2.1<br/> keyingtries=%forever<br/></pre> # CONN PARAMETERS: GENERAL **connaddrfamily** <pre> 连接地址族,可用参数为ipv4(缺省)或者ipv6。<br/> IPv6在openswan 2.4中的NETKEY支持和openswan 2.6.33中的KLIPS支持<br/></pre> **type** <pre> 连接类型,参数如下:<br/> tunnel(缺省)表示 host-to-host,host-to-subnet,subnet-to-subnet 隧道模式;<br/> transport,表示 host-to-host传输模式;<br/> passthrough,表示不使用IPsec;<br/> drop,表示丢弃数据;<br/> reject,表示丢弃数据并返回ICMP诊断包<br/></pre> **left** <pre> [必选项] 左侧设备公网接口IP地址,其中IP地址的格式请看ipsec_ttoaddr(3)。当前支持IPv4和IPv6。<br/> 如果其参数为 %defaultroute,同时 config setup 项中的 interfaces 包含 %defaultroute,那么left将自动由本地的缺省路由接口地址填充;leftnexthop也支持。<br/> %any 表示在协商时填充。<br/> %opportunistic 表示 left 和 lefnexthop 的参数从 left 侧客户端的DNS数据中获取<br/></pre> **leftsubnet** <pre> 左侧设备的私有子网,格式为 network/netmask (请看ipsec_ttosubnet(3));当前支持IPv4和IPv6地址范围。<br/> 支持 vhost: 和 vnet: 这2个速记,语法与 virtual_private 相同<br/> %priv 表示子网与 virtual_private相同<br/> %no 表示没有子网<br/></pre> **leftsubnets** <pre> 指定左侧设备的多个私有子网,格式 { networkA/netmaskA networkB/netmaskB [..] }。leftsubnet 和 leftsubnets 不能同时使用。 例子请看 testing/pluto/multinet-*<br/></pre> **leftprotoport** <pre> 指定隧道中允许的通过的协议和端口。参数可以是数字或者协议名(请在 /etc/protocols 中查找),例如 leftprotoport=icmp,或 protocol/port,如 tcp/smtp。<br/> ports可以使用数字或名字表示(请在 /etc/services 中查找)。<br/> %any 表示所有的协议端口<br/></pre> **leftnexthop** <pre> 左侧设备连接公网的下一跳网关IP地址;缺省为 %direct。如果这方法没有使用,则leftnexthop为 %defaultroute<br/></pre> **leftsourceip** <pre> 连接中主机的IP地址<br/></pre> **leftupdown** <pre> 当连接状态改变时, 回调此处设置的命令(缺省为 ipsec _updown)。 详细请看 ipsec_pluto(8)<br/></pre> **leftfirewall** <pre> 不再使用此选项<br/></pre> # CONN PARAMETERS:AUTOMATIC KEYING **auto** <pre> IPsec启动时自动执行;现在支持的参数有 <br/> add (ipsec auto --add)<br/> route(ipsec auto --route)<br/> start(ipsec auto --up)<br/> manual(ipsec manual --up)<br/> ignore 表示不自动启动<br/> 具体请看 config setup<br/></pre> **authby** <pre> 2个安全网关之间的认证方法;<br/> secret 表示共享密钥<br/> rsasig 表示RSA数据签名(缺省)<br/> secret|rsasig 同时使用<br/></pre> **ike** <pre> IKE第一阶段(ISAKMP SA)中的加密/认证算法。格式为 "cipher-hash;modpgroup,cipher-hash;modpgroup,..."<br/> 例如:ike=3des-sha1,aes-sha1, ike=aes, ike=aes128-md5;modp2048, <br/> ike=aes128-sha1;dh22, ike=3des-md5;modp1024,aes-sha1;modp1536 or ike=modp1536<br/> 算法值请查看 ipsec_spi(8)中的 --ike选项。<br/> IKE组合形式:<br/> cipher: 3des or aes<br/> hash: sha1 or md5<br/> pfsgroupt(DHgroup): modp1024 or modp153<br/></pre> **phase2** <pre> 设置将产生的SA类型。esp用于加密(缺省),ah用于认证<br/></pre> **phase2alg** <pre> 指定第二阶段中支持的算法。算法之间用逗号分隔<br/></pre> **esp** <pre> 此选项不再使用,用phase2alg代替<br/></pre> **ah** <pre> 连接中的AH算法。算法格式请看 ipsec_spi(8)中的 --ah选项<br/></pre> **ikev2** <pre> IKEv2(RFC4309)设置使用。<br/> never 或 no 表示不使用IKEv2;<br/> propos 或 yes 表示允许使用IKEv2,同时缺省使用IKEv2进行协商;<br/> insist,表示只接受IKEv2协商,IKEv1将被拒绝;<br/> permit(缺省),表示不主动使用IKEv2,但对端使用IKEv2的话也接受<br/></pre> **leftid** <pre> 左侧参加者的身份确认方法。<br/> 可以是IP地址,域名<br/> %fromcert 表示ID从证书的DN获取;%none 表示不使用ID值<br/></pre> **leftrsasigkey** <pre> 左侧RSA签名认证,格式使用RFC2537 ipsec_ttodata(3)编码。<br/> %none 表示不指定值; <br/> %dnsondemand 表示值从DNS中获取当需要使用到此值时; <br/> %dnsonload 表示值从DNS中获取当读取ipsec.conf时;<br/> %cert 表示信息从 %leftcert 中获取<br/></pre> **leftrsasigkey2** <pre> 第2个公钥<br/></pre> **leftcert** <pre> 指定X509证书,如果没有指定全路径,则从 /etc/ipsec.d/certs/ 目录中查找<br/> 如果opesnswan编译时指定了 USE_LIBNSS=true,那么openswan将会去NSS数据库中查找RSA key<br/></pre> **leftca** <pre> 指定CA,如果没有指定,那么将用 leftcert 中的证书认为是CA证书<br/></pre> **leftsendcert** <pre> openswan发送X509证书到远程主机的选项配置。<br/> yes|always 表示总是允许发送证书<br/> ifasked 表示如果远程主机要求证书则进行发送<br/> no|never 表示从不发送证书。<br/> 缺省参数为 ifasked<br/></pre> **leftxauthserver** <pre> 左侧为XAUH服务端。可以使用PAM认证或 /etc/ipsec.d/passwd中的MD5口令。对端必须配置为rightxauthclient ,做为XAUTH客户端<br/></pre> **leftxauthclient** <pre> 左侧为XAUT客户端。xauth连接必须进行交互启动,不能使用配置 atuo=start。它必须使用命令行ipsec auto --up conname<br/></pre> **leftxauthusername** <pre> XAUTH认证中使用的用户名,XAUTH密码在 ipsec.secrets 文件中配置<br/></pre> **leftmodecfgserver** <pre> 左侧是模式配置服务端。它能下发网络配置到客户端。 参数为 yes 或 no (缺省)<br/></pre> **leftmodecfgclient** <pre> 左侧是模式配置客户端。它能从服务端接收网络配置。参数为 yes 或 no (缺省)<br/></pre> **modecfgpull** <pre> 从服务端接收模式配置信息。参数为 yes 或 no (缺省)<br/></pre> **modecfgdns1, modecfgdns2, modecfgwins1, modecfgwins2** <pre> 指定DNS、WINS的IP地址<br/></pre> **remote_peer_type** <pre> 设置远程主机类型。参数为 cisco 或 ietf<br/></pre> **forceencaps** <pre> 参数为 yes 或 no (缺省为no)<br/> 当forceencaps=yes时将强制使用RFC-3948封装(UPD端口4500包封闭ESP)<br/> 如果此选项打开,那么 nat_traveral=yes必须打开<br/></pre> **dpddelay** <pre> 主机探测延迟时间,缺省为30秒。如果此选项被设置,dpdtimeout也应该设置<br/></pre> **dpdtimeout** <pre> 主机探测超时时间(以秒为单位),缺省为120秒。如果超时,将删除SA<br/></pre> **dpdaction** <pre> 当PDP探测到主机死亡时要执行的动作<br/> hold (缺省)表示eroute将进入 %hold 状态<br/> clear 表示eroute和SA都要清除<br/> restart 表示SA将立即从协商<br/> restart_by_peer 表示所有死亡主机的SA将进行从协商<br/></pre> **pfs** <pre> 参数为 yes 或 no (缺省为yes)<br/></pre> **aggrmode** <pre> 使用野蛮模式替换主模式。野蛮模式不安全,容易受到服务拒绝攻击。<br/> 参数为 yes 或 no (缺省为no)<br/></pre> **salifetime** <pre> SA存活时间,参数为数字 + s/m/h/d (缺省为8h,最大24h)<br/> "keylife" "lifetime" 是 "salifetime" 的别名<br/></pre> **rekey** <pre> 参数为 yes 或 no (缺省为 yes)。表示当密钥到期后是否进行从协商<br/></pre> **rekeymargin** <pre> 密钥到期前多长时间进行从协商。参数请看 salifetime (缺省9m)<br/></pre> **keyingtries** <pre> 协商尝试次数。 %forever 表示从不放弃,一直进行协商<br/></pre> **ikelifetime** <pre> IKE存活时间。参数请看salifetime<br/></pre> **compress** <pre> 是否进行压缩处理。 参数为 yes 或 no (缺省为 no)<br/></pre> **metric** <pre> 设置ipsecX 或 mastX 接口的 metric 优先级<br/></pre> **mtu** <pre> 设置MTU<br/></pre> **failureshunt** <pre> 当协商失败时执行的动作。缺省为 none;passthrough;drop;reject;具体看选项 type<br/></pre> # CONFIG SECTIONS **config**部分使用为一名字**setup**,此部分包含了软件启动时所使用到的信息(ipsec_setup(8). 例如: <pre> config setup<br/> interfaes="ipsec0=eth1 ipsec1=ppp0"<br/> klipsdebug=none<br/> plutodebug=control<br/> protostack=auto<br/> manualstart=<br/></pre> **config setup**目前可用的选项如下: **protostack** <pre> 指定IPsec协议攻栈。参数为 auto/klips/netkey/mast。mast是klips的变种<br/></pre> **interfaces** <pre> IPsec使用的虚接口和实接口。格式为 "virtual=physical virtual=physical ..."<br/></pre> **listen** <pre> 监听IP地址<br/></pre> **nat_traversal** <pre> 是否支持NAT。参数为 yes 或 no (缺省为no)<br/></pre> **disable_port_floasting** <pre> 是否启用NAT-T。 参数为 yes 或 no (缺省为no)<br/></pre> **force_keepalive** <pre> 是否强制发送NAT-T保活。参数为 yes 或 no (缺省为no)<br/></pre> **keep_alive** <pre> NAT-T保活包发送间隔时间<br/></pre> **oe** <pre> 是否启用机会加密(Opportunistic Encryption)。参数为 yes 或 no(缺省为no)<br/> 只有KLIPS支持此选项<br/></pre> **nhelpers** <pre> 设置pluto处理密码运算的进程(线程)<br/> 0表示所有操作都在主线程<br/> -1表示根据CPU进行计算(n-1,n是CPU数)<br/> 其它值则表示强制的进程(线程)数<br/></pre> **crlcheckinterval** <pre> CRL检查间隔时间,单位为秒。 如果设置为0表示开关CRL检查<br/></pre> **strictcrlpolicy** <pre> 是否强制进行CRL检查。参数为 yes 或 no (缺省为no)<br/></pre> **forwardcontrol** <pre> 此选项不再使用。请使用 /etc/sysctl.conf 文件中的 net.ipv4.ip_forward=0 控制IP转发设置<br/></pre> **rp_filter** <pre> 此选项不再使用。请使用 /etc/sysctl.conf 文件中的 net.ipv4.conf/[iface]/rp_filter=0 。 此参数在IPsec必须设置为0<br/></pre> **syslog** <pre> syslog(2)中的显示名。缺省为 daemon.error<br/></pre> **klipsdebug** <pre> KLIPS日志输出设置。none表示不输出;all表示全部输出。具体参数请看 ipsec_klipsdebug(8)<br/></pre> **plutodebug** <pre> pluto日志输出设置。none表示不输出;all表示全部输出。具体参数请看 ipsec_pluto(8)<br/></pre> **uniqueids** <pre> 唯一ID。参数为 yes 或 no (缺省为yes)<br/></pre> **plutorestartoncrash** <pre> 当pluto崩溃时重启,并生成core文件。参数为 yes 或 no(缺省为yes)<br/></pre> **plutopts** <pre> 设置pluto的额外参数。具体请看ipsec_pluto(8)<br/></pre> **plutostderrlog** <pre> 不使用syslog,把日志输出重定向到指定的文件中<br/></pre> **pluto** <pre> 是否启动pluto。参数为 yes 或 no(缺省为yes)<br/></pre> **plutowait** <pre> 在处理下一个协商时,pluto是否等待当前协商完成。参数为 yes 或 no(缺省为no)<br/></pre> **prepluto** <pre> 配置Pluto启动前执行的脚本<br/></pre> **postpluto** <pre> 配置Pluto启动后执行的脚本<br/></pre> **dumpdir** <pre> 设置core dump文件路径<br/></pre> **fragicmp** <pre> 包被分片时是否发送ICMP消息。参数为 yes 或 no (缺省为yes)。此选项只对KLIPS起作用<br/></pre> **hidetos** <pre> 隧道中数据包的TOS设置为0。参数为 yes 或 no(缺省为yes)。此选项只对KLIPS起作用<br/></pre> **overridemtu** <pre> 设置ipsecX接口的MTU。此选项只对KLIPS起作用<br/></pre> # IMPLICIT CONNS 系统自动定义了一些conns部分于用默认的策略组。如果conn中定义了auto=ignore,那么默认定义将被忽略 下面是自动提供的定义 <pre>conn clear<br/> type=passthrough<br/> authby=never<br/> left=%defaultroute<br/> right=%group<br/> auto=route<br/>conn clear-or-private<br/> type=passthrough<br/> left=%defaultroute<br/> leftid=%myid<br/> right=%opportunisticgroup<br/> failureshunt=passthrough<br/> keyingtries=3<br/> ikelifetime=1h<br/> salifetime=1h<br/> rekey=no<br/> auto=route<br/>conn private-or-clear<br/> type=tunnel<br/> left=%defaultroute<br/> leftid=%myid<br/> right=%opportunisticgroup<br/> failureshunt=passthrough<br/> keyingtries=3<br/> ikelifetime=1h<br/> salifetime=1h<br/> rekey=no<br/> auto=route<br/>conn private<br/> type=tunnel<br/> left=%defaultroute<br/> leftid=%myid<br/> right=%opportunisticgroup<br/> failureshunt=drop<br/> keyingtries=3<br/> ikelifetime=1h<br/> salifetime=1h<br/> rekey=no<br/> auto=route<br/>conn block<br/> type=reject<br/> authby=never<br/> left=%defaultroute<br/> right=%group<br/> auto=route<br/># default policy<br/>conn packetdefault<br/> type=tunnel<br/> left=%defaultroute<br/> leftid=%myid<br/> left=0.0.0.0/0<br/> right=%opportunistic<br/> failureshunt=passthrough<br/> keyingtries=3<br/> ikelifetime=1h<br/> salifetime=1h<br/> rekey=no<br/> auto=route<br/></pre> # POLICY GROUP FILES 配置文件在 /etc/ipsec.d/policies/ 目录下,包括 <pre> /etc/ipsec.d/policies/block<br/> /etc/ipsec.d/policies/clear<br/> /etc/ipsec.d/policies/clear-or-private<br/> /etc/ipsec.d/policies/private<br/> /etc/ipsec.d/policies/private-or-clear<br/></pre> Last modification:July 30, 2020 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 2 如果觉得我的文章对你有用,请随意赞赏