OpenWrt IPv6

# はじめに

::: 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 alert
### 既知の問題
- [ルーターまたはファイアウォールは、コンピュータに送信される ICMPv6 メッセージをフィルタリングしています](https://www.reddit.com/r/PFSENSE/comments/133t8k0/your_router_or_firewall_is_filtering_icmpv6/?rdt=57907)

:::

## [ルーターアドバタイズメントとDHCPv6](https://openwrt.org/docs/guide-user/network/ipv6/configuration#router_advertisement_dhcpv6)
::: note
### [SLAAC と DHCPv6](https://openwrt.org/docs/guide-user/network/ipv6/configuration#slaac_and_dhcpv6)
```bash
uci set dhcp.lan.ra='server'
uci set dhcp.lan.dhcpv6='server'
uci add_list dhcp.lan.ra_flags='managed-config'
uci add_list dhcp.lan.ra_flags='other-config'
uci commit 
/etc/init.d/dnsmasq restart
/etc/init.d/odhcpd restart

```

### [SLAAC](https://openwrt.org/docs/guide-user/network/ipv6/configuration#slaac_only)
[Windows 10、Chrome OS、Android クライアントにはいくつかの問題があり、これらのデバイスにはリンクローカル IPv6 アドレスのみが割り当てられます。](https://github.com/fakemanhk/openwrt-jp-ipoe/discussions/2)
```bash
uci set dhcp.lan.ra='server'
uci set dhcp.lan.dhcpv6='disabled'
uci set dhcp.lan.ra_flags='none'
uci commit 
/etc/init.d/dnsmasq restart
/etc/init.d/odhcpd restart

```
:::

# [IPv6 の追加機能](https://openwrt.org/docs/guide-user/network/ipv6/ipv6_extras)
::: note
### [デフォルトでIPv6を使用する](https://openwrt.org/docs/guide-user/network/ipv6/ipv6_extras#using_ipv6_by_default)
```bash
NET_ULA="$(uci get network.globals.ula_prefix)"
uci set network.globals.ula_prefix="d${NET_ULA:1}"
uci commit network
/etc/init.d/network restart

```
:::

::: note
### [DHCPによるIPv6デフォルトルートの提供](https://openwrt.org/docs/guide-user/base-system/dhcp_configuration#providing_ipv6_default_route_with_dhcp)
GUA プレフィックスが欠落しているIPv6デフォルト ルート をアナウンスします。
```bash
uci set dhcp.lan.ra_default="1"
uci commit dhcp
/etc/init.d/odhcpd restart

```
:::

::: note
### [ランダムIPv6アドレス](https://openwrt.org/docs/guide-user/network/ipv6/configuration#protocol_static_ipv6)
```bash
uci set network.lan.ip6ifaceid='random'
uci commit network
/etc/init.d/network reload

```
:::

::: note
### ネットワークデバイスのIPv6利用
LANポート確認
```bash
uci show network

```
参考
```bash
# lan1
uci add network device
uci set network.@device[-1].name='lan1'
uci set network.@device[-1].mtu='1500'
uci set network.@device[-1].ipv6='1'
uci set network.@device[-1].mtu6='1500'
# lan2
uci add network device
uci set network.@device[-1].name='lan2'
uci set network.@device[-1].mtu='1500'
uci set network.@device[-1].ipv6='1'
uci set network.@device[-1].mtu6='1500'
# lan3
uci add network device
uci set network.@device[-1].name='lan3'
uci set network.@device[-1].mtu='1500'
uci set network.@device[-1].ipv6='1'
uci set network.@device[-1].mtu6='1500'
# lan4
uci add network device
uci set network.@device[-1].name='lan4'
uci set network.@device[-1].mtu='1500'
uci set network.@device[-1].ipv6='1'
uci set network.@device[-1].mtu6='1500'
# set
uci commit network
/etc/init.d/network reload

```

:::