OpenWrt 22.03 23.05 FW4 ニチバン対策 全自動構成 旧版

# 移行しました
https://qiita.com/site_u/items/50dbc6ae1e3c29c50726

https://qiita.com/site_u/items/8c850f7dbbe3d2af90f6

# はじめに
::: 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
### 対応回線
- 対応回線 : OCNバーチャルコネクト / V6プラス
- 対応ファームウェア : [22.03 以降 ※FW4 (firewall4)](https://openwrt.org/docs/guide-user/firewall/misc/nftables#nftables_in_openwrt_2203_and_later)
- スクリプト : []( / [map-e](https://github.com/site-u2023/map-e) / [all-ports-set](https://github.com/site-u2023/all-ports-set)
- パッケージ : [node](https://openwrt.org/packages/pkgdata/node) @ JavaScriptをデバイスで動かす
- 必要フラッシュ容量 : 12 MiB 以上 @ node
- 動作確認 : 23.05.0-rc2 @ WXR-5950AX12
- 設定詳細 : [参考サイト](https://qiita.com/site_u/items/588fb126eecb3b956a40#%E5%8F%82%E8%80%83%E3%82%B5%E3%82%A4%E3%83%88%E6%84%9F%E8%AC%9Drelaxed)
:::

::: note
### [手動構成](https://qiita.com/site_u/items/ea6f7d1165ab5d2a5a93)
:::

# ニチバン対策
:::note alert
- 現状確認
  - [ニチバンベンチ](https://www.nichiban.co.jp/)
- 以下排他利用
  - map書換
      [高度なカスタム構成](https://qiita.com/site_u/items/b743f96311d6bf7d66a7#%E9%AB%98%E5%BA%A6%E3%81%AA%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E6%A7%8B%E6%88%90) (OCNバーチャルコネクト専用)
  - スクリプト設置
  [MAP-E のポートセット全部使う](https://qiita.com/site_u/items/b743f96311d6bf7d66a7#map-e-%E3%81%AE%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BB%E3%83%83%E3%83%88%E5%85%A8%E9%83%A8%E4%BD%BF%E3%81%86)
:::

::: note warn
### 使い方
- powershell > `Win`+`X` > `a` > `はい`
- コードブロック(黒の枠)内記述は右上`Copied!`でpowershellにコピー&ペースト
- `#`(コメントアウト)のままコピー&ペースト
:::

## [高度なカスタム構成](https://github.com/fakemanhk/openwrt-jp-ipoe/blob/main/README.md#advanced-custom-configuration) ※要ONU直結
::: note
### 自動設定
- [map-e](https://github.com/site-u2023/map-e/blob/main/map.sh.new)
```ruby
# package
opkg update
opkg install node

# config-softwire
wget --no-check-certificate -O /lib/netifd/proto/map-e.js https://raw.githubusercontent.com/site-u2023/config-softwire/main/map-e.js

# map-e
cp /lib/netifd/proto/map.sh /lib/netifd/proto/map.sh.bak
wget --no-check-certificate -O /lib/netifd/proto/map.sh https://raw.githubusercontent.com/site-u2023/map-e/main/map.sh.new

# scripts
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 NET_IF6
network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
NODE_RET=$(node /lib/netifd/proto/map-e.js "$NET_ADDR6")
eval "$NODE_RET"

# map
sed -i -e "s/ip4prefixlen=32/ip4prefixlen=${option_ip4prefixlen}/g" /lib/netifd/proto/map.sh

reboot

```

### レストア
- map
```ruby
cp /lib/netifd/proto/map.sh.bak /lib/netifd/proto/map.sh
rm /lib/netifd/proto/map.sh.bak

```
:::

## [MAP-E のポートセット全部使う](https://zenn.dev/wistnki/articles/784d33e3c8a17c#%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BB%E3%83%83%E3%83%88%E3%82%92%E5%85%A8%E9%83%A8%E4%BD%BF%E3%81%86%E8%A8%AD%E5%AE%9A) ※ 要ONU直結
::: note
### スクリプト選択
- [all-ports-set](https://github.com/site-u2023/all-ports-set)
```ruby:map使う版
wget --no-check-certificate -O /etc/mape_setup_rule.sh https://raw.githubusercontent.com/site-u2023/all-ports-set/main/use_mape_setup_rule.sh
chmod +x /etc/mape_setup_rule.sh

```

```ruby:map使わない版
wget --no-check-certificate -O /etc/mape_setup_rule.sh https://raw.githubusercontent.com/site-u2023/all-ports-set/main/dont_mape_setup_rule.sh
chmod +x /etc/mape_setup_rule.sh

```
### OCNバーチャルコネクト設定@自動設定
```ruby
# package
opkg update
opkg install node

# config-softwire
wget --no-check-certificate -O /lib/netifd/proto/map-e.js https://raw.githubusercontent.com/site-u2023/config-softwire/main/map-e.js

# scripts
. /lib/functions/network.sh
network_flush_cache
network_find_wan NET_IF
network_find_wan6 NET_IF6
network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
network_get_device NET_L3D "${NET_IF}"
NODE_RET=$(node /lib/netifd/proto/map-e.js "$NET_ADDR6")
eval "$NODE_RET"

sed -i -e "s/IPv4_IPv4/IPv4=${IPv4}/g" /etc/mape_setup_rule.sh
sed -i -e "s/TUNDEV_TUNDEV/TUNDEV=${NET_L3D}/g" /etc/mape_setup_rule.sh
sed -i -e "s/PSID_PSID/PSID=${PSID}/g" /etc/mape_setup_rule.sh
sed -i -e "s/PREFIX_PREFIX/PREFIX=1024/g" /etc/mape_setup_rule.sh
sed -i -e "s/BLOCKS_BLOCKS/BLOCKS=63/g" /etc/mape_setup_rule.sh

cp /lib/netifd/proto/map.sh.bak /lib/netifd/proto/map.sh
sed -i -e "s/ip4prefixlen=32/ip4prefixlen=${option_ip4prefixlen}/g" /lib/netifd/proto/map.sh
sed -i -e "s/mtu:-1280/mtu:-1460/g" /lib/netifd/proto/map.sh

cp /etc/rc.local /etc/rc.local.bak
sed -i -e "s/exit 0//g" /etc/rc.local
echo "/etc/mape_setup_rule.sh" >> /etc/rc.local 
echo "exit 0" >> /etc/rc.local

reboot

```

### V6プラス & IPv6オプション設定@自動設定
```ruby
# package
opkg update
opkg install node

# config-softwire
wget --no-check-certificate -O /lib/netifd/proto/map-e.js https://raw.githubusercontent.com/site-u2023/config-softwire/main/map-e.js

# scripts
. /lib/functions/network.sh
network_flush_cache
network_find_wan NET_IF
network_find_wan6 NET_IF6
network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
network_get_device NET_L3D "${NET_IF}"
NODE_RET=$(node /lib/netifd/proto/map-e.js "$NET_ADDR6")
eval "$NODE_RET"

sed -i -e "s/IPv4_IPv4/IPv4=${IPv4}/g" /etc/mape_setup_rule.sh
sed -i -e "s/TUNDEV_TUNDEV/TUNDEV=${NET_L3D}/g" /etc/mape_setup_rule.sh
sed -i -e "s/PSID_PSID/PSID=${PSID}/g" /etc/mape_setup_rule.sh
sed -i -e "s/PREFIX_PREFIX/PREFIX=4096/g" /etc/mape_setup_rule.sh
sed -i -e "s/BLOCKS_BLOCKS/BLOCKS=15/g" /etc/mape_setup_rule.sh

cp /lib/netifd/proto/map.sh.bak /lib/netifd/proto/map.sh
sed -i -e "s/ip4prefixlen=32/ip4prefixlen=${option_ip4prefixlen}/g" /lib/netifd/proto/map.sh
sed -i -e "s/mtu:-1280/mtu:-1460/g" /lib/netifd/proto/map.sh

cp /etc/rc.local /etc/rc.local.bak
sed -i -e "s/exit 0//g" /etc/rc.local
echo "/etc/mape_setup_rule.sh" >> /etc/rc.local 
echo "exit 0" >> /etc/rc.local

reboot

```

### レストア
- all-ports-set
- map
```ruby
# all-ports-set
sed -i -e "s/^.*mape_setup_rule.sh//g" /etc/rc.local
rm /etc/mape_setup_rule.sh

# map
cp /lib/netifd/proto/map.sh.bak /lib/netifd/proto/map.sh
rm /lib/netifd/proto/map.sh.bak

```
:::

## 確認
::: note
### ポート動作確認
- [ニチバンベンチ](https://www.nichiban.co.jp/)

### 利用可能ポート番号確認
```ruby
. /lib/functions/network.sh
network_flush_cache
network_find_wan6 NET_IF6
network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"
NODE_RET=$(node /lib/netifd/proto/map-e.js "${NET_ADDR6}")
eval "$NODE_RET"
echo "${PORT}"

```
:::

# リムーブ
:::note warn
### リムーブ
- node
- config-softwire
```ruby
# node
opkg remove node

# config-softwire
rm /lib/netifd/proto/map-e.js

```
:::

# トラブルシュート
:::note warn

```ruby
# prefix確認
echo ${PREFIX}

```

```ruby
# node確認
ls /usr/lib/opkg/info/node*

```

:::
# 参考サイト(感謝:relaxed:)
- [Debianでルーターを構築](https://qiita.com/m-m-n/items/0fa1bc14ed6584295adc)
- [openwrt-jp-ipoe](https://github.com/fakemanhk/openwrt-jp-ipoe)
- [MAP-E のポートセット全部使う](https://zenn.dev/wistnki/articles/784d33e3c8a17c)