OpenWrt Windows Cloudflare WARP & WireGuard

# はじめに
::: note
### 初心者対応構成
- スクリプトでの自動設定
- UCIとLuCi及びWinSCPにて比較しながら作業がおススメ
:::

::: note
### [PowerShell](https://learn.microsoft.com/ja-jp/powershell/scripting/what-is-windows-powershell?view=powershell-7.4)で[SSHアクセス](https://openwrt.org/docs/guide-quick-start/sshadministration)

- [PowerShellの開始](https://learn.microsoft.com/ja-jp/powershell/scripting/windows-powershell/starting-windows-powershell?view=powershell-7.4) (キー入力)：`Win`+`x` > `a` > `はい`
※Windows7以降標準搭載

```sh
ssh root@192.168.1.1
```

<details><summary>ssh root@192.168.1.1のショートカット作成（デスクトップ）</summary>

```powershell:powershell
$DESKTOP = ([Environment]::GetFolderPath("Desktop") + "\192.168.1.1.lnk")
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$DESKTOP")
$Shortcut.TargetPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$Shortcut.Arguments = '-windowstyle hidden -ExecutionPolicy RemoteSigned "Start-Process ssh root@192.168.1.1"'
$Shortcut.IconLocation = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe,0"
$Shortcut.WorkingDirectory = "."
$Shortcut.Save()

```

- `強制的に貼り付け`
- `yes`

---

</details>

<details><summary>SSHログイン出来ない場合:exclamation:</summary>

known_hostsクリア
- `C:\Users\yourusername\.ssh\known_hosts` ※Windows隠しファイル
```powershell:powershell
Clear-Content .ssh\known_hosts -Force

```
---
OpenSSHのインストール
※Windows 10 Fall Creators Update(1709)以降標準搭載
- 機能の確認
```powershell:powershell
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

```
- 機能のインストール
```powershell:powershell
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

```
---

</details>

:::

:::note note
前提条件
- 参考ファームウェア：22.03
- 参考デバイス：WXR-5950AX12 / WSR-6000AX8 
- 参考OS：Windows11 Intel CPU

:::

# [Cloudflare WARP を使用して DPI (ディープ パケット インスペクション) をバイパスする方法](https://github.com/hillz2/openwrt_cloudflare_warp)
::: note
### Windows11の設定
wgcf バイナリ リリースをダウンロード
- [wgcf](https://github.com/ViRb3/wgcf)
  - [wgcf バイナリ リリース](https://github.com/fscarmen/warp/find/main)
  [wgcf_2.2.18_windows_386.exe](https://github.com/fscarmen/warp/raw/main/wgcf/wgcf_2.2.18_windows_386.exe)

- `wgcf_2.2.18_windows_386.exe`を以下にリネーム
```bash:リネーム
wgcf.exe

```
- `wgcf.exe`を以下のフォルダに格納
`C:\Windows\System32`

以下をWindowsのファイル名を指定して実行に入力
- `powershell start-process cmd`
- `OK`
```bash:コマンドプロンプト
C:\Windows\System32\wgcf.exe register

```bash:コマンドプロンプト
wgcf update

```
```bash:コマンドプロンプト
wgcf status

```
```bash:コマンドプロンプト
wgcf trace

```
```bash:コマンドプロンプト
"C:\Windows\SysWOW64\wgcf-profile.conf"

```
- メモ帳等で開く
- wgcf-profile.conf
`Cloudflare.private_key`
`public_key`

- Windowsの上記に生成されたconfから２つのkeyを以下に入力

設定値
```bash
PRIVATEKEY='********'
PUBLICKEY='********'

```
設定
```bash
opkg update
opkg install luci-proto-wireguard
# network backup
cp /etc/config/network /etc/config/network.cloudflare.bak
# script
NET_IF="lan"
. /lib/functions/network.sh
network_flush_cache
network_get_ipaddr NET_ADDR "${NET_IF}"
# delete
uci -q delete dhcp.lan.dhcp_option
uci -q delete dhcp.lan.dns
# interface
uci set network.Cloudflare=interface
uci set network.Cloudflare.proto='wireguard'
uci set network.Cloudflare.private_key=${PRIVATEKEY}
uci set network.Cloudflare.mtu='1280'
uci add_list network.Cloudflare.addresses='172.16.0.2/32' #任意
uci add_list network.Cloudflare.addresses='2606:4700:110:876a:4734:8b50:27b8:203b/128' # 任意
uci add_list network.Cloudflare.dns='1.1.1.1'
uci add_list network.Cloudflare.dns='1.0.0.1'
uci add_list network.Cloudflare.dns='2606:4700:4700::1111'
uci add_list network.Cloudflare.dns='2606:4700:4700::1001'
# 
uci set network.wireguard_Cloudflare=wireguard_Cloudflare
uci set network.wireguard_Cloudflare.public_key=${PUBLICKEY}
uci set network.wireguard_Cloudflare.endpoint_host='engage.cloudflareclient.com'
uci set network.wireguard_Cloudflare.endpoint_port='2408'
uci set network.wireguard_Cloudflare.route_allowed_ips='1'
uci add_list network.wireguard_Cloudflare.allowed_ips='0.0.0.0/0'
uci add_list network.wireguard_Cloudflare.allowed_ips='::/0'
#
uci set network.route_wireguard=route
uci set network.route_wireguard.interface='Cloudflare'
uci set network.route_wireguard.target='0.0.0.0/0'
uci set network.route_wireguard.gateway=${NET_ADDR}
uci set network.route_wireguard.metric='1024'
# FW
ZOON_NO='1'
uci add_list firewall.@zone[${ZOON_NO}].network='Cloudflare'
# set 
uci commit
# restart
/etc/init.d/network restart

```
[確認](https://1.1.1.1/help)
![1.1.1.1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3412833/c1cc89c4-7950-81e7-b4f8-3ecc14782c58.png)

OCNバーチャルコネクト、V6プラス、IPV6オプションの場合
```bash
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 NET_IF6
network_get_device NET_L3D6 "${NET_IF6}"
# WAN
WAN6RA='wan6ra'
WANMAP='wanmap' # OCNバーチャルコネクトのみ
uci set network.Cloudflare.mtu='1420'
# WAN
uci set network.wan=interface
uci set network.wan.device=${NET_L3D6}
uci set network.wan.proto='dhcp'
uci set network.wan.auto='1'
# wan6ra
uci set network.${WAN6RA}.auto='0'
# wanmap
uci set network.${WANMAP}.auto='0' # OCNバーチャルコネクトのみ
# FW
ZOON_NO='1'
uci add_list firewall.@zone[${ZOON_NO}].network='wan'
# set
uci commit
# restart
/etc/init.d/network restart

```
:::

# レストア
:::note warn
### レストア
- network
```bash
# network
cp /etc/config/network.cloudflare.bak /etc/config/network
rm /etc/config/network.cloudflare.bak
# restart
/etc/init.d/network restart

```
:::

#  WARPとWireGuard windows用
::: note
Installationからダウンロードしインストール
- [Installation](https://www.wireguard.com/install/)
:::

::: note
`"C:\Windows\SysWOW64\wgcf-profile.conf"`

- Windowsの以下に生成されたwgcf-profile.conf.dpapiに上記の内容をコピー
`"C:\Program Files\WireGuard\Data\Configurations\wgcf-profile.conf.dpapi"`

おまけ
- [1.1.1.1](https://one.one.one.one/)
  - [Cloudflare WARP](https://developers.cloudflare.com/warp-client/get-started/)
- [Cloudflare for Teams](https://developers.cloudflare.com/cloudflare-one/identity/devices/)
  - [0ドル/ユーザー最大50人まで](https://www.cloudflare.com/ja-jp/plans/zero-trust-services/)
    - [Cloudflareを使ってみる](https://dash.cloudflare.com/sign-up)

確認
- [Is BGP safe yet? No.](https://isbgpsafeyet.com/)
:::