ipsec.conf —— IPsec配置算法
ipsec.conf指定了Openswan IPsec子系統的大多數配置和控制信息。shell
include ipsec.*.conf 包含指定的配置文件數據庫
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
connaddrfamily網絡
鏈接地址族,可用參數爲ipv4(缺省)或者ipv6。 IPv6在openswan 2.4中的NETKEY支持和openswan 2.6.33中的KLIPS支持
typetcp
鏈接類型,參數以下: tunnel(缺省)表示 host-to-host,host-to-subnet,subnet-to-subnet 隧道模式; transport,表示 host-to-host傳輸模式; passthrough,表示不使用IPsec; drop,表示丟棄數據; reject,表示丟棄數據並返回ICMP診斷包
leftide
[必選項] 左側設備公網接口IP地址,其中IP地址的格式請看ipsec_ttoaddr(3)。當前支持IPv4和IPv6。 若是其參數爲 %defaultroute,同時 config setup 項中的 interfaces 包含 %defaultroute,那麼left將自動由本地的缺省路由接口地址填充;leftnexthop也支持。 %any 表示在協商時填充。 %opportunistic 表示 left 和 lefnexthop 的參數從 left 側客戶端的DNS數據中獲取
leftsubnetpost
左側設備的私有子網,格式爲 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
再也不使用此選項
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部分使用爲一名字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起做用
系統自動定義了一些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 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
配置文件在 /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