wiki:TipAndDoc/network/vpn/openvpn

Version 3 (modified by mitty, 15 years ago) (diff)

--

HOWTO

設定ファイルについて

  • /etc/openvpn/*.conf がそれぞれ読み込まれる
    • /etc/init.d/openvpn
      (snip)
      
      CONFIG_DIR=/etc/openvpn
      
      (snip)
      
      case "$1" in
      start)
      
      (snip)
      
            for CONFIG in `cd $CONFIG_DIR; ls *.conf 2> /dev/null`; do
              NAME=${CONFIG%%.conf}
              start_vpn
            done
      

router mode

  • 基本的に#HOWTOの通りでよい

server side settings

  • sudo aptitude install -R openvpn
  • cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz .
  • vim server.conf
    • 適宜編集

各種鍵・証明書

  • #HOWTOで「自分でCA(認証局)を作り,OpenVPNサーバとクライアントのために証明書と鍵を生成する」となっているセクションは、代わりにssl?に従って作成する
    • rootCAを新しく作るのは管理が面倒になるため
    • Apache向けのSSL certを作るのとやり方は変わらない
  • rootCAのCA証明書とDHパラメータが、生成されないので、二つだけ個別に作る
    • openssl x509 -in demoCA/cacert.pem -out ca.crt
    • openssl dhparam -out dh1024.pem 1024
  • openssl.cnfに対する編集([3#file2])のため、Apache用SSL証明書と同様に作成した鍵・証明書を用いると、サーバ側で「VERIFY ERROR: depth=0, error=unsupported certificate purpose: 」というエラーになり接続が維持されない。
  • sudo mv ca.crt dh1024.pem server.* /etc/openvpn/
    ca.crt
    dh1024.pem
    server.conf
    server.crt
    server.key
    

デフォルトで出来るTUN

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:336 (336.0 B)  TX bytes:504 (504.0 B)

client side

  • serverと同様に各種鍵を作る。ca.crtはserverと同じ物を使用。
  • cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf .
  • vim client.conf
    • 適宜編集
  • sudo mv * /etc/openvpn/
    ca.crt
    client.conf
    client.crt
    client.key
    

デフォルトで出来るTUN

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.6  P-t-P:10.8.0.5  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

bridge mode

  • server側は物理NICとTAPデバイスのブリッジを造る必要がある。
    • sudo aptitude install -R bridge-utils
  • クライアント側はconfを編集してTUNをTAPに変更するのみ

bridge script

  • sudo cp bridge-start /etc/init.d/
  • sudo update-rc.d bridge-start start 99 S .
     Adding system startup for /etc/init.d/bridge-start ...
       /etc/rcS.d/S99bridge-start -> ../init.d/bridge-start
    
  • OS起動時に、networking -> bridge-start -> ufw の順でサービスが起動する

customize ufw

  • 以下の追加を忘れると、サーバ<->クライアント間でpingしか通らないので注意
    -A ufw-before-input -i tap0 -j ACCEPT
    -A ufw-before-input -i br0 -j ACCEPT
    -A ufw-before-forward -i br0 -j ACCEPT
    

misc

error on dhcp3-server

eth0とtap0をブリッジした場合、eth0がプロミスキャスモードでIPが振られなくなるため(ブリッジデバイスのbr0にIPが来る)、以下のようなエラーが出てdhcpdが起動しなくなる。

No subnet declaration for eth0 (0.0.0.0).
  • /etc/default/dhcp3-server を以下のように修正して回避する
    INTERFACES="br0"