Policy Routing

50-cloud-init.yaml

network:
  ethernets:
    enp1s0:
      accept-ra: no
      dhcp4: no
      dhcp6: no
      addresses:
        - 2409:cafe:dead:feed::801/64
      gateway6: 2409:cafe:dead:feed::fffe

    enp2s0:
      accept-ra: no
      addresses:
        - 192.168.1.1/24
        - fd00:cafe::1/64
      routing-policy:
        - from: 192.168.1.0/128
          table: 136
      routes:
        - to: 219.117.250.208/29
          via: 192.168.1.254
          on-link: true
        - to: 192.168.16.0/24
          via: 192.168.1.254
          on-link: true
        - to: 3.4.5.6/32
          via: 192.168.1.254
          table: 136
          on-link: true
      nameservers:
        addresses:
          - fd00:cafe::fe
          - 192.168.1.1
        search:
          - ntools.net

  tunnels:
    ip6tnl1:
      mode: ipip6
      remote: 2404:8e00::feed:100
      local: 2409:cafe:dead:feed::801
      routes:
        - to: 0.0.0.0/0
          scope: link
  version: 2

if setting dhcp range 192.168.1.129, rule is available “table: 136”.

CPU と ネットワーク速度

passmark と ネットワーク速度

少し考えただけでも単に10ギガビットのNICを使っただけでは処理速度が追いつくか? という疑問を出てきます。
そこでNFSでファイルの転送速度をチェックしました。

  1. NFS上のファイルを転送(1ギガビットNIC使用)
    • CPUの違い
      Num CPU Speed Passmark
      1 Celeron N2840 820Mbps 1010
      2 Celeron 3215U 930Mps 1657
      3 Celeron J1900 930Mps 1868
      4 Pentium 3805U 930Mps 1998
      5 Pentium J4205 930Mps 2395
        Pentium J4205 2NIC 1880Mps 2395
      No.1 specmark 1010ではCPU占有率が100%となって処理がネットワーク速度に追いつかない
    • NIC 2枚
      NICを2つで、bonding デバイス(ラウンドロビン)でほぼ、2倍のパフォーマンスが得られる。
  2. 考察
    単純にNICの高速化を行ってもCPU処理速度が不足すれば当然、NICの固有速度が得られるとは限らないし、アプリケーションによってCPU負荷が変化するので単純に早いインターフェースを使用しても高速化はできない。
    このデータはX86_64アーキテクチャーで同一メーカーのCPUを比較しているので単純な passmark値を使用した。
    裏を返せば 一般的な市販ルーター(¥20,000以下)のCPUでは866MBPSですら活かしきれていないのでないかと想像できる。

PPPoE 固定IP ルーター

Ubuntu 18.04 サーバー で PPPoE Unnumbered (固定IP) ルーター 作成

IPoE DS-Lite ルーターと同様、ファンレス PC*1に、Ubuntu 18.04.3 Server版を構築しスループットの向上を目指します。結果から言えば実測で690Mbpsが計測されました。IPv4 では混雑が激しいので潜在的には十分以上だといえるでしょう。
*1 J1900 4GB Mem mSATA 32GB (メモリー2GB ストレージが8GB以上あれば大丈夫です。)

