Fortigateでssl-vpn接続後にlanに接続された端末と通信する

# Fortigateでssl-vpn接続後にlanに接続された端末と通信する
〇やりたいこと
Fortigateでssl-vpn接続後にlanに接続された端末とWAN側の端末でping、ファイル共有、リモートデスクトップする

色々な記事を参考しにしたけど、プラス以下のどれかの設定を追加しないと通信できなかった。
プラスで設定した項目を記載していく。
+ NAT設定 ※楽
+ 端末にスタティックルーティングの追加
+ 宛先端末のデフォルトゲートウェイをlanに設定する

この記事ではSSL-VPNの全体的な設定方法は説明しない。自分のはまった部分だけ記事にする。
設定方法は下の記事のリンクを参考。

## NW環境（固定IP）
![IMG_4151.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683457/474f1459-3dc5-079c-d0a7-bca95a7720c6.jpeg)
Fortigate OS :v5.4.10,build1220 (GA) 
Forticlient  :7.2.2.0864
WAN側の端末　Win11Pro
LAN側の端末　Win10home
※Forticlientがインストールされた端末とFortigateは有線接続でもよかったけど、端末があればどこでも検証できるように安い家庭用Wi-fiルーターをアクセスポイントにして無線接続した。
[forticlient]>>>[AP]---[Fortigate]

### NAT設定（楽でおすすめ）
SSL-VPN設定のNATをオンにするのみ。
![スクリーンショット 2024-01-25 130359.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683457/5a0d5191-7e81-823d-3bd2-aa2de7cee3cb.png)
IPプール設定が　送信インターフェースのアドレスを使用　だと、払い出されたIPがlanに割り当てられたIPにNATされていることをログで確認した。NAT変換のデフォルト設定はLANに割り当てられたIP。
Fortigateのコンソールでログ確認　必要そうなログのみ抜粋　pingしたときのログ

~~~
34: date=2024-01-20 time=04:54:33
srcip=10.212.134.200 srcintf="ssl.root" dstip=192.168.11.200 dstintf="lan"
trandisp=snat transip=192.168.11.99
service="PING" 
~~~
送信元がsrcip=10.212.134.200
変更後のIPがtransip=192.168.11.99
宛先のIPがdstip=192.168.11.200
払いだされたIPがLANのインターフェースのIPに変換されたことがわかる。公式サイトで値の確認ができる。
![スクリーンショット 2024-01-25 132740.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683457/440c1074-8f2b-1fc0-692d-ff0c192ce290.png)
詳細は下の参考記事
GUIでも通信結果見れるけど細かく見たいならCLIの方が色々載ってる。
![スクリーンショット 2024-01-25 133230.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683457/6666dfcf-f42d-3a77-31c3-d5da37bb986e.png)
赤枠内はpingしたときのログ。送信元と宛先しかのっていない。詳細にNATについての情報があったのかも。
デフォルトだとこのログはでない。
logの出力レベルを変える方法
~~~
$ execute log display
~~~
ログレベル変更
Severityレベルをinformationにする。
~~~
$ config log memory filter
$ set severity information
$ end
~~~
詳細は下の参考記事

### 端末にスタティックルーティングの追加
送信元の通信は宛先まではたどり着けるが、宛先端末はssl-vpn用に払い出されたIPの経路情報をしらないから、送信元にパケットを返せない。
だからスタティックルートの設定をしなくてはならない。固定IP指定でも、セグメント指定でも経路情報登録後は通信が出来た。
SSL-VPNした時にFortigateから払い出されるアドレスのネットマスクが255.255.255.255なのは、SSL-VPNで使用しているプロトコルがそういうもんらしい。詳しくはよくわからんかった。
宛先端末で管理者権限でコマンドプロント開いて以下を入力
<details><summary>管理者権限でコマンドプロントを開く</summary>

winボタン　+　Rキー
↓
"cmd"と入力
↓
shiftキー　+ ctrlキー　を押しながらokボタンをクリック
</details>
SSL-VPNの払出しアドレスが10.212.134.200から10.212.134.210(デフォルト設定)であれば、セグメント指定でいいと思う。通信できたし。

~~~
route add 10.212.134.0 mask 255.255.255.0 192.168.11.99
~~~
サブネットを　255.255.255.0で指定すると、10.212.134.0〜10.212.134.255のIPは192.168.11.99宛に送られるはず。

SSL-VPNの払出しアドレスが10.212.134.200 mask 255.255.255.255 であれば、

~~~
"route add 10.212.134.200 mask 255.255.255.255 192.168.11.99"
~~~
上のコマンドは複数の端末があると端末ごとに払出しIP確認してから入力しないとだからめんどくさいしミスも起きそう。
詳細は下の参考記事

