NTT 光クロス GX-100NE IPoE構成 Android12以降 接続安定させる事が出来ました。※備忘録

背景:既に1年以上NTT光クロス+@Niftyで運用していました。
 当初の構成
 ONU⇒GX-100NE⇒10GHUB ⇒ LAN + WiFI Router

 Ubuntu、Mac、Winは問題ないが・・・・
 AndroidからのWifi接続がぶちぶち切れたり、ネットが遅かったりといやな症状が出ていました。iPadはたまに切れる程度

やったこと、RTX1300を間にいれて、DMZやルーティングでごにょごにょしようと思ったら、GX-100NEにはDMZなし・・・

YAMAHAの下記の設定でいけそうだとわかり、ついてにIPv4固定IP契約し設定
https://www.rtpro.yamaha.co.jp/RT/docs/ocn_map_e/index.html

固定費総額 約1万円/月

新しい構成
 ONU⇒GX-100NE⇒RTX1300⇒10GHUB ⇒ LAN + WiFI Router

 GX-100NEは、初期化してデフォルトのまま ※パスワードだけ変更

 RTX1300
 使用する設定

スクリプト config.txt の下記を編集
lan1の設定とDHCP範囲を、社内LANに合わせ書き換える。 ※”.100.”で検索
下記の項目を、@Niftyの情報を書き換えてください。
SERVER_URL = “アドレス解決システムURL”
USERNAME = “アドレス解決システム認証用ID”
PASSWORD = “アドレス解決システム認証用パスワード”
HOSTNAME = “”

※下記スクリプトを、USBシリアル 9600bpsで接続しTeraTermなどで流し込む
luaファイルもスクリプトで生成される。
TeraTermの1行送る毎に入れるWaitは100mS
コピペする環境により、改行が途中で入るとえらーになるので、一旦テキストエディタに貼って成形してください。上のYAMAHA公式からダウンロードしても問題ないです。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#【経路設定】
ip route default gateway tunnel 1

#【LAN設定】
ip lan1 address 192.168.100.1/24

#【NGNとの接続設定】(※)
ngn type lan2 ntt
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 source address selection rule lifetime
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan1 dhcp service server
ipv6 lan2 dhcp service client ir=on

#【MAP-Eの設定】
tunnel select 1
tunnel encapsulation map-e
tunnel map-e type ocn
ip tunnel mtu 1460
ip tunnel nat descriptor 1000
tunnel enable 1
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 map-e
# NAT/IPマスカレードの設定は必要に応じて設定を追加してください

#【DHCPの設定】
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24

#【DNSの設定】
dns server dhcp lan2

#【IPv4フィルター関連設定】
tunnel select 1
ip tunnel secure filter in 200030 200039
ip tunnel secure filter out 200099 dynamic 200080 200082 200083 200084 200098 200099
tunnel enable 1
ip filter 200030 pass * 192.168.100.0/24 icmp * *
ip filter 200039 reject *
ip filter 200099 pass * * * * *
ip filter dynamic 200080 * * ftp
ip filter dynamic 200082 * * www
ip filter dynamic 200083 * * smtp
ip filter dynamic 200084 * * pop3
ip filter dynamic 200098 * * tcp
ip filter dynamic 200099 * * udp

#【IPv6フィルター関連設定】
ipv6 lan2 secure filter in 200030 200031 200038 200039
ipv6 lan2 secure filter out 200099 dynamic 200080 200081 200082 200083 200084 200098 200099
ipv6 filter 200030 pass * * icmp6 * *
ipv6 filter 200031 pass * * 4
ipv6 filter 200038 pass * * udp * 546
ipv6 filter 200039 reject *
ipv6 filter 200099 pass * * * * *
ipv6 filter dynamic 200080 * * ftp
ipv6 filter dynamic 200081 * * domain
ipv6 filter dynamic 200082 * * www
ipv6 filter dynamic 200083 * * smtp
ipv6 filter dynamic 200084 * * pop3
ipv6 filter dynamic 200098 * * tcp
ipv6 filter dynamic 200099 * * udp

