Yamaha RTX PBR UTMインラインルーテッド

・PBR/インラインルーテッド

PBR=宛先アドレス意外の条件を使って次ホップを決めること
インラインルーテッド=UTMがIPを持ちL3ホップとして経路上にはいること
(L2の場合トランスペアレントorブリッジインライン)

・例

LAN3がWAN、今回はLAN1-LAN2の間に設置。

ip route default gateway <LAN3> filter 101 102 111 112 113 114 115 116 gateway <UTM-LAN> keepalive 1 gateway <LAN3> weight 0

・前提

※gateway … filter N …
Nの条件に合うものものはこのgatewayを使えという意味。

ip route に並んだgatewayは指定がなければ分散する。weightは分散比率。
weight 0 = 他が使える限り使わない。
keepalive 1(監視定義の番号) = 生きている間だけつかえる。

ip route default … ルーティング判定のときだけ参照される。ルータがnext-hop を選ぶのは転送されるユニキャストに対してだけ。ブロードキャストはそもそもルータがセグメント外へ転送しない。

・設定

gateway <LAN3> filter 101 102 111-116
※①VPN系とUTM発だけ直WAN

gateway <UTM> keepalive 1
※②①に外れた”通常通信 全部”をUTMへ
生きている限り一致する(keepalive 1)

gateway <LAN3> weight 0
※③さらに残り全部(=fail-open)
keepaliveで失敗した最後

・フィルタ設定

構文は
ip filter <番号> <動作> <送信元> <宛先> <プロトコル>

※UTMのWAN脚が送信元 = 検査後の戻り
ip filter 101 pass <UTM-WAN> * * *

※UTMのLAN脚が送信元 = UTM自身の通信
(ほとんど存在しないはずなので保険)
ip filter 102 pass <UMT-LAN> * * *

※PPTP
ip filter 111 pass * * tcp 1723
ip filter 112 pass * * gre

※IKE(拠点間VPN)
ip filter 113 pass * * udp 500
ip filter 114 pass * * esp

※NAT-T(拠点間VPN)
ip filter 115 pass * * udp 4500

※L2TP
ip filter 116 pass * * udp 1701

※監視定義
ip keepalive 1 icmp-echo 10 5 UTM-LAN

※拠点間VPNはこのように直指定も必要
ip route <対向IPアドレス> gateway <ISP Default Gateway>
ip route <対向IPアドレス> gateway pp 1

OPNsense Intel NIC

チップ 速度 FreeBSDドライバ 評価・備考
i210 1G igb 最良。PCIe x1 でどのスロットにも挿さる。10年以上枯れている。互換品(10Gtek等)が新品2〜3千円でAmazonにあり、中身は本物のIntelチップ
i350 1G igb サーバ定番、流通量最大。2/4ポート。ただし PCIe x4 必須でスロットを選ぶ。偽物・コピー品が多いので Device ID (8086:1521) 要確認
i226-V 2.5G igc 2.5GbEなら第一候補。ミニPCのオンボードとして実績が積み上がった。ただし igc は igb ほど枯れておらず、1Gbps回線なら2.5G自体が不要
i211 1G igb i210の廉価版(IEEE1588/SR-IOV削除)。単体カードは実質存在せず、オンボード専用。ミニPCのスペック表で見かけたら「オンボードのi211」の意味
i219 1G em オンボード専用、単体購入不可。SFFのオンボードNICがこれ。動くが、一部リビジョンで不安定報告あり。管理用に留めるのが無難
82580 (i340-T4) 1G igb i350の前世代、4ポート。動作は問題ないが、i350との価格差が小さいので選ぶ理由が薄い
82574L (EXPI9301CT) 1G em 新品で買えるIntel純正の下限(4〜6千円)。2008年のチップだが em で枯れきっている。「中古が絶対に嫌」な場合の解
i225-V 2.5G igc i226の前世代。B2以降のリビジョンなら実用可
82576 (E1G42ET) 1G igb 2ポート、PCIe x4。古い。i350で足りる
i225-B 2.5G igc 初期版(B0/B1)に既知のリンク断・不安定バグ。避ける
82571 / 82575 1G em / igb 2006年前後。古すぎる。選ぶ理由なし
Realtek RTL8125 / 8125B 2.5G re 地雷。FreeBSD/OPNsenseで不安定・性能出ずの報告が定番。TP-Link、I-O DATA等の国内・量販ブランドの2.5GカードはほぼこれAmazonのレビューにも「Linux/BSDでは選ぶな」と書かれている
Realtek RTL8127 2.5G〜 re I-O DATA R-ETXG-PCIER等に搭載。より新しいが Realtek。同じく避ける