ネットワーク図(赤部分が今回のルーター

ルーター設定手順

  1. IPアドレスの設定
  2. PPPoEの設定
  3. sysctl ufwの設定
  4. キャッシュ DNS(unbound)のインストール
  5. systemctl xxxx ppp.service で制御できるようにする。

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 は以下の様になります。

  1. 設定を表示 – ネットワークインターフェースが3個以上必要なのでちょっと、凝って4つのインターフェースを使い、ボンディング設定(クリックして表示)をしてみました。もちろん自分のIPに応じて変更して下さい。ボンディングのモードについては、拙作の英語版サイト https://www2.ntools.net/bonding/ に書いています。
  2. 設定を表示 – ボンディングなしの通常の設定例はPPPoE以外のネットワーク設定ということを用意に理解できるものになっています。

 


PPPoEの設定

コマンドラインで “pppoeconf” を実行すれば、このような画面が出て聞いてきますので全て答えていきます。DNSは自前のサーバーがなければプロバイダーの物を自動で設定するように出来ますが、これはできますよというものです。pppoeconfは、Ubuntu 16.04では完璧なのですが、Ubuntu 18.04 のデフォルトで使用するのは問題があります。

それでは必要なパッケージ、ppp をインストールしてください。

# apt install ppp


編集するファイルは以下の通りで、クリックしてそれぞれ、表示された指示通りに編集して下さい。

    1. /etc/ppp/chap-secrets
    2. /etc/ppp/pap-secrets
    3. /etc/ppp/peers/dsl-provider
    4. /etc/ppp/ip-up 関連

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 を以下のように作成します。

[Unit]
BindsTo=sys-subsystem-net-devices-enp1s0.device
After=sys-subsystem-net-devices-enp1s0.device

[Service]
ExecStartPre=/sbin/ip link set mtu 1508 dev enp1s0
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-reloadsystemctl enable ppp、次にsystemctl start pppを実行します。ip address show を実行して ppp0などが表示されてプロバイダーから指定されたIPになっていることを確認してください。再起動も忘れずに!


最後に

これで作業は完了します。IPv6の作業はさほど難しくはないでしょう。スールプットはDS-Lite ルーターに比べて遜色はないと思いますが、速度計測サイトは下図の通りで全く問題なく一般的に販売されている物よりかなり良い物が出来ていると思います。IPoE接続ではNGNからIPv4に接続させる為、トンネリング経由になる為、一般的なプロバイダー接続になるには問題が多いと思われます。(OCNのIPoE固定IP接続では専用ルーターになり、自由なサーバーは難しいようで、高額です。)

CentOS 8 で ssh ポートを変更

Cent OS 8 は firewall-cmd , SeLinux など高度なセキュリティを持っているのですが、よくあるブログの解説では 停止させる。とかして問題を回避しています。
もちろんこれらの動作を止めることなく活用して ssh ポートを変更していきます。

まずはssh サーバーの設定ファイル /etc/ssh/sshd_config を編集します。

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
Port xxxx <--- ここに好みのポート番号を記述
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

もしこの状態で “sudo systemctl restart sshd.service” を実行すれば

● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset:
 enabled)
   Active: activating (auto-restart) (Result: exit-code) since Sat 2019-12-07 20
:37:23 EST; 33s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 3016 ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY (code=exited
, status=255)
 Main PID: 3016 (code=exited, status=255)

Dec 07 20:37:23 red systemd[1]: sshd.service: Failed with result 'exit-code'.
Dec 07 20:37:23 red systemd[1]: Failed to start OpenSSH server daemon.

こんな感じのエラーがでます。

ここで2つのことを実行します。

  1. ssh service の再定義
  2. selinuxを設定

Step1: /usr/lib/firewalld/services/ssh.xml を編集します。

<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="xxx"/>  <--- xxx を好みのポート番号に変更
</service>

Step 2: 以下のコマンドを実行

# semanage port -a -t ssh_port_t -p tcp xxxx  <--- xxx を好みのポート番号に変更

設定を確認して再起動すれば完了!!

Let’s Encryptで無料のSSL

Ubuntu にセットアップ

既にapache2 でサイトがUbuntu/Debian Apache2の標準的な設定で構築されていることが前提です。
Ubuntu 18.04 には 標準のリポジトリーでCertbotパッケージが用意されており非常に簡単にセットアップできます。
まずはパッケージをインストール

$ sudo apt install letsencrypt python-certbot-apache

続いてrewriteモジュールをroot権限で有効化します。(WordPressでも使用されています)

# a2enmod rewrite

このあとに証明書をインストールしていきます。インストールするホスト名を選択し質問に答えるだけで完了します。

# certbot run --apache --dialog

これが終わればApache2の再起動です。

