LoginSignup
25
31

More than 5 years have passed since last update.

RaspberryPiでVPNアクセスポイントを作る

Last updated at Posted at 2015-10-06

ゲーム機などにはVPNを使う機能がないので、VPN接続できるアクセスポイント作りたいなと思って試してみました。
実際は、家のネットワークが少し不自由だから、VPN経由だとSplatoon快適にできるんじゃねと思ったのがきっかけ

外出先とかで、ネットワークが信頼出来ない時とかにも使えるんじゃないでしょうか。

概要

RaspberryPiからSoftEther VPNのVPNサーバーにブリッジ接続して、USB無線LAN子機から直接接続するようにします。
簡単な流れを言うと、以下の様な感じです。

  1. SoftEther VPN BridgeでVPNサーバーに繋ぐ
  2. SoftEther VPN Bridgeのtapデバイスを作成する
  3. USB無線LAN子機をAPモードでセットアップ
  4. tapデバイスとUSB無線LAN子機のインタフェースをブリッジ

※SoftEther VPN ServerおよびSoftEther VPN Bridgeのインストール、カスケード接続は割愛します。

準備物

  • RaspberryPi(SoftEther VPN Bridgeインストール済み)
  • USB無線LAN子機(今回はGW-USWExtremeを利用)
  • VPNサーバー(SoftEther VPNを利用)

パッケージのインストール

$ sudo apt-get install bridge-utils hostapd

GW-USWExtremeはapt-getでインストールしたhostapdでは動かないため、対応したものに置き換えます。

$ wget http://www.adafruit.com/downloads/adafruit_hostapd.zip
$ unzip adafruit_hostapd.zip 
$ chmod 755 hostapd
$ sudo mv /usr/sbin/hostapd{,.bak}
$ sudo mv hostapd /usr/sbin

hostapdの設定

/etc/hostapd/hostapd.confを開いて以下のように書き換えます。

interface=wlan0
bridge=br0
driver=rtl871xdrv
ssid=えすえすあいでぃー
hw_mode=g
channel=6
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=ぱすわーど
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
macaddr_acl=0
#macaddr_acl=1
#accept_mac_file=/etc/hostpad/accept_macaddress.conf
ieee80211n=1
wmm_enabled=1
#ht_capab=[HT40+][GF][SHORT-GI-40][TX-STBC][RX-STBC1]
logger_syslog_level=3

ssidwpa_passphraseは適宜変えてください。
今回はブリッジを行うのでbridgeの項目も記入します。(もしかしたらあまり意味ない?)

ブリッジ設定

まずは/etc/network/interfaceswlan0br0の設定を加えます。

allow-hotplug wlan0
iface wlan0 inet manual

auto br0
iface br0 inet dhcp
# bridge_ports wlan0

hostapdが自動的にbr0にwlan0を追加してくれるそうですが、うまくいかない人はbridge_portsの行の#を外して最初から追加されるようにしてください。

SoftEther VPN Bridgeの設定

ローカルブリッジ設定からtapデバイスを追加しておいてください。
ここではtap_apという名前のtapデバイスを作ったことにして進めます。

/etc/init.d/vpnbridgeを編集して、起動時にtap_apbr0に追加されるようにします。

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server
DAEMON=/usr/local/vpnbridge/vpnbridge
LOCK=/var/lock/subsys/vpnbridge

test -x $DAEMON || exit 0
case "$1" in
start)
$DAEMON start
touch $LOCK
sleep 5

# SoftEther VPNで追加した仮想tapデバイス名を調べる
ap=`/sbin/ifconfig -a| awk '$1 ~ /^tap_ap/ {print $1}'`
/sbin/brctl addif br0 $ap
;;
stop)
$DAEMON stop
rm $LOCK
;;
restart)
$DAEMON stop
sleep 3
$DAEMON start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0

ポイントとは、brctltap_apbr0に登録しているところなので、自分のスクリプトに合わせて調整するといいと思います。
このスクリプトでは、念のため5秒waitを入れています。

動作確認

各サービスを再起動して設定を反映させます。
Wi-Fiに接続して、VPN先のIPアドレスが割り当てられていれば成功です。

参考

25
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
31