OPNsenseインストール

・インストール

今回は余っているノートにOPNsenseをインストールする。

インストールメディアはMacで作成のため、balenaEtcherを利用。
bz2ダウロードして作成する。

対象ノートはUSBメモリのブートを優先していなかったため、
起動時にF12などを押してUSBブートさせる。

ブートするとOPNsenseのライブ環境でのログインプロンプトがでるので、
お試しなら、
root / opnsenseでログインしてそのまま操作可能。
今回はインストールするので、
installer / opnsense
と入力する。

キーマップ:Japanese 106
UFS/ZFS:スペックに余裕があるのでZFS。
インストールディスク:USBメモリと間違えないようにする。

・NIC接続

> 8 > shell
もともとのNICと、USBNIC*2の3枚構成とするので、
dmesgs
でログを見ながらUSBNICを接続する。
uge1.x … at xxxという行しか表示されない場合NICとして認識されていない。
そのあとに複数行表示されていれば認識されている。

ifconfig | grep ue
ifconfig -l
usbconfig
などのコマンドでチェックする。NICのチップセットの相性がある。

・NIC割り当て(ドライバがあたって認識しただけではダメ)

> 1
> n (リンクアグリゲーションを今設定するかどうか)
> n (VLANを設定するかどうか) ※使えるインターフェースが一覧で表示される
> re0 (WAN側のNIC割り当て)
> ue0 (LAN側のNIC割り当て)
> 空白 (追加のインターフェースの割り当て)

・IPアドレス設定

> 2
> 1 (インターフェース選択)
> n (このインターフェースのIPv4をDHCPで自動取得するかどうか)
> xxx (IPv4アドレス)
> 24 (サブネット)
> n
Configure IPv6 address LAN interface via WAN tracking?
WAN側がISPからもらったIPv6プレフィックスを、LAN側に自動で振り分けるかどうか。
> n
Configure IPv6 address LAN interface via DHCP6?
IPv6のDHCPサーバーからアドレスをもらうかどうか。
> 空白 (IPv6アドレス)
> n (DHCPサーバ機能を有効にするか)
> n (WebGUIのプロトコルをhttpにするか)
> n (WegGUIの自己証明書を新しくするか)
> y (バインドやアクセス制限がリセットされ、このインターフェースから確実に入れる)

・WebGUI

アクセスできない場合、ファイアウォール無効にしてみる
> 8 > pfctl -d

Obsidian Execute Code Valutフォルダ rsyncコピー

 

構内電話システム(ひかり電話) メモ

・アナログ収容、IP収容
サービスとしてはどちらもIP電話サービスになる。
IP収容では、主装置、電話にIPアドレスが必要。
IPアドレスは、主装置は固定、電話はDHCPが一般的。
アナログ、IP収容は併用可能。

・IP収容の経路
電話 → 主装置 にSIP登録(主装置が内線xxは192.168.5.23と知る)
主装置 → HGW にSIP登録
HGW → NGN に登録(NGNがこの番号への着信はこのHGWと知る)
※HGWがない契約もある

・クラウド
クラウドPBXの場合、主装置(PBX)がクラウドになる。

・ライセンス
ライセンスは主装置に発生する。
アナログ収容はVoIPライセンス不要。

・コードレス
コードレス基地局(DECT)を主装置のポートにぶら下げる。
その他、IP-DECT、Wi-Fi SIP子機などある。

・主装置、PBX
ニュアンスとして小規模PBX=主装置と呼ぶ。