# systemctl restart apache2.service

このコマンドでサーバー上の全てのサイトの証明書が更新されます。

# certbot renew --post-hook "systemctl restart apache2.service"

crontabの月単位の実行で、証明書の期限を自動的にアップデートできるようにしましょう。スクリプト名は letsencrypt とします。ファイルの内容は

#!/bin/sh

# update (renew) cert.
/usr/bin/certbot renew --post-hook "systemctl restart apache2.service" 

このシェルスクリプト、 letsencrypt を実行権限を付けて/etc/cron.monthly/ に置けば完成!!

# chmod +x letsencrypt
# mv letsencrypt /etc/cron.monthly/

新たなセキュリティ技術

新たなセキュリティ、NSMKの考え方

今の個人情報漏れの大半の原因は何でしょう? SSLを使ってない!?
暗号化は鍵ファイルがあれば、どんなに堅牢な物でも 暗号化していないのと同じです。
また、量子コンピュータなどが実現したら暗号化なんて意味がない!? 本当でしょうか?
量子コンピュータがあれば鍵ファイルを作るのが早いために意味がなくなるのです。
それらの欠点をすべてクリアできる技術を開発する構想とサンプルはできました。
上記だけではありません。SSLで通信していてもサーバー内部の暗号化はほとんど無く、
あっても簡単な鍵ファイルだけです。これでは情報漏れがあっても不思議ではないですよね!?
もちろんNSMK方式のアーキテクチャにはサーバー内部データの暗号化も含まれています。

この技術の延長上には下記のような応用が可能です。

  1. PCやUSBメモリーデバイスのファイルが盗まれてもデータファイルは見えない!
  2. SNSやメールサーバー いつまでも「手を変えしなを変え」続く攻撃 入り口で遮断
  3. 国などの単位でアクセスを規制。サーバーの入り口で遮断するのでサーバ負荷が、激減
  4. パスワードによる保護が不要に!!
  5. データベースの保存されている情報を持ち逃げできない。
  6. 不正操作による盗難でも解読出来ない。
  7. 誰にも解読されないクラウドデータサービス。
  8. セキュアーシェル ssh の更なる安全化。
  9. 人事管理の外部漏洩が実質、不可能に。
  10. その他応用は数多。

もし、これに興味がある方が居れば一緒にやっていきませんか!?
技術者はもちろん、営業面での仲間、出資関係などなど 多方面の方の参加が得られれば最高です!!
基本的なソフトは75%完了しています。

開発者を中心とした会社組織の詳細は御連絡頂い方々に、お伝えします。
まずはコメント欄から連絡をお願いします。質問でも結構です。
希望されない限り、コメントは公開されません。

Ubuntu で DS-Lite ルーター

ファンレス PC Ubuntu 18.04 で超高速 DS-Lite(RFC6333) ルーター


これ実測です(^-^) 930Mbps 驚き!。

 

機器性能など

上記の画像の実際に使用した計測サイト は  https://fast.com/ja/ でこの数字は Intel Pentium 3805U 搭載の ファンレスPC に Ubuntu 18.04.3 上に DS-Lite 設定をしたルーターに有線接続したデスクトップPCでIPv6接続での最高数値です。LANにはクライアント機器10台以上やNASなどが接続されています。試験的に同時刻にMac Air i7、これだけをWiFi(866Mbps)に接続して計測した結果は、半分以下の 下り390Mbps – 上り330Mbps。やはり安めのWiFiルーターを通すと、この程度しか出ないようです。少し、NFSでの速度計測を利用してCPUによる速度の違いを実験しましたので暇があれば御覧ください。
IPv4ではトンネリング経由だけでなくIPv4網自身も混雑していますので過度な期待はしないで下さい。それでも speedtest.netで計測した値は下り793.92Mbps 上り 439.64MbpsとPPPoEと違いは歴然です。
ちなみに下記のネットワーク図のIPv4だけのPPPoEルーター (白い部分 Celeron J1900 4 LAN)で、300Mbps前後のスループットが出ています。 ルーターをはじめとしたネットワーク機器でかなりの性能差は出ます。実際にRaspberry PIにインストールされたものはcpu稼働率100%で30Mbpsのスループットだという記事がありました。しかし日本のブロガー達の 速度計測の2桁の値はRaspberry PI並のパワーのルーターを使用しているのでしょうか?

