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だけではエラーになってしまったのでコマンドで追加設定。
最終的なコンフィグ