さくらVPSにVPNゲートウェイ(OpenVPN)を作った その2

on
1 minute read

前回の続きです。 今回はサーバー側のコンフィグの編集〜iptablesの設定までを書きます。

  • VPN
    • 10.8.0.1/24
  • クライアント
    • 10.8.0.5,10.8.0.9,10.8.0.13 , ... /24
      このipアドレスの割り振りの規則については後ほど説明します

手順

2.server.confの編集
/etc/openvpnのserver.confを編集します。前回に引き続きsudo suを行っている状態ということで説明をしてきます。
サンプルの設定をコピー・解凍し、編集を行います。

cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
gzip -d server.conf.gz

server.conf
コメントアウトされている箇所は";"または"#"を削除して有効にします。

port 1194 ;ポート番号です
proto tcp ;今回はプロキシサーバーを経由するのでTCPにしましたが通常はUDP(proto udp)でOKです
dev tun
ca ca.crt
cert [サーバーの名前].crt
key [サーバーの名前].key
dh dh2048.pem
server 10.8.0.1 255.255.255.0 ;サーバーのipアドレス 10.8.0.1/24
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"  ;VPNサーバーをデフォルトゲートウェイにする設定らしいです
push "dhcp-option DNS 8.8.8.8" ;DNSの指定
push "dhcp-option DNS 8.8.4.4" ;代替DNSの指定
client-to-client ;クライアント間の通信の許可
client-config-dir /etc/openvpn/ccd ;クライアント別の設定ファイルを入れるディレクトリ
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody  
group nogroup 
persist-key
persist-tun
status openvpn-status.log
verb 3


次にクライアント別の設定を行います。 クライアントのipアドレスを固定できるようにします。
ccdというディレクトリの中にはクライアントの鍵と証明書を作る際に指定した名前と同じ名前のファイルを作り、そのファイルに設定を記述します。

mkdir /etc/openvpn/ccd
nano /etc/openvpn/ccd/client1
ifconfig-push 10.8.0.5 10.8.0.6
nano /etc/openvpn/ccd/client2
ifconfig-push 10.8.0.9 10.8.0.10
nano /etc/openvpn/ccd/client3
ifconfig-push 10.8.0.13 10.8.0.14

これで、client1.crt,client1.keyを使用したクライアントには10.8.0.5が、client2.crt,client2.keyを使用したクライアントには10.8.0.9がといった具合で ipアドレスが割り振られます。利用可能な組み合わせは以下のようになります。

[ 5, 6] [ 9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]


3.iptablesの設定
まずは

nano /etc/sysctl.conf
 net.ipv4.ip_forward=1  ;#を消去し保存
sysctl -p

でパケットの転送を許可します。
次にiptablesの設定を編集していきます。VPNに接続したクライアントがVPSからWANに出て行く設定を記述します。

iptables -t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE


ローカルサーバー上のwebサイトをVPNを経由させて公開したい場合、VPSへのアクセスを自鯖の80番に回すルールも記述しなくてはいけないのですがそれはまた今度。 なおこのiptablesのルールはVPS再起動するとリセットされてしまいますので、起動時に自動で登録するスクリプトを作るか自分で一から入力し直す必要があります。(私は再起動するたびにコピペしてます)

これにてサーバー側の設定はおしまい。
次回:クライアントの設定→接続〜ローカルのwebサーバーにアクセスできるようにする設定