openSUSE Leap15.2 でルータを作ってみた

openSUSE 15.2 でルータ(らしきもの)を作ってみました。

openSUSE Leap15.2 でルータを作ってみた_a0056607_13060411.jpg

そんなに資材がある訳ではないので、 SUSE Linux Enteprise (SLE15) で動いている KVM 仮想環境に、仮想ブリッジと仮想クライアント(openSUSE 15)を作り、仮想化された内部ルータ(openSUSE 15)で、仮想別セグメントのクライアントから、構内ネットワークとインターネットに繋がる、と言うのが目標です。

ちょっとややこしいので簡単な図

openSUSE Leap15.2 でルータを作ってみた_a0056607_11512216.png

動機は、ADSLに繋がっているルータの調子が悪く、Wifi の干渉が酷くて、無線を止めて有線化したかったのですが、Wifi ルータは安いのに有線ルータは、結構値が張ります。また、内部向けに DNS があるのですが、安い Wifi SOHO ルータは DHCP をオフにできず、Wifi ルータの DHCP が イントラ向けの DNSを自分自身に勝手にしてくれるものが多く、実に使い勝手が悪い。
という事で、安く有線ルータが出来ないかなという理由です。

Windows でも似たような事をやってみました。

Wifi から有線LANに変換接続するWindows10 Pro で簡易ルータ

実際の環境で作るとなると零細とは言えSOHOネットワーク全体にトラブルが出てしまうので、まずはテスト環境で、という事で、openSUSE 15.2 でルータを作ってみたわけです。

ー 仮想ブリッジを作る

KVM ホストとなる SUSE Enterprise 15 (SLES15) で yast > system > Network Settings から、Add で Device Type : "Bridge" を作ります。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11521120.png

この KVM ハイパーバイザーには、Amazon で 1000円で買った USB HUB 付 NIC が付いているのですが、今回はこれは使いません。空白。

"br2" という仮想ブリッジが作られます。設定はしません。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11525879.png

SLE のインストールはこちら

SLE15 Linux Enterprise sp2 (SLES15sp2) のインストール(動画付き)

openSUSE で KVM を使う場合はこちら

openSUSE Leap 15.1 で初めての KVM, 仮想化

次に、今回ルーターとなる openSUSE 15.2 を virt-manager から create します。1枚目の仮想 NIC は、ホストサーバーの実 NIC の1番目にバインドされているブリッジデバイスに、二枚目の NIC は br2 の仮想ブリッジにバインドします。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11571289.png
ここでは、openSUSE をインストールして、

openSUSE Leap 15.2 Install (動画付き)

YaST > System > Network Settings から

Eth0 には 192.168.1.254 で、本体のローカルネットワーク(192.168.1.0/24)にバインドします。
Eth1 の仮想ネットワーク側に 192.168.10.254 のアドレスをバインドします。 192.168.10.0/24 は KVM の中だけに存在する、仮想ネットワークです。

ルータとなるシステムのネットワーク設定はこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png
ついでに DNS もインストールします。

速攻 1分で DNS on SUSE12 by YaST

ー ip forward Enable

YaST > SYstem > Network Settings > の Router のタブはこの様になりました。実ポートが繋がっている側にはデフォルトゲートウェイが設定されています。

ルータ化するため、Enabele IPv4(6) Forwarding は両方ともチェックしておきました。

(早く IPv6 にも慣れないと...)

openSUSE Leap15.2 でルータを作ってみた_a0056607_11592305.png

YaST を終了させるとネットワークの設定は自動的に再起動されます。

フォワードが有効かどうかは次のプロセス ip_forward が "1" (Enable) になっていればOKです。/etc/sysctl.conf を設定する必要はSUSE Linux では必要ないようです。

router:~ # cat /proc/sys/net/ipv4/ip_forward
1
router:~ #

ip route で確認、

router:~ # ip route
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.254
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.254


※ 従来の route コマンドは Depricated - 非推奨 - なので YaST > Software Manegement から明示的に Net-tools パッケージをインストールすると使えます 。

ー NAT とマスカレードの設定

ここからがハマりどころでした。結論としては、NATとマスカレードを有効にしろという事です。次のコマンドを実行したら、内側のネットワークから、本線とインターネットに通信ができる様になりました。ネットワークを変換して仮面舞踏会に参加させます。

ただし、SOHO 本線側からは、デフォルトゲートウェイが違うため通信はできません。

router:~ # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

ネットワークサービスを再起動します。

router:~ # systemctl restart network

永続的に設定するためには、ファイアウォールの設定が必要か、起動時に iptables コマンドを実行させる方法を探す必要があります。(挫折)

opensuse152desktop:~ # ip a | grep 192
inet 192.168.10.20/24 brd 192.168.10.255 scope global eth0
opensuse152desktop:~ #
opensuse152desktop:~ # ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=5 ttl=111 time=32.2 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=111 time=31.1 ms
64 bytes from 8.8.8.8: icmp_seq=7 ttl=111 time=31.4 ms
^C
--- 8.8.8.8 ping statistics ---
7 packets transmitted, 3 received, 57% packet loss, time 6097ms
rtt min/avg/max/mdev = 31.157/31.620/32.294/0.508 ms


ー より深く設定するには firewall-config を使う

具体的には firewall-config という GUI アプレットをインストールして設定するようです。openSUSE 15.2/SLES15 のリポジトリにあるので YaST からインストールできます。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12005594.png

第14章 マスカレードとファイアウオール

fire-wall-config アプレットを起動します。

router:~ # firewall-config &

で起動できます。 firewalld が Active/Boot Enable の場合でないと、起動できません。YaST > System > Service Management メニューから firewalld を有効にしておきます。

アプレットのUIはこんな感じです。

openSUSE Leap15.2 でルータを作ってみた_a0056607_12012822.png

ー まとめ

とりあえず目標とする事はできました。うまく設計すれば、仮想環境だけで物理ポートが2つあれば、DMZ を含んだインターネットとのバウンダリシステムを作る事ができます。今時は SaaS でメールやウェブページを運用するのが一般的なのでしょうが、例えば DNS や DHCP、 認証/パススルー・プロクシのようなコンテンツキャッシュやコンテンツフィルタリングなど、オフィスのバウンダリ・エッジで必要とされる機能は数多くあります。これらを一つの仮想化パッケージとして運用するのも一つの手段です。

何しろ余計な UPS や HUB、ケーブルが必要なくて実にスッキリします。

あいにく、私はネットワークシステムについては不勉強です。でもファイアウォールの設計やテスト、小規模な開発環境を構築するには、なかなか便利な経験でした。

次の目標は firewall-config ツールを使いこなして、Fire Wall の勉強です。






by islandcenter | 2020-12-16 12:01 | SUSE | Comments(0)