### 宛先端末のデフォルトゲートウェイをlanに設定
~~この環境なら通信できそうだけど、ルーターやセグメントが追加されたときに通信できなくなると思われる。やってないから不明。~~
スタティックルートでもデフォルトルートでも恐らく問題ない。
コントロールパネルから設定。
winボタン　+　Rキー　→　ncpa.cpl　→　該当のインターフェースを右キリックしてプロパティ　→　　ipv4の設定を右クリックしてプロパティ　→　FortigateのWANのインターフェースに振られているIPを指定する
![スクリーンショット 2024-01-28 111043.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3683457/b02f4d40-0b36-0a0c-6530-d82d5ce570a9.png)


### ハマったところ
+ SSL-VPNインターフェース　→  Lan配下の端末　に通信できなかった。
NAT設定か宛先端末のスタティックルートの設定が必要だった。
ルーティングの追加が必要なのかと思って色々やったがダメだった。
+ Forticlientの自動アップデートエラーでSSL-VPN接続できなかった。
ローカル環境だったので、ForticlientがSSL-VPN接続時にアップデートがあるかインターネット接続して確認しようとしてエラーになりSSL-VPN接続まで進まなかった。
Fortuclient → ！ボタン　→ 警告に"A network error prevented updates from being downloaded."と表示される。
ローカル環境の場合はconfigの設定変更が必要。
Fortigateが新めのOSだと自動ファームアップする仕様がある。forticlientもそういう機能がありそうだと思い、configを確認するとそれらしき項目があったので、機能をオフにするとエラーが発生せずにssl-vpn接続ができた。
これは原因がわかるのにかなり時間がかかった。ローカル環境で検証するなら要注意。
多分0が機能オフで、1が機能オン。
どこで調べたのか忘れた。。公式サイトかな。
~~~
<disable_internet_check>0</disable_internet_check>
↓
<disable_internet_check>1</disable_internet_check>
~~~
configのバックアップとリストアはFortuclient → 歯車ボタン　→ バックアップ or リストア
ほとんどの場合問題ないが、改行コードが変わってしまう可能性があるのでメモ帳ではなく、サクラエディタなどのテキストエディタで編集した方がいい。

○わからなかったこと
SSL-VPNについてググった記事は、NATせずにSSL-VPN接続の設定のみで
SSL-VPNインターフェイス　→  lanに通信出来てるみたいだったが何故だろうか。
自分もNATやルーティングの設定はいらない認識だったが、NAT設定もしくは宛先端末に、SSL-VPNアドレス　→ Lan のスタティックルートを設定しないとしないと通信出来なかった。Fortigateは自身のインターフェイス(WAN,LAN,仮想SSL-VPNインターフェイス)に存在するIPだったら通信できんじゃね？って思ってた。
宛先端末に固定IPかデフォルトゲートウェイの設定してなかったから、固定IPのアドレス以外が通信しにきたら、どこに通信返せばいいかわからなくて通信出来なかったんだと思う。

○その他
インターネットに接続した状態でSSL-VPN接続してみたかったが、OSも古いしやめておいた。脆弱性をつかれて不正アクセスされたところで価値のある情報はないが念のため。

○検証記録を残してみて感じたこと
初めて記事を書いたが、時間がかかるし結構面倒くさい。備忘録なので自分のハマったところしか書いてないがまとめるの結構大変だ。
 
○参考記事。すごく助かりました。ありがとうございました！
FortigateでSSL-VPNの設定
https://www.secuavail.com/kb/nw-device/fortigate/2023-fortigate_ssl-vpn-setting/
https://licensecounter.jp/engineer-voice/blog/articles/20200813_fortigatesslvpn.html

Fortigateのスタティックルートの書き方
https://nwengblog.com/fortigate-static/

端末へのスタティックルートの書き方
https://www.infraexpert.com/study/routing4.html

VPN装置から払い出されたIPアドレスのサブネットってなんで255.255.255.255なの？
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10245897025
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14278118594

Firtigateのログの取り方と設定
https://www.secuavail.com/kb/nw-device/fortigate/fortigate-cli-log/

共有フォルダの作り方
https://notepm.jp/blog/8405

Windows10 homeにリモート接続する
https://usedoor.jp/howto/digital/pc/windows-home-edition-rdp-remote-desktop/

Fortigate　ログの値について
https://docs.fortinet.com/document/fortigate/7.2.4/fortios-log-message-reference/357866/log-message-fields

なんでSSL-VPN設定する時はNATをオンにするのか。ページリンクが貼れなかった、、ティーをtにする
https://www.reddiティー.com/r/networking/comments/5mbzob/fortigate_sslvpn_tunnel_nat_question/