openvpn 立てた 続

結局、うまくいかなかったんで別のやり方を試しました。
そもそも openvpn には 2種類のやり方がありそれぞれ tap と tun という方式があります。

tap はL2で接続するブリッジというやり方でサーバと同一のセグメントにアクセスできる。サーバのIPが 192.168.0.240 であれば クライアントに割り当てられるIPは 192.168.0.241 とか
tun はL3で接続するやり方でサーバとは別のセグメントからアクセスすることができます。サーバのIPが 192.168.0.240 でクライアントに割り当てられるIPは 10.0.0.5 とか

それぞれ利点とか不便な点もあったりするんだけど簡単に説明すると

  • tap
    • 利点
      • 同一セグメントなのでルーティングとか考える必要なくて楽
    • 不便
      • ブリッジの設定が入るのでめんどい
      • ブロードキャストパケットのような不要なパケットも流れてくる
  • tun
    • 利点
      • 別セグメントなのでブロードキャストパケットのような余計なパケットうけとらない
      • 設定するのが比較的楽
      • 接続クライアントごとにセグメントを分けれたりできるのがいい
    • 不便
      • ルーティングテーブルの追加とかが必要になる

っていう感じ。前回は tap を試したのだけど、どうにも上手くいかないので tun で試してみる。

前回、証明書の作成方法とか書いたのでそこは省いて、コンフィグ周りの設定を晒します。
ちなみにこっちの方法だと bridge-utils いらないです。

構築環境

Ubuntu 9.10
openvpn 2.1_rc19
サーバIP 192.168.0.240 仮想インターフェイス10.0.0.1
ルータIP 192.168.0.1

サーバーコンフィグの設定

# vi /etc/openvpn/server.conf

port 1139
proto tcp
dev tun0

ca /etc/openvpn/key/ca.crt
cert /etc/openvpn/key/ubuntu.crt
key /etc/openvpn/key/ubuntu.key  # This file should be kept secret
dh /etc/openvpn/key/dh1024.pem

server 10.0.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.0.0 255.255.255.0"

push "redirect-gateway def1"
push "dhcp-option DNS 192.168.0.1"

keepalive 10 120

comp-lzo
user nobody
group nogroup

persist-key
persist-tun

status openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log

verb 3

インターフェイスの設定

# vi /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static 
    address 192.168.0.240
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
    gateway 192.168.0.1

# /etc/init.d/netwoking restart
# /etc/init.d/openvpn start

クライアントの設定

client

dev tun

proto tcp

remote serverIP serverPort

resolv-retry infinite

nobind

persist-key
persist-tun

ca thinkpadca.crt
cert thinkpad.crt
key thinkpad.key

comp-lzo

verb 3

と、これだけで繋がるようになります。

だた、うちの環境だと MacBook でBT接続時だけ、サーバ側にあるサーバにアクセスできないという問題がおこっています。ルーティングテーブル周りがおかしい気がするんだけど、めんどい、、、、。