ルーター設定手順

  1. ZOOT NATIVEの申し込み
    ネットからの申込で最大2ヶ月無料で、途中で解約しても違約金などは一切ない。
    このようなプロバイダーはまれで最近はクレジットカードのみだとか制限だけしてユーザーだけにリスクを負わせる。という事は全くなくかなり好感がもてます!
    申し込みはこのリンクからも可能です。
  2. インターフェース設定 (Netplanかifupdown かを選択)
    ZOOT NATIVE の接続は NGN(NTT IPv6網)に接続してIPv6の場合は直接WANに繋がりますが、IPv4にはip4ip6(ipip6)トンネリングで繋がります。Ubuntu 18.04では標準となったnetplanですがリリース直後のイメージからインストールしてアップデートしていなくてnetplan 0.95未満ではipip6のサポートはありません。セキュリティー面からも必ずアップデートしてください。
    netplanによる方法  お勧め!
    ifupdownによる方法
  3. ufwの設定
  4. DNS(unbound)をインストール
  5. DHCP RAなどの設定

 

ネットワーク図


クリックで拡大
 今回、作成する機器はブルーのDS-Liteルーターです。

x86_64のルーターを使用する理由
一部のサイトでは速度があまり上がらないという話がありますが、実際に使用しているルーターのパフォーマンスだけでなくネットワーク設計によりかなり違います。特に¥40,000以下の安価なWiFiルーターの脆弱なMPU使用した機器の性能やそれに繋がれたスマートフォンの様な重いGUI機器ではもちろん数百MBpsの速度はでないことは明らかです。そのおかげでマンションタイプのギガネットでも500MBPS程度以上のパフォーマンスは出ていているので、ネット混雑にはなりにくいため、ある意味 助けられているのかもしれません。昨今、自分でサーバーも設定せずに何処ぞのブログサイトで技術云々を語っている多数の方々には理解不能かもしれませんが・・・
ちなみに瞬間最大速度ではなく多数のタスクを処理できないと安定して高速はできません。
実際、Unnumberで市販で¥10,000程度の無線LANルーターを使ってギガビットLANで接続された機器より100MBPSのFTTHで性能の良いルーターを使用した機器の方がより高速で安定したものになるでしょう。
ちなみにルーターを作成するのですから当然LANポート、ネットワークデバイスは2つ以上必要です。


Netplanを使ったIPアドレスとトンネリング

IPv6のアドレスとgateway(IPv6)

NTT IPv6網(NGN)からRAでIPアドレスが設定されます。ひかり電話ルーター(HGW)がある場合はIPv6パススルーに設定するか、ONUに直接接続します。スループットはONUに直接接続したほうが良いでしょう。
Ubuntu 18.04.3のインストールされたものにNGNを接続するして “ip -6 address show” コマンドを実行すれば次のように表示されます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2409:cafe:dead:feed:2e6:4cff:fe68:a27/64 scope global dynamic mngtmpaddr noprefixroute   <- これがIPv6 Wan側 IP
       valid_lft 2591986sec preferred_lft 604786sec
    inet6 fe80::2e6:4cff:fe68:a27/64 scope link 
       valid_lft forever preferred_lft forever
3: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::2e6:4cff:fe68:a26/64 scope link 
       valid_lft forever preferred_lft forever
この例の場合は 2409:cafe:dead:feed:2e6:4cff:fefe:cead がIPv6グローバルIPになります。もし 2409:cafe:dead:feed::1 のような判りやすいIPにしたければ traceroute6 google.com を実行してIPv6側のgatewayを調べて記述できます。

netplan yamlファイルの設定

ルーターを作成するにはUbuntuサーバー版が良いのでNetworkmanager を使わない時のサンプルです。
通常、/etc/netplan/50-cloud-init.yaml 編集します。

network:
  ethernets:
    enp1s0:
# RAで割当られたグローバルIP使用する場合は記述しない
      accept-ra: no

# RA割当られたグローバルIPを書く場合はこの2行だけでOK
      dhcp4: no
      dhcp6: no

# グローバルIPを固定化する場合(上記の様にgatewayを確認した上で記述)
      addresses:
        - 2409:cafe:dead:feed::801/64
      gateway6: 2409:cafe:dead:feed::fffe
# RA割当られたグローバルIPを書く場合は記述不要

# LAN 側
    enp2s0:
      accept-ra: no
      addresses:
        - 192.168.1.1/24
        - fd00:cafe::1/64
#if use static route
      routes:
        - to: 10.0.0.0/8
          via: 192.168.1.254
          on-link: true
        - to: 4.3.2.1/32
          via: 192.168.1.254
          on-link: true
       nameservers:
        addresses:
          - fd00:cafe::80a
          - 192.168.1.11
        search:
          - ntools.net

  tunnels:
    ip6tnl1:
      mode: ipip6
#NTT 東日本の場合
      remote: 2404:8e00::feed:100
#NTT 西日本の場合
      remote: 2404:8e01::feed:100
#上記どちらかを記述
#
# グローバルIPを記述
      local: 2409:cafe:dead:feed:2e6:4cff:fefe:cead
      routes:
        - to: 0.0.0.0/0
          scope: link
 version: 2

ifupdown での設定

この設定では netplan.io は使用しません。 新たにサーバー版 Ubuntu 18.04.3 をインストールした場合は ifupdown を apt install ifupdown でインストールする必要があり、systemd-networkd 等をdisable する必要があります。新規にインストールした場合はnetplanで行う事をお勧めします。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface for connecting to ONU
auto enp1s0
iface enp1s0 inet manual
auto enp2s0
iface enp2s0 inet static
  address 192.168.1.1
  network 192.168.1.0
  netmask 255.255.255.0
  broadcast 192.168.1.255
  dns-nameservers 192.168.1.1
  dns-search ntools.net

iface enp2s0 inet6 static
  address fd00:cafe::14   // Your specified
  netmask 64

#if use static route
post-up ip route add 192.168.11.0/24 via 192.168.1.254 dev enp2s0

 

netplanを使用する場合は不要です!

DS-Liteでのトンネル工事

/etc/rc.local に保存します。
NTTが東日本、西日本でREMOTEが異なるのでどちらかのコメント(#)を消してください。
また イーサーネットデバイスは enp1s0 をONUに接続されたデバイスに適時、変更して下さい。
この部分は本来、networkd の管轄で /etc/systemd/network/ 以下のファイルにデバイス、ネットワーク定義を書くことが出来るはずなのですが どうも ip4ip6 ipip6 mode のトンネリングサポートが無いようなのでシェルスクリプトで実現させました。

#!/bin/sh

#case NTT East 東日本
#REMOTE='2404:8e00::feed:100'
#case NTT West 西日本
#REMOTE='2404:8e01::feed:100'
NETDEV='enp1s0'

for i in $(seq 0 9); do
 LOCAL=`ip -6 addr show $NETDEV scope global |grep inet6 | awk '{print $2}' | awk '{sub("/.*", ""); print $0}'`
 if [ $LOCAL != '' ]; then
   break
 fi
 sleep 1
done

ip -6 tunnel add ip6tnl1 mode ip4ip6 remote $REMOTE local $LOCAL dev $NETDEV
ip link set dev ip6tnl1 up

# IPv4 routing
route delete default
route add default dev ip6tnl1

 

Unbound インストール

別途ネームサーバーがあれば不要ですが、DS-Liteではダイナミックに通知されるので設定するのがお勧め。

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: fd00:cafe::1
    interface: 2409:250::1fb
    access-control: 2409:250::/64 allow
    access-control: fd00:cafe::/64 allow
    access-control: 192.168.1.0/24 allow

 

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側からのアクセスをすべて許可(外部からは不可)

ufw allow from 192.168.1.0/24
ufw allow from fd00:cafe::1
ufw allow from 2409:250::/64

 

DHCP RAなどの設定

Ubuntu 18.04 パッケージでDHPCP サーバーの isc-dhcp-serverは、IPv4,IPv6双方に対応しており、設定も簡単で特に問題はない。ただし。IPV6のルーティング情報などはこれだけでは不十分でRAもLAN側に流すことが必要になるようでインストールは、DHCP IPv4用と IPv6向けRA割り振り用として radvd 双方をすることをお勧めする。

apt install isc-dhcp-server radvd

isc-dhcp-serverの設定

/etc/dhcp/dhcpd.conf の編集。最後に追加。このルーターの LAN側 IPは 192.168.1.1 fd00:cafe::1 に設定されるようにサンプルは書いています。

# A slightly different configuration for an internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.144 192.168.1.191;
  option domain-name-servers 192.168.1.1;
  option domain-name "your-domain";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 3600;
  max-lease-time 7200;
}

 