・QoS
IP収容は別VLANにするのが定石。
アナログ収容は必要性がない。
IP収容はスイッチのQoSが主役。
インターネットVoIPのときはルータのQoSが主役。

・電話機種類
収容と端末種は完全にイコールじゃないないけど大体一致
アナログ電話:RJ11*1
デジタル多機能電話:専用モジュラ*1
IP多機能電話:RJ45*2

・IP多機能電話
何もしないと2ポートのスイッチとして動作、
通常はVLANで音声とデータを分けPoEとして利用することが多い。

・他社電話サービス
CPE(ONU)までの違いで、構成は同じ。

・SIP機能
網終端機能(SIPクライアント)、呼制御機能(SIPサーバー)の2つが必要で、網終端機能は事業者と加入者側の境界をどこに置くかということ。呼制御はネットワーク内であればクラウドにも置ける。

RTX*2+UbuntuでテストPPPoEネットワーク環境構築

SSH

・インストール

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable –now ssh
sudo systemctl status ssh

・IPアドレス確認

ip a

・接続(接続する側のPC)

ssh ユーザー@ipアドレス

・シャットダウン

sudo shutdown -h now

・テキストベース起動にする場合

sudo systemctl set-default multi-user.target

※戻す場合
sudo systemctl set-default graphical.target

NIC/VLAN

・NetworkManager
デスクトップ版デフォルト
nmcli/nmtui(対話)で管理

・systemd-networkd
軽量デーモンベース

両者はNetplanで抽象化されている。
NetplanのYAMLで書く。

・どちらが有効か
systemctl is-active NetworkManager
systemctl is-active systemd-networkd

・NICの物理情報取得

ネットワークデバイス一覧
lshw -c network -short

IPアドレス一覧
ip -br addr

・VLAN設定(GUI)

nm-connection-editor
(システム>高度なネットワーク設定)
を起動。

VLANを設定する仮想LAN側をlab-trunkとしてIPv4/6を無効。
新規作成>VLANから作成し、以下の通り設定IPv4/6は無効。

・確認

nmcli -f NAME,DEVICE,AUTOCONNECT connection show | grep -E ‘enp0s31f6\.(12|13)’

・Netplan YAML確認方法

ls -la /etc/netplan
ここで読み取れること。
01-network-manager-all.yaml
があるので、NetworkManagerをrendererに使っている。
90-NM-*.yamlはNetworkManagerが自動生成したファイルなので
手動で編集しないほうがいい。

・nmcli

接続確認
nmcli connection show
nmcli connection show ‘有線接続 1’ | grep ipv4

IPフォワーディング

sudo sysctl -w net.ipv4.ip_forward=1
※このマシンが、自分宛てではないIPパケットを受け取ったときに、別のインターフェースへ転送するかどうかを決めるカーネルパラメータ

・永続化する場合
echo ‘net.ipv4.ip_forward=1’ | sudo tee /etc/sysctl.d/99-lab.conf

PPPoEサーバー化

・インストール
sudo apt update
sudo apt install -y pppoe ppp

・サーバーオプション
sudo vim /etc/ppp/pppoe-server-options

require-chap
接続してくるクライアントに対して、CHAP認証を必須にする。サーバーがクライアントを認証する際の方式指定。

nodefaultroute
サーバのルーティングテーブルにデフォルトルートを追加させない。

noproxyarp
プロキシARPエントリを追加させない。

lcp-echo-interval 10 / lcp-echo-failure 3
各クライアント接続に対して10秒ごとに生存確認を送り、3回失敗(約30秒無応答)でその接続を切断する。切れたクライアントのセッションを掃除するための設定。

mru 1454 / mtu 1454
クライアントとの通信で使うパケットサイズを1454に指定。

・認証設定
sudo vim /etc/ppp/chap-secrets

・手動起動の場合
sudo pppoe-server -I enp0s31f6.13 -L 100.64.0.1 -R 203.0.113.2 -N 1 -C isp-a

-I enp0s31f6.13(待ち受けるインターフェース)
-L 100.64.0.1(サーバーアドレス)
-R 203.0.113.2(クライアントアドレス)
-N 1(同時最大セッション)
-C isp-a(サーバー識別名)