#【IPv6アドレスの通知設定】
ipv6 lan1 prefix change log on
lan linkup send-wait-time lan2 5
schedule at 1 startup * lua emfs:/ocn_address_notification.lua
embedded file ocn_address_notification.lua <<EOF
–[[

  ■ OCNバーチャルコネクト IPv6アドレス通知用 サンプルスクリプト
Ver. 1.01

                           2022.04.04 ヤマハ株式会社

本スクリプトは、OCNバーチャルコネクト の 固定IP1/8/16契約において、
指定したインターフェースに新しいIPv6プレフィックスが付与されたとき、
  アドレス解決サーバーにIPv6アドレスの更新通知を行うLuaスクリプトのサンプルです。

  新しいIPv6プレフィックスが付与されたことは、ルーターのSYSLOGを監視し、以下
  のログが出力された場合に検知しています。

  (IPv6アドレスがLAN1に設定されている場合の例)
   Add IPv6 prefix xxxx:xxxx:xxxx:xxxx::/xx (Lifetime: xxxxxx) via LAN1 by DHCPv6
   Add IPv6 prefix xxxx:xxxx:xxxx:xxxx::/xx (Lifetime: xxxxxx) via LAN1 by RA

  以下のコマンドが設定されていないと、上記ログは出力されないため、
  必ず設定するようにしてください。

   ipv6 lan1 prefix change log on

  [注意事項]
  ・本スクリプトは、schedule atコマンドでルーターの起動時に実行されるようにし
   てください。
  ・スクリプト中の「設定値」の値は、ご使用の環境に応じて変更した上でご使用く
ださい。

[更新履歴]
  2021.04.01 Ver.1.00 初版作成
  2022.04.04 Ver.1.01 HTTPリクエストを実行前に2秒待機する処理を追加
             リナンバリング時などにIPv6アドレス生成処理を待機するため

]]

—————————————-
— 設定値 —
—————————————-
— アドレス解決システムのURL
SERVER_URL = “アドレス解決システムURL”

— ユーザー名
USERNAME = “アドレス解決システム認証用ID”

— パスワード
PASSWORD = “アドレス解決システム認証用パスワード”

— アドレス解決用ホスト名(省略時は自動設定、接続に問題がある場合に設定する)
HOSTNAME = “”

— IPv6アドレスを設定するインターフェース名
IPv6_IF = “LAN1”

— IPv6プレフィックスが追加されたときのSYSLOGパターン
LOG_PTN1 = “Add%s+IPv6%s+prefix.+%(Lifetime%:%s+%d+%)%s+via%s+” .. IPv6_IF .. “%s+by”

— リンクアップしたときのSYSLOGパターン
LOG_PTN2 = “LAN2: link up”
— WAN に LAN3 をご利用の場合
— LOG_PTN2 = “LAN3: link up”

— リンクアップしたときのSYSLOGパターン
LOG_PTN3 = “%[OCN MAP%-E%] hostname=”

— 上記3つを同時に検出するパターン
PTN = /(Add IPv6 prefix|LAN2: link up|hostname=)/
— WAN に LAN3 をご利用の場合
— PTN = /(Add IPv6 prefix|LAN3: link up|hostname=)/

— SYSLOGのレベル
LOG_LEVEL = “info”

— SYSLOGのプレフィックス
LOG_PFX = “[OCN MAP-E]”

—————————————-
— SYSLOGを出力する関数 —
—————————————-
function logger(msg)
rt.syslog(LOG_LEVEL, string.format(“%s %s”, LOG_PFX, msg))
end

—————————————-
— リトライ間隔を計算する関数 —
—————————————-
function retry_timer(t, c)
return (t * 2 * c)
end

