LTE 모뎀을 연결 한 라즈파이에 SSH 연결하고 싶으므로 VPN 사용



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 연결을 할 수 있습니다.

좋은 웹페이지 즐겨찾기