・PPPoEサーバー起動確認
pgrep -a pppoe-server

PPPoEサーバー永続化

sudo vim /etc/systemd/system/pppoe-server@.service

sudo mkdir -p /etc/pppoe-lab
sudo vim /etc/pppoe-lab/isp-a.conf

sudo vim /etc/pppoe-lab/isp-b.conf

sudo systemctl daemon-reload
sudo systemctl enable –now pppoe-server@isp-a.service
sudo systemctl enable –now pppoe-server@isp-b.service

PPPoEリアルタイム確認

sudo journalctl -f | grep -Ei ‘pppd|pppoe’
sudo tcpdump -ni enp0s31f6 -e
sudo tcpdump -ni enp0s31f6.13 -e pppoed

WAN側NICにNAT

・インターフェース一覧
ip -br addr

・出口(Realtek)でマスカレード

sudo iptables -t nat -A POSTROUTING -o enp2s0 -j MASQUERADE

sudo iptables -A FORWARD -i ppp+ -o enp2s0 -j ACCEPT

sudo iptables -A FORWARD -i enp2s0 -o ppp+ -m conntrack –ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -t mangle -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu

・永続化
sudo apt install -y iptables-persistent
sudo netfilter-persistent save

・戻るルート
sudo ip route add 192.168.13.0/24 dev ppp1
sudo ip route add 192.168.12.0/24 dev ppp0

・永続化
sudo vim /etc/ppp/ip-up.d/lab-routes

sudo chmod +x /etc/ppp/ip-up.d/lab-routes

DNS

・Ubuntu

printf ‘ms-dns 8.8.8.8\nms-dns 1.1.1.1\n’ | sudo tee -a /etc/ppp/pppoe-server-options
sudo systemctl restart pppoe-server@isp-a pppoe-server@isp-b

RTX拠点間VPN(GUI)

ダッシュボード>かんたん設定>IPsec
・自分側と接続先の両方とも固定の … 持っている
・接続先のホスト名またはIPアドレス:相手側のIPアドレス
・認証鍵:abc (本番では複雑にする)
・認証アルゴリズム:HMAC-SHA
・暗号アルゴリズム:3DES-CBC

下にいくほど強い。選ぶときは暗号と認証を同じゾーンで揃えることが多い。
HMAC-SHA256ならAES(AES256)-CBC、HMAC-SHAなら3DES-CBC。
相手拠点に承認、暗号アルゴリズム両方合わせる。

暗号、承認アルゴリズム

・承認アルゴリズム
✕ HMAC-MD5
△ HMAC-SHA
◯ HMAC-SHA256

・暗号アルゴリズム
✕ DES-CBC
△ 3DES-CBC
◯ AES-CBC
◯ AES256-CBC

IKE、ESP、SA

IPsecの構成はIKE+ESP+SA

1.IKEがハンドシェイク(PSK認証)
IKE SA作成
IKE SAの中で、ESP SA作成
※PSK認証は事前共有キーを送信しないハッシュを照合
※事前共有キー=Pre-Shared Key

2.ESP SAを使い、ESPパケット生成
※ESPフォーマットのIPパケット
※暗号、認証アルゴリズムはここに効く

3.ESPパケットを転送(転送は実装)

※IKE、ESP、SAここまで

経路に関する設定>接続先のLAN側アドレス:192.168.12.0
ここはip route 192.168.12.0/24 gateway tunnel Nの設定に相当する。

拠点間VPNはGUIだけではエラーになってしまったのでコマンドで追加設定。
最終的なコンフィグ

 

UbuntuにDocker/RustDeskをインストール

・SSH有効化

sudo apt update
sudo apt install -y openssh-server
sudo systemctl enable –now ssh

・接続

ssh xxx@192.168.xxx.xxx

・Dockerインストール

wget https://github.com/rustdesk/rustdesk-server/releases/download/1.1.14/rustdesk-server-linux-amd64.zip

unzip rustdesk-server-linux-amd64.zip

sudo mkdir -p /opt/rustdesk