—————————————-
— メインルーチン —
—————————————-
local rtn, str, count, log, sleep_time, hostname, tmp
local req_t = {}
local res_t

——————–
— 初期化

math.randomseed(os.time())

— HTTPリクエストの準備
req_t.method = “GET”

req_t.auth_type = “basic”
req_t.auth_name = USERNAME
req_t.auth_pass = PASSWORD

——————–
— 監視

if string.len(HOSTNAME) == 0 then
rtn, str = rt.syslogwatch(LOG_PTN3, 1, 30)
if (rtn > 0) then
tmp, hostname = string.split(str[1], “=”)
end
else
hostname = HOSTNAME
rt.sleep(5)
end

while true do

count = 1

while hostname do
req_t.url = string.format(“%s?hostname=%s”, SERVER_URL, hostname)

— HTTPリクエストを実行
rt.sleep(2)
res_t = rt.httprequest(req_t)

logger(“アドレス解決サーバーへの通知を実行しました。”)

— リクエストに成功
if res_t.rtn1 then

— アップデートの結果をログに出力する
if res_t.code == 200 then
if string.match(res_t.body, “good”) or string.match(res_t.body, “nochg”) or string.match(res_t.body, “nohost”) then
log = string.format(“アドレス解決サーバーへの通知に成功しました。(code=%d)”, res_t.code)
logger(log)
— ループを抜け、SYSLOGの監視を再開する
break
end
end

log = string.format(“アドレス解決サーバーへの通知に失敗しました。(code=%d)”, res_t.code)
logger(log)

else
logger(“アドレス解決サーバーから応答がありません。”)

end

— 再送時間設定
sleep_time = retry_timer(60, count)
if (sleep_time > 3600) then
sleep_time = 3600
else
count = count * 2
end
rt.sleep(sleep_time)

end

— 定期的に通知する(12-24時間後)
sleep_time = math.random(43200, 86400)

rtn, str = rt.syslogwatch(PTN, 1, sleep_time)

if (rtn > 0) and string.match(str[1], LOG_PTN3) then
tmp, hostname = string.split(str[1], “=”)
elseif (rtn > 0) and string.match(str[1], LOG_PTN2) then
rt.sleep(5)
end

end
EOF

~~~~~~~~~~
ここまで、以下 YAMAHA のメモ
(※) LAN1の接続機器がIPv6を使用せずIPv4通信のみを行う場合、以下は設定しないでください。
・ipv6 prefix 1 ra-prefix@lan2::/64
・ipv6 lan1 rtadv send 1 o_flag=on
・ipv6 lan1 dhcp service server

以上です。

au光 BL1500HMとYAMAHA RTX830、VPN L2TP IPsec DMZ 環境のconfig.txt

意外と情報がないので、参考まで
BL1500HMなど、VPN未搭載のルーターとYAMAHA RTXルーターの2重ルーター環境のサンプルです。

■環境
2026.2.22 
BL1500HM 192.168.0.1 DMZ 192.168.0.2
⇒ auは滅多にグローバルIPが変わらないのでIPアドレス変更通知アプリでメール通知しています。
RTX830 RTX1300 (LAN2)192.168.0.2 – (LAN1)192.158.250.252
   RTX830 Rev.15.02.31 (Fri Jul 5 10:40:25 2024)
Gateway 192.168.250.1

■設定
MSCHAPv2
SharedKey 59635963
user 1 aaaa bbbb
user 2 cccc dddd

