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に喜んでお送りします。 ご清聴ありがとうございました。




All Articles