尝试在局域网上的两台主机之间使用IPSEC。 没有涉及VPN
使用OpenBSD 5.8(在VirtualBox中)。 我宁愿使用OpenBSD对IPSEC和密钥交换的内置支持,而不是第三方。
两台主机: 10.0.2.10 (主机“A”)和10.0.2.11 (主机“B”)
在尝试设置IPSEC之前,它们可以ping / ssh。
更新:我想也许OpenIKED(IKE V2)不支持transport模式,所以我也会接受isakmp(IKE v1)的答案
将A的/etc/iked/local.pub复制到B的/etc/iked/pubkeys/ipv4/10.0.2.10
将B的/etc/iked/local.pub复制到A的/etc/iked/pubkeys/ipv4/10.0.2.11
双方:
echo "ikev2 esp from any to any" > /etc/iked.conf chmod 640 /etc/iked.conf echo "ipsec=YES" > /etc/rc.conf.local echo "iked_flags=" >> /etc/rc.conf.local
检查configuration:
/sbin/iked -n Configuration OK
我感到困惑,接下来该做什么。 我想我需要设置/etc/ipsec.conf ,但是我只findIKEv1文档。
重新启动两台机器。 没有错误。 iked守护进程开始了。 如果我把公钥重命名为任何东西,仍然可以互相ping通,所以IPSEC似乎没有工作。
更新:我得到了IPSEC手动密钥交换
/etc/ipsec.conf :
# .10 is source, .11 is destination flow esp from 10.0.2.10 to 10.0.2.11 type require esp transport from 10.0.2.10 to 10.0.2.11 \ spi 0xCAFEBABE:0xCAFEBABE \ authkey 0x64CHARHEX:0x64CHARHEX \ enckey 0x64CHARHEX:0x64CHARHEX
hex需要全部大写
chmod 640 /etc/ipsec.conf ipsecctl -F (delete config) ipsecctl -f /etc/ipsec.conf (load config) ipsecctl -s all -v (show config)
我宁愿使用IKEv2的自动键控。 我能做什么?
回答我自己的问题,像个书呆子
问题1. OpenIKED(IKEv2)不支持传输模式,因此您只能将其用于VPN,而不能用于LAN。 使用isakmpd (IKEv1)
问题2: ipsec.conf的文档说auth和enc值有默认值,但你似乎需要设置它们
我还需要configuration什么?
你需要在isakmpd上设置正确的rc.d标志(见下面)
是否有IPSEC的日志和iked,如果有的话,我可以在哪里find它们?
日志在/var/log/daemon
如何判断IPSEC是否configuration一次,而不需要查看机器之间的数据包?
在B上运行tcpdump host A ,在A上运行ping B 你想在tcpdump输出中看到esp和spi
build立:
主机A(10.0.2.10)
# cat << EOF > /etc/ipsec.conf ike active esp transport from 10.0.2.10 to 10.0.2.11 \ main auth hmac-sha1 enc aes \ quick auth hmac-sha2-256 enc aes EOF # chmod 640 /etc/ipsec.conf # cd /etc/isakmpd/pubkeys/ipv4 # scp [email protected]:/etc/isakmpd/local.pub 10.0.2.11 `# copy remote's public key` # rcctl enable ipsec # rcctl enable isakmpd # rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging` # ipsecctl -vf /etc/ipsec.conf `# start ipsec, or reboot` # rcctl start isakmpd
主持人B(10.0.2.11)
# cat << EOF > /etc/ipsec.conf ike active esp transport from 10.0.2.11 to 10.0.2.10 \ main auth hmac-sha1 enc aes \ quick auth hmac-sha2-256 enc aes EOF # chmod 640 /etc/ipsec.conf # cd /etc/isakmpd/pubkeys/ipv4 # scp [email protected]:/etc/isakmpd/local.pub 10.0.2.10 `# copy remote's public key` # rcctl enable ipsec # rcctl enable isakmpd # rcctl set isakmpd flags "-KTv" `#K = use ipsec.conf for configuration, T = disable NAT traversal, v = verbose logging` # ipsecctl -vf /etc/ipsec.conf `# start ipsec, or reboot` # rcctl start isakmpd
所以我实际上有最近运行的东西 – 只是一个地址和我的networking之间的IPSec链接。 我用它来为我的电话服务器之一,所以我可以尝试通过互联网获取TFTP(为了好玩)。
————————-远程端,我的电话服务器—————-
对于/etc/ipsec.conf:
config setup plutodebug=none klipsdebug=none dumpdir=/var/run/pluto/ nat_traversal=yes protostack=netkey plutostderrlog=/var/log/ipsec.log conn L2TP-PSK-noNAT type=tunnel authby=secret pfs=no compress=no keyexchange=ike auth=esp keyingtries=3 rekey=no ike=aes256-md5-modp1536 ikelifetime=7800s esp=aes128-md5 keylife=3600s left=XXX.XXX.XXX.XXX leftid=XXX.XXX.XXX.XXX leftsubnet=XXX.XXX.XXX.XXX/32 ####Those three addresses are all the same - No NAT/routing### right=hq.myDynDNSDomainToMyOffice.com rightid=hq.myDynDNSDomainToMyOffice.com rightsourceip=10.0.0.1 rightsubnet=10.0.0.0/24 auto=add
对于/etc/ipsec.secrets:
# this file is managed with debconf and will contain the automatically created RSA keys include /var/lib/openswan/ipsec.secrets.inc XXX.XXX.XXX.XXX hq.myDynDNSDomainToMyOffice.com: PSK "mySuperSecretPassword!"
———————-本地方,我的防火墙———————- —–
/etc/ipsec.conf
config setup plutodebug="none" nat_traversal="yes" dumpdir=/var/run/pluto/ keep_alive="60" probe_psk="no" plutostderrlog=/var/log/ipsec.log # Phone Server conn S_REF_IpsSitPhoneServe_0 authby="psk" auto="start" compress="no" ecn="no" esp="aes128-md5" ike="aes256-md5-modp1536" ikelifetime="7800" keyexchange="ike" keylife="3600" left="hq.myDynDNSDomainToMyOffice.com" leftid="hq.myDynDNSDomainToMyOffice.com" leftsourceip="10.0.0.1" leftsubnet="10.0.0.0/24" pfs="no" pmtu_discovery="no" rekeymargin="540" right="XXX.XXX.XXX.XXX" rightid="XXX.XXX.XXX.XXX" rightsubnet="XXX.XXX.XXX.XXX/32" type="tunnel"
对于/etc/ipsec.secrets:
# this file is managed with debconf and will contain the automatically created RSA keys include /var/lib/openswan/ipsec.secrets.inc hq.myDynDNSDomainToMyOffice.com XXX.XXX.XXX.XXX : PSK "mySuperSecretPassword!"
这些将使你获得99%的收益。 另外1%由您在/var/log/ipsec.log创build的错误日志来决定。 请注意,手机服务器端完全是手工完成的,但防火墙方面是我的防火墙GUI的咳嗽。 下半年可能会有一些不必要/冗余的configuration位。
在得到它的工作之后,确保在传递任何“ipsec-worthy”之前,仔细检查所有的安全参数。
编辑01:我看到你想要更好的例子,所以我发布了一些新的configuration文件,我刚刚testing:
—————-电话服务器ipsec.conf —————–
root@phoneServerName:/home/neil# cat /etc/ipsec.conf # /etc/ipsec.conf - Openswan IPsec configuration file version 2.0 config setup plutodebug=all klipsdebug=none dumpdir=/var/run/pluto/ protostack=netkey plutostderrlog=/var/log/ipsec.log conn PSK-noNAT type=transport authby=secret keyexchange=ike ike=aes256-md5-modp1536 ikelifetime=7800s phase2alg=aes128-md5 keylife=3600s left=XXX.XXX.XXX.XXX leftid=XXX.XXX.XXX.XXX right=hq.myDynDNSDomainToMyOffice.com rightid=hq.myDynDNSDomainToMyOffice.com auto=add
——————— firewall ipsec.conf ————————-
hq:/var/sec/chroot-ipsec/etc # cat ipsec.conf #/etc/ipsec.conf - strongSwan IPsec configuration file config setup #metric="0" charonstart="no" plutodebug="none" uniqueids="no" nocrsend="yes" nat_traversal="no" keep_alive="60" crlcheckinterval="0" strictcrlpolicy="no" probe_psk="no" conn %default rekeyfuzz="100%" keyingtries="0" leftsendcert="always" dpddelay="30" dpdtimeout="120" dpdaction="restart" conn transportModeFirewallToPhoneServer authby="psk" auto="start" compress="no" ecn="no" esp="aes128-md5" ike="aes256-md5-modp1536" ikelifetime="7800" keyexchange="ike" keylife="3600" left="hq.myDynDNSDomainToMyOffice.com" leftid="hq.myDynDNSDomainToMyOffice.com" leftupdown="/usr/libexec/ipsec/updown classic" pfs="yes" pfsgroup="modp1536" pmtu_discovery="no" rekeymargin="540" right="XXX.XXX.XXX.XXX" rightid="XXX.XXX.XXX.XXX" type="transport"
基本上,只要删除任何有关子网,并更改types来运输。
这是一个工作configuration。 我如何知道它的工作? IPTables阻止电话服务器上的所有内容。 一旦连接IPSec连接,我的SIPstream量和Webpipe理stream量就可以通过。