Access from '18.97.14.86'
You are in US.
It is 19:25 JST now.
Ubuntu 20.04, 22.04 サーバー で PPPoE Unnumbered (固定IP) ルーター 作成
IPoE DS-Lite ルーターと同様、ファンレス PC*1に、Ubuntu 22.04 Server版を構築しスループットの向上を目指します。結果から言えば実測で754.16Mbpsが計測されました。IPv4 では混雑が激しいので潜在的には十分以上だといえるでしょう。
*1 J4125 4GB Mem mSATA 32GB (メモリー4GB ストレージが8GB以上あれば大丈夫です。)
ネットワーク図(赤部分が今回のルーター
ルーター設定手順
IP 設定
ネットワークのIP設定を確認します。
unnumbered(固定 8IP): 200.100.50.0/29 LAN: 192.168.1.0/24
インターフェース enp1s0: emu に接続 enp2s0: 200.100.50.1 enp2s0: 192.168.1.1
/etc/netplan/50-cloud-init.yaml は以下の様になります。
- bondingあり
設定を表示 – ネットワークインターフェースが3個以上必要なのでちょっと、凝って4つのインターフェースを使い、ボンディング設定(クリックして表示)をしてみました。もちろん自分のIPに応じて変更して下さい。ボンディングのモードについては、拙作の英語版サイト https://ntools.org/bonding/ に書いています。 - 通常の設定
設定を表示 – ボンディングなしの通常の設定例はPPPoE以外のネットワーク設定ということを用意に理解できるものになっています。Ubuntu 22.04 では gateway6 gateway4 はWarning が出ます。routes: で指定しましょう。
PPPoEの設定
コマンドラインで “pppoeconf” を実行すれば、このような画面が出て聞いてきますので全て答えていきます。DNSは自前のサーバーがなければプロバイダーの物を自動で設定するように出来ますが、これはできますよというものです。pppoeconfは、Ubuntu 16.04では完璧なのですが、Ubuntu 18.04 のデフォルトで使用するのは問題があります。
それでは必要なパッケージ、ppp pppoe をインストールし pppd。
# apt install ppp pppoe
# systemctl enable pppd-dns.service
編集するファイルは以下の通りで、クリックしてそれぞれ、表示された指示通りに編集して下さい。
-
- /etc/ppp/chap-secrets
- /etc/ppp/pap-secrets
- /etc/ppp/peers/dsl-provider
- /etc/ppp/ip-up 関連
- systemctl enable pppd-dns.service を実行
ufw の設定
ufw 設定と言っても中身はiptables の設定で、Masquarade でLANとWANとの接続を行ったり、サービスを開放します。
forwarding 設定
/etc/sysctl.conf のエディト。28行目のコメントを解除。
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1 ↓ net.ipv4.ip_forward=1
/etc/default/ufw のエディト。19行目を編集。
# Set the default forward policy to ACCEPT, DROP or REJECT. Please note that # if you change this you will most likely want to adjust your rules DEFAULT_FORWARD_POLICY="Drop" ↓ DEFAULT_FORWARD_POLICY="ACCEPT"
/etc/ufw/before.rules のエディト。はじめにMasquaradeを記述
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # Masquarade ここから *nat :POSTROUTING ACCEPT [0:0] :PREROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE COMMIT # don't delete the 'COMMIT' line or these rules won't be processed # ここまで追加 # Don't delete these required lines, otherwise there will be errors *filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-not-local - [0:0]
以下のコマンドを実行してLAN側からのアクセスをすべて許可(外部からは不可)
ここで許可するのは、このルーターに対するものだけです。 WAN 側に接続されたサーバーのポートなどの許可をする必要はありません。サーバーアクセス制限はそれぞれのサーバーで行います。
# ufw enable
# ufw allow from 192.168.1.0/24 # ufw allow from 200.100.50.0/29
ufw enable 実行し、有効化するには再起動が必要です。この時点で poff dsl-provider 実行し、再起動した後に ppp0 が接続された事を確認してください。勿論、enp2s0 に接続されたサーバーなどからインターネット接続されたことも確認できるでしょう。
Unbound インストール
別途ネームサーバーがあれば不要です。インストールは簡単に出来きて手順は以下の通りです。
$ sudo apt install unbound
unbound の設定ファイルは /etc/unbound/unbound.conf.d/unbound-local.conf で、編集は好みのエディターで以下の様なものがサンプルになります。設定は interface: に自分のIPアドレスをIPv4、IPv6 それぞれ設定すればOKです。
また、アクセスを許可する ネットアドレスを access-control: で設定します。下記のサンプルは、allow すなわち許可範囲で deny 禁止も可能です。Unboundに関しては日本Unboundユーザー会に詳しく解説されています。
server: interface: 127.0.0.1 interface: 192.168.1.1 interface: 200.100.50.1 access-control: 200.100.50.0/29 allow access-control: 192.168.1.0/24 allow
ppp.service の登録
エディターで /etc/systemd/system/ppp.service を以下のように作成します。意味については man systemd-service 参照
[Unit] BindsTo=sys-subsystem-net-devices-enp1s0.device After=sys-subsystem-net-devices-enp1s0.device [Service] ExecStartPre=/sbin/ip link set up dev enp1s0 ExecStart=/usr/sbin/pppd call dsl-provider Type=forking SuccessExitStatus=5 RestartSec=3s PIDFile=/run/ppp0.pid [Install] WantedBy=sys-subsystem-net-devices-enp1s0.device
この中のenp1s0はONUに接続するネットワークインターフェースです。インターフェース名は使用するものを記述してください。
編集終了後、以下のコマンドを実行します。
# systemctl daemon-reload # systemctl enable ppp.service # systemctl start ppp.service
下記のコマンドを実行して ppp0などが表示されてプロバイダーから指定されたIPになっていることを確認してください。再起動も忘れずに!
# ip address show