「VPN over SSH」の版間の差分
(ページの作成:「Category: Virtual Private Network Category:Secure Shell en:VPN over SSH {{Related articles start}} {{Related|ネットワーク設定}} {{Related|ルーター...」) |
(同期) |
||
21行目: | 21行目: | ||
Name=tun5 |
Name=tun5 |
||
Kind=tun |
Kind=tun |
||
− | MTUBytes=1480 |
||
− | [ |
+ | [Tun] |
User=vpn |
User=vpn |
||
Group=network |
Group=network |
2018年5月27日 (日) 20:18時点における版
関連記事
SSH 経由で Virtual Private Network をセットアップする方法は複数あります。ときとして役に立つことはありますが、通常の VPN を完全に置き換えることはできないので注意してください。詳しくは [1] を参照。
目次
OpenSSH 内蔵のトンネリング
OpenSSH には TUN/TAP サポートが組み込まれており -w<local-tun-number>:<remote-tun-number>
で使用します。ここではレイヤー3 (point-to-point) TUN トンネルを作る方法を説明します。レイヤー2 (ethernet) TAP トンネルを作成することも可能です。
systemd-networkd を使って tun インターフェイスを作成
以下のファイルを作成してください:
/etc/systemd/network/vpn.netdev
[NetDev] Name=tun5 Kind=tun [Tun] User=vpn Group=network
/etc/systemd/network/vpn.network
[Match] Name=tun5 [Address] Address=192.168.200.2/24
作成したら systemd-networkd.service
を再起動して有効化してください。
ip tunnel
コマンドで tun インターフェイスを管理することができます。
SSH コマンドでインターフェイスを作成
SSH は両方のインターフェイスを自動的に作成しますが、接続が確立した後に IP とルーティングを設定する必要があります:
$ ssh -o PermitLocalCommand=yes \ -o LocalCommand="sudo ifconfig tun5 192.168.244.2 pointopoint 192.168.244.1 netmask 255.255.255.0" \ -o ServerAliveInterval=60 \ -w 5:5 vpn@example.com \ 'sudo ifconfig tun5 192.168.244.1 pointopoint 192.168.244.2 netmask 255.255.255.0; echo tun0 ready'
SSH の起動
$ ssh -f -w5:5 vpn@example.com -i ~/.ssh/key "sleep 1000000000"
あるいは NAT を使用している場合、keep-alive オプションを追加します:
$ ssh -f -w5:5 vpn@example.com \ -o ServerAliveInterval=30 \ -o ServerAliveCountMax=5 \ -o TCPKeepAlive=yes \ -i ~/.ssh/key "sleep 1000000000"
トラブルシューティング
- ssh に tun インターフェイスへアクセス・作成する権限が必要です。tun インターフェイスや
/dev/net/tun
の所有者を確認してください。 - シングルマシンではなくネットワークにアクセスしたい場合は IP パケットフォワーディング、ルーティング、両方のファイアウォールを設定する必要があります。
PPP over SSH を使う
pppd を使用することで簡単に SSH サーバー経由のトンネルを作成できます:
# pppd updetach noauth silent nodeflate pty "/usr/bin/ssh root@remote-gw /usr/sbin/pppd nodetach notty noauth" ipparam vpn 10.0.8.1:10.0.8.2
VPN が確立されたら、トラフィックを転送することができます。内部ネットワークにアクセスするには:
# ip route add 192.168.0.0/16 via 10.0.8.2
暗号化されていないネットワークでの通信を保護するために、全てのインターネット通信をトンネル経由で転送するには、通常のゲートウェイ経由で SSH サーバーのルーティングを追加します:
# ip route add <remote-gw> via <current default gateway>
それから、デフォルトのルーティングをトンネルで置き換えてください:
# ip route replace default via 10.0.8.2
ヘルパースクリプト
pvpn は pppd
over SSH を使うためのラッパースクリプトです。pvpnAUR パッケージでインストールできます。
参照
- sshuttle-gitAUR - python トンネル