そのため、新しい仕事に就くと、インターネットへのゲートウェイであるFreeBSDを搭載したサーバーが私の責任範囲に入りました。メールサーバーとファイアウォールがありました。 以前の仕事によると、私はLinuxを使った経験がありましたが、FreeBSDはそれを見たことがありませんでした。 そして、新しい仕事の最初のタスクの1つは、インターネット経由でリモートオフィスへの接続を構成することでした。そのために、ハードウェアD-Link DI-804HVを購入しました。 IPSECを介してこのファーム全体を接続することが決定されました。
発行後のコメントに基づいて、記事にいくつかの変更が加えられました。
それで、私たちが利用できるもの(ここでのアドレスは、単に例として与えられています):
エンタープライズ内部ネットワーク192.168.250.0/24 、
内部オフィスネットワーク192.168.0.0/24 、
エンタープライズルーター192.168.250.1
オフィスルーター192.168.0.1
FreeBSD 10.10.10.1の外部アドレス、
DI-804HV 10.10.10.2の外部アドレス。
不快な瞬間を避けるため、すべての作業は最初に試験機で行われました。
まあ、それはいつものように始まりました-D-linkウェブサイトや他のネットワークリソースのドキュメントを読むことから。 D-Link Webサイトには、FreeBSD 4.8とこのハードウェア間のリンクの説明が含まれていますが、後で判明したように、一部の情報はすでに古くなっています。
必要なオプションを含めて、カーネルの再構築から作業を開始しました-カーネル設定は/ usr / src / sys / i386 / confにあり 、 GENERICをIPSECにコピーして変更を開始しました。
FreeBSD 9を使用しているため、変更点は次のとおりです。
options IPSEC 
      
        
        
        
      
     device crypto 
      
        
        
        
      
    
      
      バージョンが7未満の場合(インターネットに関する議論から理解したように)、以下が必要です。
options IPSEC 
      
        
        
        
      
     options IPSEC_ESP 
      
        
        
        
      
     options IPSEC_DEBUG # ,     
      
        
        
        
      
    
      
      次のコマンドでカーネルを再構築しました。
make buildkernel KERNCONF=IPSEC 
      
        
        
        
      
     make installkernel KERNCONF=IPSEC 
      
        
        
        
      
    
      
      IPSECはカーネル構成名です。
私は車を再起動し、それがロードされていることを確認しました。
次に、ソフトウェア自体のインストールに進みました。 インストールの前に、誰もがポートを更新することをお勧めします。私の場合は、次のコマンドを使用します。
portsnap fetch 
      
        
        
        
      
     portsnap extract 
      
        
        
        
      
     portsnap update 
      
        
        
        
      
    
      
      その後、必要なポートのインストールに進みました。 フォーラムの記事を読んで、私はracoonが必要であることに気付きました。これはports / usr / ports / security / ipsec-toolsにあります 。 racoon2がありますが、ikev2はDI-804HVでサポートされていないため、必要ありません。
以下を介してポートをインストールします。
make install clean 
      
        
        
        
      
    
      
      インストール後、 / usr / local / etc / racoonディレクトリに移動します-存在しない場合は作成し、 racoon.conf設定ファイルを作成します :
