Proxmoxのネットワークいじってみた

## はじめに
Proxmox上にシンプルな好き放題できる検証用のネットワークを用意して使いたいなということで、pfSenseなどを使って試してみました。

（家のネットワークをいじるともし壊してしまったときに困るので、壊しても日常生活に影響を出さないようにしたかった）

## 今回やりたいこと
以下の画像のようにvmbr0に接続したVMでは家のネットワークの影響を受けてしまうので、影響が少なく、好き放題にできるネットワークを作る。

![Proxmox_ネットワーク構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/8936aa1e-0457-ac15-5bf5-2dcc3807a0d0.jpeg)


## 作り方
まず、ISOを[公式HP](https://www.pfsense.org/download/)からダウンロードする。

とくにこだわりがなければ、「AMD64 ISO IPMI/Virtual Machines」を選択するとISOがダウンロードでき、Proxmoxでも使いやすいと思います。

ダウンロードしたISOを使ってVMを作っていきます。

[公式HP](https://docs.netgate.com/pfsense/en/latest/hardware/minimum-requirements.html)には
- 64 ビット amd64 (x86-64) 互換 CPU
- 1GB以上のRAM
- 8 GB 以上のディスクドライブ (SSD、HDD など)
- 1 つ以上の互換性のあるネットワーク インターフェイス カード
- 初期インストール用の起動可能なUSBドライブまたは大容量光学ドライブ（DVDまたはBD）

となっているので、参考にしたらいいと思います。

自分は以下のように設定しました。
ネットデバイスは、1つ目にvmbr0のネットワークを、2つ目にvmbr1のネットワークを設定してます。
![スクリーンショット 2024-07-04 140346.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/7bdb1b10-b382-a549-60bf-b06edb74a05b.png)

実際のインストール手順は、http: //IPアドレス にアクセスして基本的にそのままでいいですが、WANの設定で以下の設定を無効にすることをお忘れなく。
![スクリーンショット 2024-07-06 015221.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/477ddc73-d806-0784-d85d-e1c96dead420.png)


<details><summary>vmbr0のデバイスから設定する場合</summary>



vmbr0つまりpfSense的にはWAN側からアクセスすることになるので、そのままではできません。そこで、Proxmoxのコンソールからシェル(8)で以下コマンドを実行することで、一時的にいろいろなフィルタリングを無効にできるので、最初はこれを実行して設定するようにしましょう。（vmbr1にVMおいてやっても何でもいいです。）
![スクリーンショット 2024-07-06 013557.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/958990e6-865d-95e4-6d9b-a6344b5ccf3e.png)

``` :一時的なフィルタリングの無効化
pfctl -d
```
``` :フィルタリングの有効化
pfctl -e
```

:::note warn
一時的にセキュリティが良くない状態になるので気を付けて作業してください。
:::

</details>



次に、vmbr0(WAN)側からpfSenseのGUIにアクセスできるようにファイアウォールを設定しましょう。
Firewall > Rules > WANでルールを追加してこんな感じに設定したらいいと思います。（ログとかお好きなようんしてください。）
![スクリーンショット 2024-07-06 005218.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/2845d8e4-55f6-3df0-2b66-af6dc17c81b2.png)

ファイアウォールを設定した後は、設定を反映するのをお忘れなく。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/a94c9e78-9aa2-bad3-a6f1-aa0066a2fb78.png)



DNSについてですが、DNSの解決をpfSenseのDNSリゾルバではなく、DNSフォワーダとするように設定を変更していきます。
まず、デフォルトで有効になっているDNSリゾルバを無効にします。

Service > DNS Resolver
![スクリーンショット 2024-07-06 005530.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/9d45a3ca-572e-2e6a-ffba-00ad271f8836.png)

次にDNSフォワーダを有効にします。
Service > DNS Forwarder
![スクリーンショット 2024-07-06 005831.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/570ccd00-4f2a-75d5-1061-9fc16b794d9a.png)


これで、vmbr1からインターネットとかいろいろつながるようになったと思います。
細かな設定は各環境に合わせて設定してください。



他にも、vmbr1からvmbr0のマシンにアクセスできないようにしたいときなどは、以下のようにファイアウォールを設定するといいと思います。（一例）
Firewall > Rules > LANでルールを追加
![スクリーンショット 2024-07-06 014656.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/53e05d76-661f-7925-c3d8-1418bffde650.png)




:::note warn
素人が書いています。ファイアウォールについては適切に設定してください。
:::

## Tailscaleとの併用について
で、実際にこのネットワークを作ったとしてSSHができなくなってしまいます。
それでは本末転倒なので解決していきたいと思います。
vmbr0とvmbr1の両方に接続したVMを用意して踏み台にしてもいいですが、今回は他の方法を紹介したいと思います。(このやり方はとても有名なのでGoogle先生に聞いてみてください。)

### 作り方
まずはvmbr1にVMを1台なんでもいいので適当に用意してください。

そして、[公式サイト](https://tailscale.com/kb/1019/subnets)にも書いてありますが、
```shell:IP転送を有効にする
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
```
そして、
```
sudo tailscale up --advertise-routes=192.168.0.0/24
```
といった感じで、vmbr1のネットワークを指定してあげます。

そして、Tailscaleのコンソールから
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/b89cc83c-7648-65be-96c3-168920460bb7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2631217/266cf59f-f7bf-0647-a588-8d57335e999a.png)
といった感じで、有効にしてください。そうすると、Tailscaleに接続されているデバイスから、vmbr1のVMを経由して、ネットワーク内のすべてのデバイスにアクセスできるようになります。

(この際、vmbr1のVMにアクセスしたときに接続元IPアドレスが用意したVMのものになることがあるので、設定やファイアウォールの設定ではお気を付けください。(Zabbixとか))


サブネットルーターとトラフィックリレーノードについての[公式サイト](https://tailscale.com/kb/1019/subnets)

## Cloudflareとの併用について
で、実際にこのネットワークを作ったとしてWEBサイトの公開ができなくなってしまいます。
そこで、Tailscaleの時と同じように、適当なVMにcloudflaredを設置してあげてください。
そうすると、普通に使えます。

## 複数ノードについて
複数ノードならどうするかは、あまり検証していないので、参考になりそうな記事を載せておきます。

https://pve.proxmox.com/pve-docs/chapter-pvesdn.html

https://qiita.com/negineri/items/4a49f8ae0c5ddcb5ed01

https://internet.watch.impress.co.jp/docs/column/shimizu/1585271.html

## QEMU-guest-agentについて
ProxmoxのコンソールからIPとか確認するために、ほしいですよね...
以下リンクに沿って設定してください。

https://forum.netgate.com/topic/162083/pfsense-vm-on-proxmox-qemu-agent-installation

## 参考にさせていただいた記事
- [ごった煮ブログ編集部](https://devblog.lac.co.jp/entry/20220413)