3G/LTE USBドングルを備えた遠隔地のオンプレサーバにSORACOM Napterを使ってSSH接続して保守を行う


Linuxオンプレサーバの保守運用のためにSSHで入る方法を備えておきたいと思いつつ，客先にインターネット経由でVPN張れるような穴開けとくのも気持ちが悪いので，SORACOM Napterを使った方法を検証してみることにしました．

使ったサーバ：Jetson Nano
使ったドングル：GREEN HOUSE／GH-UDG-MCLTEC
https://www.green-house.co.jp/products/gh-udg-mcltec/

作業の流れとしてはこんな感じ

1. Jetson Nanoのセットアップと諸設定
2. Jetson Nanoにドングルを挿してしてデバイス名の確認を行う
3. USBドングルの設定
4. SORACOM UserConsoleでオンデマンドリモートアクセスの設定
5. クライアントからSSH接続する
6. ルーティングの設定

# Jetson Nanoのセットアップと諸設定
通常通りSDカードにOSを書き込んで，LANケーブル挿してSSHで入ります．

```console
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether fa:e6:3c:14:c6:8d brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:e0:4c:68:00:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.20/24 brd 192.168.11.255 scope global dynamic noprefixroute eth0
       valid_lft 255362sec preferred_lft 255362sec
    inet6 fe80::8406:e2a3:cb09:92e4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: l4tbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.55.1/24 brd 192.168.55.255 scope global l4tbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::1/128 scope link tentative 
       valid_lft forever preferred_lft forever
5: rndis0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:85 brd ff:ff:ff:ff:ff:ff
6: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:87 brd ff:ff:ff:ff:ff:ff
```


ドングル挿す前に必要そうなものをインストールしておく

```console
sudo apt-get install -y usb-modeswitch wvdial
```

SORACOMさんで作ってくれたセットアップスクリプトを持ってきて実行しておく


```console
$ wget https://soracom-files.s3.amazonaws.com/setup_air.sh
$ chmod +x setup_air.sh 
$ sudo ./setup_air.sh 
```

# Jetson Nanoにドングルを挿してしてデバイス名の確認を行う

ドングル挿して認識してくれると，下記のようにusb1が追加されているはず．

```console
$ lsusb
(中略)
Bus 001 Device 009: ID 1ecb:02f1  

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether fa:e6:3c:14:c6:8d brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:e0:4c:68:00:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.20/24 brd 192.168.11.255 scope global dynamic noprefixroute eth0
       valid_lft 255144sec preferred_lft 255144sec
    inet6 fe80::8406:e2a3:cb09:92e4/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
4: l4tbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:85 brd ff:ff:ff:ff:ff:ff
    inet 192.168.55.1/24 brd 192.168.55.255 scope global l4tbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::1/128 scope link tentative 
       valid_lft forever preferred_lft forever
5: rndis0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:85 brd ff:ff:ff:ff:ff:ff
6: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether 8e:68:7e:d2:72:87 brd ff:ff:ff:ff:ff:ff
7: usb1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 32:81:61:ee:43:74 brd ff:ff:ff:ff:ff:ff
```

SORACOMさんで作ってくれたセットアップスクリプトではデバイスの名前が「wwan0」になってるようなので，これを「usb1」に修正する．終わった時点で下記の通り．

```console
$ sudo vi /etc/network/interfaces 
source-directory /etc/network/interfaces.d
allow-hotplug usb1 
iface usb1 inet wvdial

$ sudo reboot
```

usb1にIPアドレスが割り振られたはず．

```console
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether a6:4b:e5:f0:f5:75 brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:e0:4c:68:00:01 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.20/24 brd 192.168.11.255 scope global dynamic noprefixroute eth0
       valid_lft 241700sec preferred_lft 241700sec
    inet6 fe80::844:c77e:7587:fe2f/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
7: l4tbr0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether a6:c9:64:c3:b4:59 brd ff:ff:ff:ff:ff:ff
    inet 192.168.55.1/24 brd 192.168.55.255 scope global l4tbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::1/128 scope link tentative 
       valid_lft forever preferred_lft forever
8: rndis0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether a6:c9:64:c3:b4:59 brd ff:ff:ff:ff:ff:ff
9: usb0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master l4tbr0 state DOWN group default qlen 1000
    link/ether a6:c9:64:c3:b4:5b brd ff:ff:ff:ff:ff:ff
10: usb1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether d2:21:2a:a6:8b:a7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.35/24 brd 192.168.225.255 scope global dynamic noprefixroute usb1
       valid_lft 43195sec preferred_lft 43195sec
    inet6 fe80::ab85:9cf3:713f:e28d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
```



# USBドングルの設定
USBドングルを挿したPCのブラウザから「http://am.webcm 」にアクセスするとWebコンソールが開くので，ドングルに諸設定を行う

接続設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310137/aaf9a2ca-133f-9906-3acb-2f37cbd0286f.png)

加えて，DMZにjetsonのusb1に割り振られたIPアドレスを設定する．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310137/471ef486-39fe-25a2-55ee-8a3f09a99774.png)

# クライアントからSSH接続する
SORACOMのUserConsoleにログインし，今回利用するSIMにチェックを入れて「操作」メニューから「オンデマンドリモートアクセス」を選択すると，IPアドレスとポートが表示されるのでクライアントから接続する．

# ルーティングの設定
普段の通信はLAN向きだけど，SSHで最低限入れるようにルーティング設定したい（加筆予定）

# おまけ

ナダ電子さんのケース、本体価格考えると悩ましかったけど買ってみたらいい感じです
![IMG_20191230_132114.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310137/b962789f-f582-61d3-13bf-1ab12aa8e247.jpeg)

# (2020-01-07追記) 後日いざ使おうと思ったらドングルに割り当てられたIPアドレスが変わっていた
ドングルの接続切れてIPアドレス変わった・・・？
DMZの設定やりなおしじゃん・・・

```console
3746: usb1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
    link/ether 2a:96:45:3d:f3:a2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.225.37/24 brd 192.168.225.255 scope global dynamic noprefixroute usb1
       valid_lft 42673sec preferred_lft 42673sec
    inet6 fe80::9664:8e56:6c00:8c3d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
```