■config.txt
user attribute connection=serial,telnet,remote,ssh,sftp,http gui-page=dashboard,lan-map,config login-timer=172800
ip route default gateway dhcp lan2
ip keepalive 1 icmp-echo 10 5 dhcp lan2
ip lan1 address 192.168.250.1/24
ip lan1 proxyarp on
ip lan2 address 192.168.0.2/24
ip lan2 secure filter in 101003 101020 101021 101022 101023 101024 101025 10103
0 101032 101100 101101 101102 101103
ip lan2 secure filter out 101013 101020 101021 101022 101023 101024 101025 1010
26 101027 101099 dynamic 101080 101081 101082 101083 101084 101085 101098 10109
9
ip lan2 nat descriptor 200
pp select anonymous
pp bind tunnel1
pp auth request mschap-v2
pp auth username aaaa bbbb
pp auth username cccc dddd
ppp ipcp ipaddress on
ppp ipcp msext on
ppp ccp type none
ip pp remote address pool 192.168.250.11-192.168.250.29
ip pp mtu 1258
pp enable anonymous
tunnel select 1
tunnel encapsulation l2tp
ipsec tunnel 1
ipsec sa policy 1 1 esp aes-cbc sha-hmac
ipsec ike keepalive use 1 off
ipsec ike nat-traversal 1 on
ipsec ike pre-shared-key 1 text 59635963
ipsec ike remote address 1 any
l2tp tunnel disconnect time off
ip tunnel tcp mss limit auto
tunnel enable 1
ip filter 101000 reject 10.0.0.0/8 * * * *
ip filter 101001 reject 172.16.0.0/12 * * * *
ip filter 101002 reject 192.168.0.0/16 * * * *
ip filter 101003 reject 192.168.250.0/24 * * * *
ip filter 101010 reject * 10.0.0.0/8 * * *
ip filter 101011 reject * 172.16.0.0/12 * * *
ip filter 101012 reject * 192.168.0.0/16 * * *
ip filter 101013 reject * 192.168.250.0/24 * * *
ip filter 101020 reject * * udp,tcp 135 *
ip filter 101021 reject * * udp,tcp * 135
ip filter 101022 reject * * udp,tcp netbios_ns-netbios_ssn *
ip filter 101023 reject * * udp,tcp * netbios_ns-netbios_ssn
ip filter 101024 reject * * udp,tcp 445 *
ip filter 101025 reject * * udp,tcp * 445
ip filter 101026 restrict * * tcpfin * www,21,nntp
ip filter 101027 restrict * * tcprst * www,21,nntp
ip filter 101030 pass * 192.168.250.0/24 icmp * *
ip filter 101031 pass * 192.168.250.0/24 established * *
ip filter 101032 pass * 192.168.250.0/24 tcp * ident
ip filter 101033 pass * 192.168.250.0/24 tcp ftpdata *
ip filter 101034 pass * 192.168.250.0/24 tcp,udp * domain
ip filter 101035 pass * 192.168.250.0/24 udp domain *
ip filter 101036 pass * 192.168.250.0/24 udp * ntp
ip filter 101037 pass * 192.168.250.0/24 udp ntp *
ip filter 101099 pass * * * * *
ip filter 101100 pass * 192.168.250.1 udp * 500
ip filter 101101 pass * 192.168.250.1 esp
ip filter 101102 pass * 192.168.250.1 udp * 4500
ip filter 101103 pass * 192.168.250.1 udp * 1701
ip filter 500000 restrict * * * * *
ip filter dynamic 101080 * * ftp
ip filter dynamic 101081 * * domain
ip filter dynamic 101082 * * www
ip filter dynamic 101083 * * smtp
ip filter dynamic 101084 * * pop3
ip filter dynamic 101085 * * submission
ip filter dynamic 101098 * * tcp
ip filter dynamic 101099 * * udp
nat descriptor type 200 masquerade
nat descriptor address outer 200 primary
nat descriptor masquerade static 200 1 192.168.250.1 udp 500
nat descriptor masquerade static 200 2 192.168.250.1 esp
nat descriptor masquerade static 200 3 192.168.250.1 udp 4500
nat descriptor masquerade static 200 4 192.168.250.1 udp 1701
ipsec auto refresh on
ipsec transport 1 1 udp 1701
telnetd host lan
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.250.2-192.168.250.2/24
dns host lan1
dns server dhcp lan2
dns server select 500201 dhcp lan2 any .
dns private address spoof on
l2tp service on
httpd host lan1
statistics traffic on

