インターネットもどき
ひととおりできたので、再構築するときのために作業メモ。おかしいところとか、足りない情報とか見つけたらつっこんでやってください。
ML115上のVMWare ESXiとOpenBSDをつかってインターネットのような何かをつくってみた。
全体的な構成
図にしてみるとこんな感じ。いまいちOmniGraffleが使いこなせない。
AS65001とAS65002のふたつのネットワークをIXにあたるdom0 switch経由で接続。AS65001側にルートDNSサーバ。AS間の経路交換はBGPで。それぞれのAS内にメールサーバを用意してメール送受信ができる。管理用に各仮想マシンに物理アダプタにアサインした仮想スイッチに接続するためのNICをつくっておく。ほかは、VMWare内部で完結させる。とりあえずIPv4 Only。
VMWareの設定
管理用に物理アダプタをアサインしてある仮想スイッチをひとつ(図の「management switch」と書いてあるところ)と、物理アダプタをアサインしない仮想スイッチを3つ(図の「dom0 switch」「dom1 switch」「dom2 switch」)をそれぞれ追加。
仮想マシンの設定
各仮想マシンはすべてOpenBSD 4.6/amd64を使用。vmt0が使えるi386版のほうがよかったのかもしれない。仮想マシンでVMCIを有効化しておいてみた。これは意味があるか不明。
各仮想マシンの説明と設定はつぎのとおり。
routeserver.dom1
このネットワークでのルートDNSサーバ。
設定したところ
DNSサーバまわりは、以前Debianで作ったときとほぼ同じ。
/var/named/etc/named.conf
書きかえたところだけ。
zone "." { type master; file "master/root.db"; };
/var/named/master/root.db
$TTL 1d . IN SOA rootserver.dom1. hostmaster.rootserver.dom1. ( 3 ; serial 3h ; Reflesh 1h ; Retry 1w ; Expire 1h ) ; Negative Cache TTL IN NS rootserver.dom1. rootserver.dom1. IN A 10.0.0.1 dom1. IN NS dns1.dom1. dns1.dom1. IN A 10.0.0.11 0.0.10.in-addr.arpa. IN NS dns1.dom1. dom2. IN NS dns1.dom2. dns1.dom2. IN A 10.2.0.1 0.2.10.in-addr.arpa. IN NS dns1.dom2. <|| ***/etc/rc.conf.local >|| named_flags="" # for normal use: ""
/etc/mygate
10.0.0.254
dns1.dom1
/var/named/etc/named.conf
これも書きかえたところだけ。
zone "dom1." { type master; file "master/db.dom1"; }; zone "0.0.10.in-addr.arpa." { type master; file "master/db.10.0.0"; };
/var/named/etc/root.hint
root.hintは、すべてのDNSサーバで共通のものを使う。
. 9999999 IN NS rootserver.dom1. rootserver.dom1. 9999999 A 10.0.0.1
/var/named/master/db.dom1
$TTL 1d dom1. IN SOA dns1.dom1. hostmaster.dns1.dom1. ( 2 ; Serial 3h ; Reflesh 1h ; Retry 1w ; Expire 1h ) ; Negative Cache TTL dom1. IN NS dns1.dom1. dom1. IN MX 10 mx1.dom1. rootserver.dom1. IN A 10.0.0.1 dns1.dom1. IN A 10.0.0.11 mx1.dom1. IN A 10.0.0.101
/var/named/master/db.10.0.0
$TTL 1d 0.0.10.in-addr.arpa. IN SOA dns1.dom1. hostmaster.dns1.dom1. ( 2 ; Serial 3h ; Reflesh 1h ; Retry 1w ; Expire 1h ) ; Negative Cache TTL 0.0.10.in-addr.arpa. IN NS dns1.dom1. 1.0.0.10.in-addr.arpa. IN PTR rootserver.dom1. 11.0.0.10.in-addr.arpa. IN PTR dns1.dom1. 101.0.0.10.in-addr.arpa. IN PTR mx1.dom1.
/etc/rc.conf.local
named_flags="" # for normal use: ""
/etc/mygate
10.0.0.254
dns1.dom2
/var/named/etc/named.conf
zone "dom2." { type master; file "master/db.dom2"; }; zone "0.2.10.in-addr.arpa." { type master; file "master/db.10.2.0"; };
/var/named/master/db.dom2
$TTL 1d dom2. IN SOA dns1.dom2. hostmaster.dns1.dom2. ( 2 ; Serial 3h ; Reflesh 1h ; Retry 1w ; Expire 1h ) ; Negative Cache TTL dom2. IN NS dns1.dom2. dom2. IN MX 10 mx1.dom2. dns1.dom2. IN A 10.2.0.1 mx1.dom2. IN A 10.2.0.101
/var/named/master/db.10.2.0
$TTL 1d 0.2.10.in-addr.arpa. IN SOA dns1.dom2. hostmaster.dns1.dom2. ( 2 ; Serial 3h ; Reflesh 1h ; Retry 1w ; Exprire 1h ) ; Negative Cache TTL 0.2.10.in-addr.arpa. IN NS dns1.dom2. 1.0.2.10.in-addr.arpa. IN PTR dns1.dom2. 101.0.2.10.in-addr.arpa. IN PTR mx1.dom2.
/etc/rc.conf.local
named_flags="" # for normal use: ""
/etc/mygate
10.2.0.254
dnscache.dom2
ここのネットワークでのDNSキャッシュサーバ。ASごとに作ってもいいけど、面倒なのでdom2だけに作って全体で共用。
/etc/rc.conf.local
named_flags="" # for normal use: ""
/etc/mygate
10.2.0.254
router1.dom1
AS65001のためのIX接続用ルータ。OpenBGPDを使う。
/etc/bgpd.conf
#macros peer2="172.16.0.2" # global configuration AS 65001 router-id 172.16.0.1 holdtime 90 holdtime min 3 # listen on 127.0.0.1 # listen on ::1 # fib-update no # route-collector no log updates network 10.0.0.0/24 # neighbors and peers group "peering AS65002" { remote-as 65002 neighbor $peer2 { descr "AS 65001 peer 1" announce self tcp md5sig password hoge0123456789 } } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks #deny from any prefix 10.0.0.0/8 prefixlen >= 8 deny from any prefix 172.16.0.0/12 prefixlen >= 12 deny from any prefix 192.168.0.0/16 prefixlen >= 16 deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
/etc/rc.conf.local
bgpd_flags="" # for normal use: ""
11/22追記 /etc/sysctl.conf
net.inet.ip.forwarding=1
router1.dom2
AS65002のためのIX接続用ルータ。こちらもOpenBGPD。
/etc/bgpd.conf
#macros peer1="172.16.0.1" # global configuration AS 65002 router-id 172.16.0.2 holdtime 90 holdtime min 3 # listen on 127.0.0.1 # listen on ::1 # fib-update no # route-collector no log updates network 10.2.0.0/24 # neighbors and peers group "peering AS65001" { remote-as 65001 neighbor $peer1 { descr "AS 65001 peer 1" announce self tcp md5sig password hoge0123456789 } } # filter out prefixes longer than 24 or shorter than 8 bits deny from any allow from any inet prefixlen 8 - 24 # do not accept a default route deny from any prefix 0.0.0.0/0 # filter bogus networks #deny from any prefix 10.0.0.0/8 prefixlen >= 8 deny from any prefix 172.16.0.0/12 prefixlen >= 12 deny from any prefix 192.168.0.0/16 prefixlen >= 16 deny from any prefix 169.254.0.0/16 prefixlen >= 16 deny from any prefix 192.0.2.0/24 prefixlen >= 24 deny from any prefix 224.0.0.0/4 prefixlen >= 4 deny from any prefix 240.0.0.0/4 prefixlen >= 4
/etc/rc.conf.local
bgpd_flags="" # for normal use: ""
11/22追記 /etc/sysctl.conf
net.inet.ip.forwarding=1
mx1.dom1・mx1.dom2
dom1・dom2ドメインのMXレコードに設定されているメールサーバ。どっちも設定はほとんど同じなのでmx1.dom1のみ。
sendmail.mc
$ cd /usr/share/sendmail/cf
$ sudo cp openbsd-proto.mc sendmail.mc
とやってから、sendmail.mcを編集。下記をしかるべきところに追加。
MASQUERADE_AS(`dom1')dnl FEATURE(masquerade_envelope)dnl FEATURE(masquerade_entire_domain)dnl FEATURE(`accept_unresolvable_domains')dnl FEATURE(`accept_unqualified_senders')dnl
下2行以外は、もともとコメントアウトされてる行があるので、行頭のdnlを消すだけ。MASQUARADE_ASはドメインごとに書きかえ。書きかえたら、
$ sudo make sendmail.cf $ sudo cp sendmail.cf /etc/mail/
/etc/mail/local-host-names
mx1.dom1の場合。
dom1
/etc/rc.conf.local
sendmail_flags="-L sm-mta -C/etc/mail/sendmail.cf -bd -q30m"
/etc/resolv.conf
lookup file bind nameserver 10.2.0.253