■CALENDAR■
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30      
<<前月 2009年11月 次月>>
■LOGIN■
現在のモード: ゲストモード
USER ID:
USER PW:
■ADMIN■
ADMIN ID:
ADMIN PW:
■NEW ENTRIES■
■RECENT COMMENTS■
■RECENT TRACKBACK■
■CATEGORIES■
■ARCHIVES■
■PROFILE■
■POWERED BY■
BLOGN(ぶろぐん)
BLOGNPLUS(ぶろぐん+)
■OTHER■

玄箱HGでVPNサーバ構築(OpenVPN設定編)
玄箱HGでVPNサーバー構築の続きです。


とりあえず、何も考えずに「OpenVPN」と「bridge-utiles」をインストール(笑
apt-get install openvpn bridge-utils


OpenVPNは2.0,1、bridge-utilsは1.0.4.1が入ります。

あとは、設定。
ネットワーク環境は、
外---[ルータ:192.168.0.254]---[玄箱:192.168.0.1]
を想定しています。

/etc/openvpnが設定ファイルなどを置く場所になっていますので、ここにserver.confの名前で以下の内容を記述。

port 1194(使用ポート:最新は1194が標準。2.0.1では5000なので1194と明示的に指定)
proto udp(TCP or UDP:UDPのの方がいいらしい)
tls-server(TLS 認証を有効にします)
dev tap0(仮想イーサーデバイスの指定)
ca /etc/openvpn/ca.crt(CAの公開鍵)
cert /etc/openvpn/server.crt(サーバの公開鍵:CAによる署名済み)
key /etc/openvpn/server.key(サーバーの秘密鍵)
dh /etc/openvpn/dh1024.pem(公開鍵アルゴリズムファイル)
server-bridge 192.168.0.254 255.255.255.0 192.168.0.200 192.168.0.220(※)
ifconfig-pool-persist /etc/openvpn/ipp.txt(いらないかも・・・)
push "redirect-gateway def1"(クライアントのデフォルトゲートウェイにサーバー側のものを渡す)
duplicate-cn(同一クライアント証明書を受ける為の設定)
keepalive 10 120(10秒間隔でサーバー接続確認。120秒後に切断)
tls-auth /etc/openvpn/ta.key 0 (共通暗号化鍵、0はサーバー側の意)
cipher BF-CBC(暗号化方式:Blowfish)
comp-lzo(通信の圧縮指定)
persist-key(良く分かりませんが必要)
persist-tun(良く分かりませんが必要)
status /etc/openvpn/openvpn-status.log(接続状況ログの指定)
verb 3(ログのレベル:3がやや軽めらしい)


これでOpenVPN側の設定は完了。
server-bridge の※ですが、
色んなサイトを調べてると、その殆どが
server-bridge [Physical NIC IP] [Subnet] [OpenVPN DHCP IP Start] [OpenVPN DHCP IP end]

[Physical NIC IP]サーバーのブリッジデバイスのIPアドレス
[Subnet]サブネット
[OpenVPN DHCP IP Start]クライアントにリースするIPの範囲(最初)
[OpenVPN DHCP IP end]クライアントにリースするIPの範囲(最後)
となっています。
しかし、「Physical NIC IP」にそのままブリッジのIPアドレスを設定すると、そのアドレスに向かってパケットを飛ばしてしまうようで、VPN経由でインターネットに出ることができません。
(LAN内はアクセスできますが)
なので、「Physical NIC IP」にはゲートウェイアドレス(この場合192.168.0.254)を設定してみたところ、そちらにパケットを飛ばしてくれるようになり、VPN経由でインターネットに出ることができました。
(反則かな~^^;)

次にブリッジ。
bridge-utilsがインストールされていて、カーネルのブリッジのモジュールのコンパイルが正しく出来ていたら、
brctl
ってコマンドが動作するはず。
コレを使って、ブリッジデバイスを登録する必要があります。
OpenVPNをソースからダウンロードしていたらその関係のスクリプトもサンプルで付いてきますが、apt-getでインストールするとありません。
ですので、本家から最新分でいいのでダウンロードしてきて、sample-scriptsフォルダにある、
bridge-start と bridge-stop を/etc/openvpn にコピー。

bridge-startには、ブリッジデバイスへのIPアドレスなどの設定が書かれていますので、これを編集。

17行目辺り
eth_ip="192.168.0.1"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.0.255"

この部分を環境に合わせて編集。

それと、そのままだとブリッジデバイスのデフォルトゲートウェイが設定されないようなので、上記3行の下に
eth_gateway="192.168.0.254"


ファイル最下行に
route add default gw $eth_gateway $br

を追加。

次に、bridge-stopですが、多分このままでブリッジデバイスを停止させても、start時にeth0とtap0をプロミスカスモードにしてIPアドレスを破棄した状態のままなので、モードとIPアドレスも元に戻す必要があると思いますが、今回はVPNサーバーとして動いてくれればOKなので割愛。
(ifdown eth0とifup eth0でいけるかな?)

2ファイルを準備できたところで、最後は、起動部分の編集。
ブリッジデバイスが動作した後でVPNが動いて欲しいので、/etc/init.d/openvpnを編集。

start_vpn () 内の

  $DAEMON --writepid /var/run/openvpn.$NAME.pid \
    $DAEMONARG $STATUSARG --cd $CONFIG_DIR \
    --config $CONFIG_DIR/$NAME.conf || echo -n " FAILED->"
の直前に
 $CONFIG_DIR/bridge-start


それと、stop_vpn () の最後の部分に
$CONFIG_DIR/bridge-stop


これでOK。
書き忘れがあるかもしれませんが、ざっとこんな感じで準備して、
/etc/init.d./openvpn start
でエラーなく動作したらOKです。

ちなみに、クライアント側(今回はWindows)
dev tap
dev-node tap-1
proto udp
pull
float
tls-client
remote (ルータのグローバルアドレス) 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
cipher BF-CBC
comp-lzo
verb 3


です。説明は・・・ゴメンナサイ、疲れました(苦笑
必要でしたらしますが、検索したら沢山出てくると思います(^^;

てなわけで、グダグダですが、玄箱HGのVPNサーバー構築でした~♪

#長い文章は苦手だな・・・
| http://ika10.zapto.org/~desk/index.php?e=115 |
| 実益を兼ねた調査::玄箱HG | 06:02 PM | comments (0) | trackback (0) |










PAGE TOP ↑