VPNサーバーの構成(GRE / IPSec StrongSwan、OSPF Quagga)

会社のサーバーの一部をAmazonに展開するのは悪い考えだと誰が考えたでしょう。

その結果、タスクはAmazonとロシア連邦のインフラストラクチャの間に追加のVPNトンネルを作成することでした。

画像

簡単なハウツーに加えて、発生する可能性のある構成のいくつかの機能について説明します。

  1. ファイアウォールとルーティング設定


    1か月あたり10,000モンゴルのtugriksに相当する量でまだブロックされていないVPSホスティング業者から購入し、CentOS 7を入れて、パケット転送を有効にします

    echo net.ipv4.ip_forward=1 >>/etc/sysctl.d/ipv4.forward.enable.conf sysctl -a 

    ファイアウォールでIPsecパケットを受信するためのルールを追加する

     firewall-cmd --zone=dmz --permanent --add-rich-rule='rule protocol value="esp" accept' firewall-cmd --zone=dmz --permanent --add-port=500/udp firewall-cmd --zone=dmz --permanent --add-port=4500/udp firewall-cmd --permanent --add-service="ipsec" firewall-cmd --reload firewall-cmd --list-all 

  2. StrongSwanのセットアップ


    IPsec StrongSwanデーモンをインストールします。

     yum install -y epel-release yum install -y strongswan 

    /etc/strongswan.d/charon.confにプリセットを作成します

     charon { #     Cisco IKEv2 make_before_break = yes #      install_routes = no } 

    Strongswanは2つの方法で構成できます。

    • strongswanデーモンを使用する古い方法は、すでに十分に説明されています。


      構成ファイル

      /etc/strongswan/ipsec.conf

      パスワードと証明書を含むファイル:

      /etc/ipsec.secrets

      サービス停止:

       systemctl stop strongswan 

    • バージョン5.2.0で導入されたcharonデーモンを使用した新しい方法:


      すべての構成は/etc/strongswan/swanctl/swanctl.confに保存されます

      charonデーモンを構成するための2つのオプションを検討してください。

      1. 全員に同じ認証と暗号化設定。 PSKを異なるものにしましょう。


         connections { ToWorld { local_addrs = 10.3.3.1 version = 1 proposals = aes256-sha1-modp1536 reauth_time = 1440m local { auth = psk } remote { auth = psk } children { ToWorld-1 { local_ts = dynamic[gre] remote_ts = dynamic[gre] mode = transport esp_proposals = aes128-sha1-modp1536 rekey_time = 60m start_action = trap dpd_action = restart } } } } secrets { ike-To-2951 { id = 1.1.1.1 secret = "etokto2ttakoimohnatenkyi" } ike-To-CSR1000V { id = 2.2.2.2 secret = "zdorovkakzhiznkasampro100klass" } } 

      2. 個別の認証および暗号化設定:


         connections { To2951 { encap = no remote_addrs = 1.1.1.1 version = 1 proposals = aes256-sha1-modp1536 reauth_time = 1440m fragmentation = yes local-1 { auth = psk id = 10.3.3.1 } remote-1 { auth = psk } children { To2951-1 { local_ts = 10.3.3.1/32[gre] remote_ts = 1.1.1.1/32[gre] mode = transport esp_proposals = aes128-sha1-modp1536 rekey_time = 60m start_action = start dpd_action = restart } } } ToCSR1000V { encap = no remote_addrs = 2.2.2.2 version = 1 proposals = aes256-sha1-modp1536 reauth_time = 1440m fragmentation = yes local-1 { auth = psk id = 10.3.3.1 } remote-1 { auth = psk } children { ToCSR1000V-1 { local_ts = 10.3.3.1/32[gre] remote_ts = 2.2.2.2/32[gre] mode = transport esp_proposals = aes128-sha1-modp1536 rekey_time = 60m start_action = start dpd_action = restart } } } } secrets { ike-To-2951 { id-1 = 1.1.1.1 secret = "etokto2ttakoimohnatenkyi" } ike-To-CSR1000V { id-1 = 2.2.2.2 secret = "zdorovkakzhiznkasampro100klass" } } 

    サービスを有効にする

     sudo systemctl enable strongswan-swanctl sudo systemctl start strongswan-swanctl 

  3. Ciscoルーターでトンネルを上げる


    • CentOSでGREトンネルを構成する


      /etc/sysconfig/network-scripts/ifcfg-Tunnel13作成します

       NAME=Tunnel13 DEVICE=Tunnel13 ONBOOT=yes STARTMODE=onboot BOOTPROTO=none TYPE=GRE PEER_OUTER_IPADDR=1.1.1.1 PEER_INNER_IPADDR=172.16.130.2/30 MY_INNER_IPADDR=172.16.130.1/30 MY_OUTER_IPADDR=10.3.3.1 ZONE=trusted TTL=30 MTU=1400 

      /etc/sysconfig/network-scripts/ifcfg-Tunnel23作成します

       NAME=Tunnel23 DEVICE=Tunnel23 ONBOOT=yes STARTMODE=onboot BOOTPROTO=none TYPE=GRE PEER_OUTER_IPADDR=2.2.2.2 PEER_INNER_IPADDR=172.16.230.2/30 MY_INNER_IPADDR=172.16.230.1/30 MY_OUTER_IPADDR=10.3.3.1 ZONE=trusted TTL=30 MTU=1400 

      GREインターフェイスのセットアップには、いくつかの機能があります。

      1つ目は、パケットの正しい通過のためにMTUを減らすことです。

      2番目はTTLを指定することです。これは、将来OSPFを構成するときに必要になります。 これが行われない場合、OSPFパケットは、TTLが1(GRE over IPsecによる)でリモートホストに到着し、未応答のままになります。 したがって、デバイスはINIT / DROTHER状態でハングし、接続を待機しません。 ただし、正しいICMP応答は混乱を招く可能性があります。

      インターフェイスを上げる

       ifup Tunnel13 ifup Tunnel23 

    • Cisco 2951にトンネルを作成します


       crypto keyring StrongSwanKeyring pre-shared-key address 3.3.3.1 key etokto2ttakoimohnatenkyi crypto isakmp policy 60 encr aes 256 authentication pre-share group 5 crypto isakmp identity address crypto isakmp profile StrongSwanIsakmpProfile keyring StrongSwanKeyring match identity address 3.3.3.1 crypto ipsec transform-set StrongSwanTransformSet esp-aes esp-sha-hmac mode transport crypto ipsec profile StrongSwanIpsecProfile set transform-set StrongSwanTransformSet set pfs group5 set isakmp-profile StrongSwanIsakmpProfile interface Tunnel13 ip address 172.16.130.2 255.255.255.252 tunnel source GigabitEthernet2 tunnel destination 3.3.3.1 tunnel protection ipsec profile StrongSwanIpsecProfile 

    • Cisco CSR1000Vにトンネルを作成します


       crypto keyring StrongSwanKeyring pre-shared-key address 3.3.3.1 key etokto2ttakoimohnatenkyi crypto isakmp policy 60 encr aes 256 authentication pre-share group 5 crypto isakmp identity address crypto isakmp profile StrongSwanIsakmpProfile keyring StrongSwanKeyring match identity address 3.3.3.1 crypto ipsec transform-set StrongSwanTransformSet esp-aes esp-sha-hmac mode transport crypto ipsec profile StrongSwanIpsecProfile set transform-set StrongSwanTransformSet set pfs group5 set isakmp-profile StrongSwanIsakmpProfile interface Tunnel23 ip address 172.16.230.2 255.255.255.252 tunnel source GigabitEthernet2 tunnel destination 3.3.3.1 tunnel protection ipsec profile StrongSwanIpsecProfile 


    トンネルが起動し、暗号化が機能していることを確認してください。

    CentOSで

     strongswan statusall 

    Ciscoで

     show crypto session detail 

  4. Quaggaで動的ルーティングを構成する


    OSPFベースの動的ルーティングを使用する場合、次のステップは、CentOSでOSPFデーモンを起動し、新しいトンネルをフォールバックルートとして設定する論理的なものになります。

    • CentOSでのOSPFの構成


      Quaggaをデーモンとしてインストールします。

       yum install -y quagga 

      デーモン構成ファイル/etc/quagga/zebra.conf作成します

       hostname StrongSwanServer log file /var/log/quagga/quagga.log ! interface Tunnel13 ip address 172.16.130.1/30 ! interface Tunnel23 ip address 172.16.230.1/30 ! 

      パスの重みは、コストまたは帯域幅のパラメータを使用して調整し、目的のインターフェイスに設定できます。

      権限を設定し、サービスを有効にします

       chown quagga:quaggavt /etc/quagga/zebra.conf systemctl enable zebra.service systemctl start zebra.service 

      /etc/quagga/ospfd.confデーモンの構成ファイルを作成します

       log file /var/log/quagga/ospfd.log ! router ospf ospf router-id 10.3.3.1 passive-interface default no passive-interface Tunnel13 no passive-interface Tunnel23 network 172.16.130.0/30 area 0.0.0.0 network 172.16.230.0/30 area 0.0.0.0 

      権限を設定し、サービスを有効にします

       chown quagga:quaggavt /etc/quagga/ospfd.conf systemctl enable ospfd.service systemctl start ospfd.service 

      次に、vtyshターミナルを起動し、cisのようなインターフェイスでQuaggaを操作できます。次に例を示します。

       vtysh show running-config 

    • Cisco 2951でのOSPFの構成


       router ospf 1 passive-interface default no passive-interface Tunnel12 no passive-interface Tunnel13 no passive-interface GigabitEthernet1 network 192.168.1.0 0.0.0.255 area 0 network 172.16.120.0 0.0.0.3 area 0 network 172.16.130.0 0.0.0.3 area 0 

    • Cisco CSR1000VでのOSPFの構成


        router ospf 1 passive-interface default no passive-interface Tunnel12 no passive-interface Tunnel23 no passive-interface GigabitEthernet1 network 192.168.2.0 0.0.0.255 area 0 network 172.16.120.0 0.0.0.3 area 0 network 172.16.230.0 0.0.0.3 area 0 


    CentOSに到着したネイバーとルートの可視性を確認します。

     vtysh show ospf neighbor show ip ospf route 

    シスコでは:

     show ospf neighbor show ip ospf route 

  5. 検討されていないもの


    最も簡単なオプションについて説明しました。 もちろん、 IKE v2、証明書認証を使用してキー交換を設定し、ファイアウォールに追加のアドレスフィルタリングを追加し、認証で OSPFを実行し、多数のルーターをエリアで分割して、hello-intervalとdead-intervalの値をインターフェース。

    コメントでのアドバイスと、タイプミスに関する情報をPMに喜んでお送りします。 ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J354490/


All Articles