[FYI]ファイル共有&送信は、VPS上のNextCloudで毎月1000円以下で実現できます。

弊社では、ファイル共有は、さくらインターネットのVPS上にNextCloudを構築し、顧客とのファイル共有に使用しています。
Ubuntu 22.04+NGINX+NextCloudの構成で、2~3時間もあればセットアップできます。
セットアップ後は、さくらインターネットのVPS代 807円/月 で、40Gのファイル共有が出来ます。
公開期間や社員(アカウント)毎の割り当てサイズも自由です。

弊社のNextCloudです。NextCloudのマニュアルをダウンロード出来るようにしてあります。
http://49.212.185.161/s/wtpPEFaCM7xasZ2

[FYI]Raspbian(Raspberry PI OS)のLinux Kernelとバージョン一覧メモ

旧バージョンは下記からDownlodできます。


32Bit Raspberry PI OS
https://downloads.raspberrypi.org/raspios_armhf/
64Bit Raspberry PI OS
https://downloads.raspberrypi.org/raspios_arm64/
32Bit Old Raspbian
https://downloads.raspberrypi.org/raspbian/images

Linux 6.6Raspberry Pi OS/2024-03-12~
Linux 6.1Raspberry Pi OS/2023-03-18~ Raspberry Pi OS/202
Linux 5.15Raspberry Pi OS/2022-04-04~Raspberry Pi OS/2023-02
Linux 5.10Raspberry Pi OS/2021-03-04~Raspberry Pi OS/2022-01
Linux 5.4Raspberry Pi OS/2020-08-20~Raspberry Pi OS/2021-01
Linux 4.19Raspbian/2019-06-20~Raspberry Pi OS/2020-02-14

独自RISC-V64ビット+1次キャッシュ IPコア互換性試験シミュレーション 全Pass

弊社独自開発のRISC-V64に、1次キャッシュ対応が完了しました。

AMD XILINX Zynq上で、動作させて10/4-5のMakerFairTokyo @ 東京ビックサイトにて展示します。

当日は、なるべく安価なFPGA上で動作させ、デモ展示を行う予定です。

PL領域にビットストリームを書込み、MPのARMから制御します。

Raspberry PI CM5 IO BoardにNVMe SSD

Raspberry PIのSMBファイルサーバはかなり使えるので、RPi4+USB3.0 SSDから
RPi CM5の IO BoardにSSD搭載できるので、こちらを立ち上げ時に嵌ったので、
備忘録投稿です。

結果からいうと、NVMeの互換性で、コントローラによってLinkDownのエラーになります。

OK SAMSUNG SSD980 MZ-V8V1T0  1T

NG Western Digital WD BLUE SN550 WDS500G2B0C  500G

ヒートシンクと冷却FAN取り付けるだけで、ファイルサーバとしてはかなり安定して動作します。

同時に、armのバイナリBuildサーバとしても使用しています。

今回は、奮発して16GDRAM+64GB eMMCにしました。

CM5用IOボード

Linux sudo コマンドに重大な脆弱性

Linux sudo 脆弱性対策 

★共用Linuxやサーバは必ず実施してください。最新でなければ、ほとんどのLinuxは対象外のようです。 sudo バージョン確認は実施した方がいいです。

一般ユーザーがrootを取れてしまいます。

# 現在のsudoバージョンを確認

sudo –version
Sudo version 1.8.29
Sudoers policy plugin version 1.8.29
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.29

★sudo 1.9.14 で入ったので、1.9.14以前のバージョンでは対応は不要です。

1.9.14以降は下記の処理が必要です。

# パッケージ管理システムを更新

# Ubuntu/Debian系

sudo apt update && sudo apt upgrade sudo

# RHEL/CentOS系

sudo yum update sudo

# または

sudo dnf update sudo