freebsd# cat /usr/local/etc/racoon/racoon.conf 
      
        
        
        
      
     path include "/usr/local/etc/racoon"; 
      
        
        
        
      
     path pre_shared_key "/usr/local/etc/racoon/psk.txt"; 
      
        
        
        
      
     
      
        
        
        
      
     padding 
      
        
        
        
      
     { 
      
        
        
        
      
     maximum_length 20; # maximum padding length. 
      
        
        
        
      
     randomize off; # enable randomize length. 
      
        
        
        
      
     strict_check off; # enable strict check. 
      
        
        
        
      
     exclusive_tail off; # extract last one octet. 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     listen 
      
        
        
        
      
     { 
      
        
        
        
      
     #isakmp ::1 [7000]; 
      
        
        
        
      
     isakmp 10.10.10.1 [500]; 
      
        
        
        
      
     #admin [7002]; # administrative port for racoonctl. 
      
        
        
        
      
     #strict_address; # requires that all addresses must be bound. 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     # Specify various default timers. 
      
        
        
        
      
     timer 
      
        
        
        
      
     { 
      
        
        
        
      
     # These value can be changed per remote node. 
      
        
        
        
      
     counter 5; # maximum trying count to send. 
      
        
        
        
      
     interval 20 sec; # maximum interval to resend. 
      
        
        
        
      
     persend 1; # the number of packets per send. 
      
        
        
        
      
     # maximum time to wait for completing each phase. 
      
        
        
        
      
     phase1 30 sec; 
      
        
        
        
      
     phase2 15 sec; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     remote anonymous 
      
        
        
        
      
     { 
      
        
        
        
      
     exchange_mode main,base; 
      
        
        
        
      
     # doi ipsec_doi; 
      
        
        
        
      
     # situation identity_only; 
      
        
        
        
      
     lifetime time 28800 sec; 
      
        
        
        
      
     #my_identifier asn1dn; 
      
        
        
        
      
     #certificate_type x509 "my.cert.pem" "my.key.pem"; 
      
        
        
        
      
     #nonce_size 16; 
      
        
        
        
      
     # initial_contact on; 
      
        
        
        
      
     generate_policy on; 
      
        
        
        
      
     proposal { 
      
        
        
        
      
     encryption_algorithm 3des; 
      
        
        
        
      
     hash_algorithm sha1; 
      
        
        
        
      
     authentication_method pre_shared_key; 
      
        
        
        
      
     dh_group 2; 
      
        
        
        
      
     } 
      
        
        
        
      
     proposal_check strict; 
      
        
        
        
      
     
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
     sainfo anonymous 
      
        
        
        
      
     { 
      
        
        
        
      
     #pfs_group 2; 
      
        
        
        
      
     lifetime time 28800 sec; 
      
        
        
        
      
     encryption_algorithm 3des, cast128, blowfish 448, des, rijndael; 
      
        
        
        
      
     authentication_algorithm hmac_sha1, hmac_md5; 
      
        
        
        
      
     compression_algorithm deflate; 
      
        
        
        
      
     } 
      
        
        
        
      
     
      
        
        
        
      
    
      
      認証は、ファイル/usr/local/etc/racoon/psk.txtにある共有キー(shared_key)を使用して行われます。
freebsd# cat /usr/local/etc/racoon/psk.txt 
      
        
        
        
      
     10.10.10.2 123456789q 
      
        
        
        
      
    
      
      このファイルでは、タイプ0600の属性をルートから変更する必要があることに注意してください。
freebsd# ls -l /usr/local/etc/racoon/psk.txt 
      
        
        
        
      
     -rw------- 1 root wheel 21 Jan 31 13:55 /usr/local/etc/racoon/psk.txt 
      
        
        
        
      
    
      
      そうでなければ、それが機能しない理由を長い間理解できます。
次に、 / etc / rc.confに変更を加えます 。
racoon_enable="YES" 
      
        
        
        
      
     #   , gif0      
      
        
        
        
      
     cloned_interfaces="gif0" 
      
        
        
        
      
     gif_interfaces="gif0" 
      
        
        
        
      
     gifconfig_gif0="10.10.10.1 10.10.10.2" 
      
        
        
        
      
     ifconfig_gif0="inet 192.168.250.1 192.168.0.1 netmask 0xffffffff" 
      
        
        
        
      
     ipsec_enable="YES" 
      
        
        
        
      
     ipsec_file="/etc/ipsec.conf" 
      
        
        
        
      
    
      
      さて、 / etc / ipsec.confファイル:
flush; 
      
        
        
        
      
     spdflush; 
      
        
        
        
      
     spdadd 192.168.250.0/24 192.168.0.0/24 any -P out ipsec esp/tunnel/10.10.10.1.-10.10.10.2/require; 
      
        
        
        
      
     spdadd 192.168.0.0/24 192.168.250.0/24 any -P in ipsec esp/tunnel/10.10.10.2-10.10.10.1/require; 
      
        
        
        
      
    
      
      再起動すると、新しいインターフェイスが表示され、サービスが開始されたことがわかり、次の段階に進みます。
さて、それはFreeBSDのセットアップで行われたので、DI-804HVを開始する時です
Webコンソールに移動し、[VPN]タブに移動して、VPN接続の名前を入力し、[ その他 ]ボタンをクリックします。
 
      次の設定に入り、初期条件に従ってすべてのフィールドに入力します。
 
      このデータを入力したら、[ 適用 ]をクリックし、ページをリロードした後、IKEプロポーザルインデックスに移動する必要があります。 [IKEプロポーザルの選択 ]ボタンをクリックします。
 
      また、必要に応じて56ビットDESのみが表示されます。これは1DESに対応し、3DESには対応していません。
最初は、これに注意を払っていませんでした。そのため、接続が確立されなかった理由を理解するのに30分かかりました。 ファームウェアに問題がある可能性があると判断し、ftp.dlink.ruにアクセスして、最新のファームウェア1.53RUがあることを知りました。 キャッシュからさらにグーグル検索を行うことで、Googleはファームウェアに3DESがないという情報を引き出したので、古いものにロールバックする必要があります。 2008 ftp.dlink.com/Gateway/di804HV/Firmware/di804HV_firmware_151.BINのバージョン1.51が見つかりました。 アップグレード 、またはダウングレードと出来上がり -必要な3DESが右側のページに表示されました。
 
      それでは、すべてが単純です-DH グループを選択-グループ2 (racoon2の場合、これはmodp1024と同じです)、 暗号化アルゴリズム -3DES、 認証アルゴリズム -SHA1、 Life Time = 28800 (これらすべてのパラメーターが一致することを確認する必要があります) /usr/local/etc/racoon/racoon.confに示されているもの。最後に、コンボボックスで目的のプロポーザルIDを選択することを忘れないでください。[プロポーザルインデックスに追加 ] をクリックし、[ 適用 ] をクリックします。
IPSeProposalに戻り、必要なすべてのフィールドに入力します。
 
      これも同様にすべて追加し、保存して[ ステータス ] -> [VPNステータス ]タブに移動します。
 
      [再接続]をクリックします-これで、チャンネルの動作を確認できます:
 
      使用された文献:
www.opennet.ru
forum.lissyara.su
www.google.ru
PSこの記事は、このFreeBSD <-> D-Link DI-804HVバンドルのインストールを容易にするためだけに書かれたものです。セットアッププロセス中、フォーラムでこのバンドルのあらゆる種類の問題に定期的に遭遇したからです。 建設的なコメントは大歓迎です。