2018/01/31

OPNsenseで自作ルータにする


LANポートが4つあるPCを手に入れたから、それにソフトウェアルータを入れて自分の気に入るように構成してやろうと思う。

ソフトウェアルータ、いろいろあるが何がいいのか。

VyOS(https://vyos.io/)
SEIL/x86(http://www.seil.jp/product/seil-x86.html)
OPNsense(https://opnsense.org/)
pfSense(https://www.pfsense.org/)

VyOSでは、IPv6だけブリッジで接続してIPv4はNATにするとかいうことが難しそうだった。それに、ブリッジにしたときのファイアウォールの設定に難がある。宛先や送信元のポートで絞ることができず、IPアドレスでフィルタを設定しなければならない。しかし当然だが、IPアドレスは何が割り当てられるのかも、いつ変わるのかもわからないので、設定しようがない。

SEIL/x86でもよさそうだったのだが、俺みたいな情弱には使い方がいまいちわからなかった。

ということで、OPNsenseでやってみることにした。

1.インストール

ダウンロードのページに行くと、nano、dvd、vga、serialの4種類の中から選択を求められる。

どうも、vgaという奴がUSBメモリからブートする奴らしいので、それを選んでやってみた。だが、インストール後にUSBメモリを引っこ抜いて再起動すると、Windows 7が起動してくる。これはどうやら、常時USBメモリを指しておかなければいけないらしい。俺が求めているのはこれではない。

dvdというのも、同じようなものらしい。ということで、nanoというものをダウンロードする。でもってそれを、内蔵のSSDに書き込んでやる。

書き込むと簡単に言うが、これが俺みたいな情弱にはかなりの難物だった。

まず、USBメモリに書き込むのであれば、USBWriterというソフトが便利である。だが、これはUSBメモリ以外には書き込めないよう制限がかかっているらしく、対象としてSSDが選択できなかった。

なので、DD for Windowsを使った。

まず、内蔵されているmSATAのSSDを取り出して、それをmSATA-SATA変換アダプタとSATA-USB変換アダプタでUSB接続に変えてやって、USBでPCに接続する。(USBにすればUSBWriterが使えるかと思ったのだが、だめだった)。

その状態で、ダウンロードしたOPNsenseのディスクイメージをDD for WindowsでSSDに書き込む。

それを、元通りに本体に戻して電源を入れてやると、無事にOPNsenseが起動した。

後はコマンドラインからIPアドレスを設定して、その設定したアドレスにWebブラウザで接続してやれば、他の設定をいじることができるようになる。なお、デフォルトのユーザ名はrootで、パスワードはopnsenseである。


2.設定内容

設定内容を手順を追って書くのが良いとは思うのだが、実のところ、かなり試行錯誤した結果であるため、何をどういう順番でこうしたのか、もはや全く覚えていない。

だから結果だけ書く。

2.1 インタフェースの割り当て



とりあえず、ポートが4つあるのだから、4ポート分インタフェースの割り当てを行ってやる。そのうち、ポート1をWAN用に使うことにして、残りのポート2~4とWiFiはLAN用の使う。

ポート2と4の設定は下記のようになっている。



ポート3には管理用のIPアドレスを割り当てるため、設定がちょっと違う。



WiFiのポートは、基本的にポート2と4と同じだが、WiFiのアクセスポイントにする設定項目がある。



WAN用に使うポート1は、ポート2や4と同じだ。



ここで、PPPoEの設定を追加してやる。ポイントツーポイントのデバイスという項目を選択してやる。



上はすでに登録した後の絵だ。最初は何もない。そこで追加ボタンを押して、PPPoEの設定を行う。



確か、PPPoEのポートを追加したら、それをインタフェースとして追加してやらなければいけなかったはず。上の絵を見ると、一覧に「v4WAN_PORT1」というのがあるが、それである。

中の設定はこんな感じ。



それと、ブリッジの設定をしてやらなければならない。その他のタイプでブリッジを選択して、追加ボタンを押下する。



中はほとんど設定すべきことは無い。ブリッジに含めるポートを選ぶだけだ。



ここではIPv6用とIPv4用に2つブリッジを設定している。V6WAN_PORT1というのが含まれているのがIPv6用である。IPv6の場合はWAN用のポート1を含めてそれ以外全部(無論PPPoEのものは除いて)をブリッジでつないでやるのだ。それに対してIPv4の場合は、IPv4のパケットがWANポートに出られては困るので、WAN用のポート1を除いてブリッジを設定する。

ブリッジを追加したら、これもインタフェースに追加する。インタフェースの一覧に見えているv6BRIDGEというものとv4BRIDGEというものがそれである。

ブリッジについてインタフェースとして設定すべきことはほとんどない。


次はファイアウォールの設定である。

LAN用に使うポート2・4・WiFiは同じで、IPv4とIPv6を全開にしてやる。デフォルトですべてドロップされるため、これをやらないと何も通信ができない。



ここで、送信元が*になっていることに注意されたい。ルールを追加するとき、送信元のポートをインタフェースの名称で指定することができるのだが、これは結局、そのインタフェースに設定されているIPアドレスによりフィルタされるものであるようだ。だから、ポート2やポート4のようにIPアドレスを設定していないポートを送信元として条件に加えると、すべてのパケットがフィルタされることになってしまう。

ポート3については、デフォルトで80番に対する接続を受け入れる設定が入っているが、それ以外は似たようなものである。



PPPoEのポート(つまり、IPv4用のWANポート)は、デフォルトで設定されていたものをそのまま残している。



ポート1、すなわちIPv6用のWANポートについては、送信元が547番で送信先が546番のUDPだけを許可してやっている。これは、DHCPv6のサーバからクライアントへの通信である。これがないと、IPv6のDNSサーバのアドレスが取得できない。(なお、フレッツ光のIPoEだと、IPアドレスとサブネットマスク、デフォルトゲートウェイはルータ広告で設定され、DNSサーバのアドレスだけはDHCPv6で決定されるらしい)


あと、ブリッジにもフィルタを設定する。IPv4用に作ったブリッジとか言ったところで、それは俺の思い込みに過ぎず、何もしなければすべてのパケットが転送されてしまうので、v4用のブリッジにはv4しか通さない設定を行う。



IPv6についても同様。


IPv4についてはブリッジでつないだ中のネットワークから、PPPoEによる外のネットワークに対してNATを行ってやらなければならないはずだが、その設定は勝手に定義が登録されるようだ。ここは実は何も触っていない。



ゲートウェイの設定を追加してやらなければならない。IPv4のゲートウェイとIPv6のゲートウェイのそれぞれが必要になる。



設定はデフォルト的な感じになっている。



IPv6も同様。


あと、デフォルトではブリッジに設定したフィルタルールは適用されないようになっている。なので、それを有効にしてやらなければならない。システムの調整パラメータというところを選択して、その中にある「Set to 1 to enable filtering on the bridge interface」を1に設定してやる。



ここまでやってやれば、とりあえず、IPv4とIPv6で通信できるようになるはずである。



あと、ここまで書いておいてなんだが、上記を記載通りの順番で設定しておくと、ブリッジを2つ有効にした時点でブロードキャストストームが発生してろくでもないことになるはずである。当然だ。

最終的な構成としてはフィルタによってIPv4とIPv6が分離されてループはしないはずではあるが、それでも何となく不安な気がしてきた。

結局、ブリッジは1つにしてブリッジに対するフィルタはなしにしてしまった。

0 件のコメント: