さくらVPSにVPNゲートウェイ(OpenVPN)を作った その2
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サーバーにアクセスできるようにする設定
I feedback.
Let me know what you think of this article on twitter @370kun or leave a comment below!
前回の続きです。 今回はサーバー側のコンフィグの編集〜iptablesの設定までを書きます。
- VPN
- 10.8.0.1/24
- クライアント
- 10.8.0.5,10.8.0.9,10.8.0.13 , ... /24
このipアドレスの割り振りの規則については後ほど説明します
- 10.8.0.5,10.8.0.9,10.8.0.13 , ... /24
手順
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サーバーにアクセスできるようにする設定
Let me know what you think of this article on twitter @370kun or leave a comment below!