1
4

More than 5 years have passed since last update.

LTEモデムを繋いだラズパイにSSH接続したいのでVPNを使う

Last updated at Posted at 2017-01-11

VPS_VPN.png

LTEモデムでインターネットにラズパイを接続するのですが、自分の使用しているSIMでは外部からSSH接続は出来ないです。
面白そうという訳でOpenVPNを使います。(SORACOM Gateも使ってみたいのですが、、、)

LTEモデムの導入

まずはLTEモデムの導入ですが、L02Cがあるのでそれを使用します。
導入は下記の記事を参考にさせていただきました。
MVNOの格安SIMを使ってRaspberry PiでLTE3Gモバイルルータを作ってみよう!
上記サイトの手順以外の方法でも良いので、起動時にモデムの自動接続するようにしておきます。

OpenVPNの導入

自動でLTE接続ができるようになったところで、今度はVPN接続を行います。
OpenVPNを使用します。
自宅のラズパイをVPNサーバにしても良いのですが、ハイポートを指定するにしても環境を開ける事にちょっと抵抗があるので、今回はconohaのVPSにLTE回線のラズパイと自宅のラズパイからVPN接続します。
導入手順は下記が参考になりました。
VPNサーバー構築(OpenVPN)

VPNサーバ側の設定

デバイスはtunを使用。
クライアント同士の接続を許可します。

server.conf
port 1194
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd
client-to-client #クライアント同志での接続を許可
duplicate-cn
keepalive 10 120
tls-auth ta.key 0
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 3
explicit-exit-notify 1
management localhost 7505
crl-verify /etc/openvpn/crl.pem

アクセス環境の設定についてはopenvpn-start.shなど設定スクリプトは用意せずにiptablesの設定ファイルに直接書き込みiptablesの自動起動時に設定されるようにします。

iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#接続が確立したものについては通信を許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ループバックアドレスからの接続を許可
-A INPUT -i lo -j ACCEPT
#特定環境からのSSH接続を許可
-A INPUT -s XXX.XXX.XXX.XXX/32 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
#VPN接続を許可
-A INPUT -m state --state NEW -m udp -p udp --dport 1194 -j ACCEPT
#VPNの接続許可
-A INPUT -i tun+ -j ACCEPT
#vpnの転送許可設定
-A FORWARD -o tun+ -j ACCEPT
COMMIT

クライアントのIP固定方法(クライアント毎に証明書などを用意する必要があります。)
サーバの/etc/openvpn/ccd配下にクライアント毎に下記のファイルを作成
今回は自宅のラズパイをclient1にして10.8.0.5のIPを付与、LTE回線側のラズパイをclient2にして10.8.0.9に固定IPを付与します。

client1
ifconfig-push 10.8.0.5 10.8.0.6
client2
ifconfig-push 10.8.0.9 10.8.0.10

VPNクライアント側の設定(自宅のラズパイとLTE回線側のラズパイ)

クライアント証明書・秘密鍵はパスフレーズ無しで自宅のラズパイ、LTE回線側のラズパイの2台分作成しておきます。

client.conf
client
dev tun
proto udp
remote XXX.XXX.XXX.XXX 1194 #ここはVPNサーバのアドレス
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/clientX.crt
key /etc/openvpn/clientX.key
tls-auth /etc/openvpn/ta.key 1
cipher AES-256-CBC
comp-lzo
verb 3

LTE回線側ラズパイのiptables設定

rules.v4
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
#接続が確立したものについては通信を許可
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#ループバックアドレスからの接続を許可
-A INPUT -i lo -j ACCEPT
#VPNローカルアドレスからのSSH接続の許可
-A INPUT -m state --state NEW -p tcp -s 10.8.0.0/24 --dport 22 -j ACCEPT
COMMIT

書いてませんが、サーバ側のVPN、SSHポートはハイポートにしておくといいです。
これで自宅の環境からラズパイにSSH接続を行う事が可能となります。

1
4
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
1
4