sudo cp amd64/hbbs amd64/hbbr amd64/rustdesk-utils /opt/rustdesk/

sudo chmod +x /opt/rustdesk/hbbs /opt/rustdesk/hbbr

sudo mkdir -p /opt/rustdesk/data

sudo systemctl daemon-reload

sudo systemctl enable –now rustdesk-hbbr

sudo systemctl enable –now rustdesk-hbbs

cat /opt/rustdesk/data/id_ed25519.pub
控える。

・クライアントインストール

wget https://github.com/rustdesk/rustdesk/releases/download/1.4.7/rustdesk-1.4.7-x86_64.deb

sudo apt install -y ./rustdesk-1.4.7-x86_64.deb

・接続する側のクライアントの設定切替

複数接続先の場合、
/Users/xxx/Library/Preferences/com.carriez.RustDesk
RustDesk2.toml
をコピーして切り替える。

 

すでに資格情報を登録してあるホストに対して、バッチでhosts、資格情報に追加し、別ユーザーでアクセスする

 

Macからシリアル(USB-RJ45)でRTXに接続する方法

ターミナル

ls /dev/cu.*
screen /dev/cu.usbserial-xxx

RTXコンソール

ユーザー名、パスワードを入力
(コンソール起動時、表示されないことがある)

文字化けする場合
console character ascii

つづくを止める
console lines infinity

設定初期化
administrator
cold start

screen切断
ctrl-A-K

ターミナル

screen一覧
screen -ls

screen削除
screen -S xxx -X quit

screen復帰
screen -r

Rclone初期設定

Client ID、Client Secret取得

Google

https://console.cloud.google.com/
上部メニュー>プロジェクト作成>任意の名前>プロジェクトを選択する。
左メニュー>APIとサービス>ライブラリ>Google Drive API>有効にする
左メニュー>OAuth同意画面>作成
アプリ名、ユーザーサポートメールを入力、外部を選択して作成する
対象>Add users>Gmailを入力して保存する
左メニュー>APIとサービス>認証情報>認証情報を作成>OAuthクライアントID>デスクトップアプリを選択
左メニュー>APIとサービス>OAuth同意画面>対象>アプリを公開

・プロジェクトを削除する場合
上部メニュー>プロジェクトを選択する。
左メニュー>IAMと管理>設定>シャットダウン

Dropbox

https://www.dropbox.com/developers/apps
Create app > Scoped access > Full Dropbox > 任意の名前 > Create app
App key、App secretをメモする
Permissionsタブで、
files.metadata.read
files.metadata.write
files.content.read
files.content.write
にチェックし、Submit

Rclone準備

brew install rclone
rclone config

通常設定

n / New Remote
dropbox, gdrive / Enter name for new remote
drive / Google Drive / Option Storage

client_id, client_secret入力
1 / Option scope
空欄 / service_account_file
n / Edit advaned config
y / Use Web browser to automatically …
n / Configure this as a Shared Drive (Team Drive)?
y / Yes this is OK

※設定完了したら、
/Users/xxx/.config/rclone/rclone.conf
をバックアップしておく。

暗号化用設定

rclone config
n / New Remote
gcrypt / Enter name for new remote
crypt / Option Storage

gdrive:encrypted / Option remote
※gdriveのサブフォルダencryptedに暗号化データが保存
standard / Option filename_encryption
true / Option directory_name_encryption
y / Option password
パスワード入力
n / Option password2
n / Edit advanced config

Rcloneコマンド

・ファイル一覧
rclone ls gcrypt:backup

・サーバー側のファイル数確認
rclone size dropbox: –tpslimit 10 -v

・不要な設定を削除
rclone config
d
gdrive

・ローカルに保存する
rclone copy dropbox: /Volumes/xxx/Dropbox -P

・クラウドにアップロード
rclone sync /Volumes/xxx/Dropbox gcrypt:Dropbox -P –tpslimit 10
※Googleドライブのencryptedの中に作成される。

一覧を見る(暗号化されていない状態)
rclone lsf gcrypt:Dropbox

GUIファイラー
rclone rcd –rc-web-gui