radvdの設定

/etc/radvd.conf の編集。

interface enp2s0 {
  AdvSendAdvert on;
  MinRtrAdvInterval 3;
  MaxRtrAdvInterval 10;
  AdvOtherConfigFlag on;

  prefix fd00:cafe::4000/64 {
    AdvOnLink on;
    AdvAutonomous on;
    AdvRouterAddr on;
  };
}

内容は、IPアドレスなどを使用環境に応じて変更して下さい。

/etc/sysctl.conf の編集

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1 # 33行目 コメントアウト
net.ipv6.conf.default.forwarding = 1 # 追加


###################################################################
# Additional settings - these settings can improve the network
# security of the host and prevent against some network attacks
# including spoofing attacks and man in the middle attacks through


最後に追加

###################################################################
# Protected links
#
# Protects against creating or following links under certain conditions
# Debian kernels have both set to 1 (restricted)
# See https://www.kernel.org/doc/Documentation/sysctl/fs.txt
#fs.protected_hardlinks=0
#fs.protected_symlinks=0
# ここから追加
# ipv6 RA
#net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.enp1s0.accept_ra = 2
net.ipv6.conf.enp1s0.accept_ra_pinfo = 1
net.ipv6.conf.enp1s0.autoconf = 1

 

使用感など

さすがに日本のネット環境は素晴らしいというのが感想で、実際に100Mbps を超える環境を使用できる国は少ない。海外生活が長い自身の感想がこれです! またモバイル環境などの瞬間最大速度ではなく、タスク配分もCiscoやヤマハの高額ルーター性能が手軽に作れるのが嬉しい限りです。
用途として固定IPはPPPoEが主流なので今後も使用していきたいのですが、ワークステーションやOSのダウンロードやアップデートの経路にIPoEのZOOT NATIVEの活用はなかなか小気味の良いものであり、WiFi アクセスポイントも構築していくのも良いかもしれません。
契約をしていなくて検証ができていませんが、IIJのブロードバンドサービス、IIJmioひかりや、IIJmio FiberAccess/NF でのIPoEでも使用できると思います。

Ubuntu 18.04.3 での問題点

Ubuntu 18.04 でIP環境設定用として netplan を使用されていますが、かなり不満が大きいと考えています。今の時点では ifupdown である程度はカバー出来ますがある部分では機能不全を起こしそうで、プロトコル追加機能を付けるべきだと思います。
問題点は 「PPPoE できない」、「ドキュメントがイマイチ」、「WiFi APの設定には Network Managerが必要」などの問題点はありますが まずまず、使えるものだと思っています。

最後にZOOT NATIVEの契約をすればONUにもれなくNGNに接続されて、これには全世界にIPv6では固定IPが ::/64 で・・・・!?