LAN上の2つのホスト間でIPSECを使用しようとしています。 VPNは関係ありません
OpenBSD 5.8(VirtualBox内)の使用。サードパーティではなく、OpenBSDのIPSECとキー交換の組み込みサポートを使用したいと思います。
2つのホスト: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
構成を確認します。
/sbin/iked -n
Configuration OK
私は次に何をすべきかについて混乱しています。 /etc/ipsec.conf
を設定する必要があると思いますが、IKEv1のドキュメントしか見つかりませんでした。
両方のマシンを再起動しました。エラーはありません。 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
16進数はすべて大文字にする必要があります
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
の値にはデフォルトがあると記載されていますが、とにかく設定する必要があるようです。
他に何を設定する必要がありますか?
isakmpd
に正しいrc.d
フラグを設定する必要があります(以下を参照)
IPSECとikedのログはありますか?ある場合、どこで見つけることができますか?
ログは/var/log/daemon
にあります
マシン間のパケットを確認せずに、構成後にIPSECが機能しているかどうかを確認するにはどうすればよいですか?
bではtcpdump Host A
を実行し、Aではping B
を実行します。 tcpdumpの出力にesp
とspi
を表示したい
セットアップ:
ホスト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
だから私は実際に最近このようなものを実行していました-1つの単一のアドレスと私のネットワークの間のIPSecリンクだけです。私はそれを私の電話サーバーの1つに使用したので、インターネット経由で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に作成されるエラーログであなた次第です。電話サーバー側はすべて手作業で行われたが、ファイアウォール側は私のファイアウォールGUIが苦しんだものであったことに注意してください。後半には、不要な/冗長な構成ビットがいくつかある可能性があります。
動作させたら、「ipsec-worthy」を渡す前に、すべてのセキュリティパラメータを再確認してください。
編集01:より良い例が必要だと思ったので、テストしたばかりの新しい構成ファイルをいくつか投稿します:
----------------電話サーバー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
---------------------ファイアウォール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"
基本的には、サブネットに関するものをすべて削除し、タイプをトランスポートに変更するだけです。
これは動作中の構成です。それが機能していることをどうやって知ることができますか? IPTablesは、電話サーバー上のすべてをブロックします。 IPSec接続に接続すると、SIPトラフィックとWeb管理トラフィックが通過します。