openvpn 立てた
自宅サーバをせっせと構築してたんだけどヘアピンNATがついてないルータなのでグローバルIPで自宅サーバにアクセスすることができずに自宅と外とでグローバルIPとローカルIPを使いわけるのがめんどうだなーということを考えてました。まぁ、主にIRCクライアントでめんどうだなーというぐらいなんですけどね。
で、常にローカルIPで接続できるように openvpn でも自宅サーバで立てるかと思い立ったわけです。ほかにも外から仕事用ノートPC (windows) へのリモートデスクトップを安全に行なえたり、常に自宅からの接続に見せかけてネットストーカーの目をごまかす等、いろいろ役に立ちますしね。
ということで、 Ubuntu 9.10 で openvpn の構築をしました。
必要なパッケージのインストール
# apt-get install openvpn bridge-utils
証明書の作成
# cd /usr/share/doc/openvpn/examples/easy-rsa/2.0 # vi vars export KEY_COUNTRY="JP" export KEY_PROVINCE="Tokyo" export KEY_CITY="Akihabara" export KEY_ORG="Akihabara-dennogumi" export KEY_EMAIL="yuta@lql.be" # source ./vars # ./clean-all # ./build-ca # ./build-dh # ./build-key-server ubuntu # ./build-key thinkpad
vars に必要な情報を入れておけば後で証明書作るときとかにエンター押してればいいだけで楽(サーバの証明書とか作るときにCA証明書に署名するかと聞かれるのでそこだけ y にする)
build-key-server でサーバ用の証明書と鍵を作成
build-key でクライアント用の証明書と鍵を作成、クライアント毎に作成しよう
ちなみに build-key-pass でパス付きのクライアント用の証明書と鍵を作成できる。
# mkdir /etc/openvpn/key # cp keys/ca.crt /etc/openvpn/key/ # mv keys/dh1024.pem /etc/openvpn/key/ # mv keys/ubuntu.* /etc/openvpn/key/
サーバーコンフィグの作成
ルータのIPが192.168.0.1の環境の場合
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ # gunzip /etc/openvpn/server.conf.gz # vi /etc/openvpn/server.conf port 1139 proto udp dev tap0 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 ifconfig-pool-persist ipp.txt server-bridge 192.168.0.1 255.255.255.0 192.168.0.241 192.168.0.249 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 br0 iface br0 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 bridge_ports eth0 tap0 # /etc/init.d/netwoking restart # /etc/init.d/openvpn start # ifconfig tap0 up ; brctl addif br0 tap0 # ifconfig tap0 0.0.0.0 promisc up # ifconfig eth0 0.0.0.0 promisc up # ifconfig
openvpn を立ち上げないと tap0 のインターフェイスが作成されないので openvpn を立ち上げた後に br0 とのブリッジの設定と promisc モードの追加を行う。ifconfig で tap0 が立ち上がっていることの確認と promisc モードになっているかの確認を行う
クライアントの設定
サーバからクライアント用の鍵と証明書それにCA証明書をコピーしておく
client dev tap proto udp remote serverIP serverPort resolv-retry infinite nobind persist-key persist-tun ca thinkpadca.crt cert thinkpad.crt key thinkpad.key comp-lzo verb 3
固定回線からは問題なくVPN入れるのになぜか emobile の回線からだとうまくいかない、、、。MTUのサイズかと思っていろいろ弄ってはみたんだけど一向にうまくいかない、、、。