概要
自宅NW構成について記します、常識的なコスト(節度ある投資)に抑え、稼働音0(夜はぐっすり寝れること)にすることを大事にしています。
将来的にはVLANを切って生活用と開発用NWを分けていきたいと思っています。
構成を更新しました->
物理構成
実家
NUC上でVMを仮想化しインターネットVPNのセンタ拠点として利用しています。中継器は実家の2Fに置き、wi-fiの範囲を広げるために利用しています。ブリッジで使っていますが、実家で繋がらないなぁと思うことは無くなったので買ってよかったです。
自宅
自宅のストレージはNASとして利用するため、お値段が痛いんですがファンレスにしたくSSD 2Tを購入。
論理構成
アドレス設計
自宅と実家のアドレスは192.168.0.0/22のクラスCのプライベートアドレスを利用します。
アドレスの割り振りポリシーは以下の通り、ポリシーを決めておかないとあとあと大変になるので決めておきます。
IPアドレス範囲 | 用途 | アドレス数 | 割当方式 |
---|---|---|---|
192.168.x.1 | ESXi | 1 | Static |
192.168.x.2-49 | サーバ(VM等) | 48 | Static |
192.168.x.50-59 | クライアント | 10 | Static |
192.168.x.60-200 | クライアント | 139 | DHCP |
192.168.x.201-249 | ネットワーク装置(L2SWや無線AP) | 50 | Static |
192.168.x.250 | Jump(踏み台) | 1 | Static |
192.168.x.251-253 | VPN終端機器 | 3 | Static |
192.168.x.254 | デフォルトゲートウェイ | 1 | Static |
第三オクテッドの x は拠点を表しています。
x | 拠点 |
---|---|
0 | 自宅 |
1 | 実家 |
2 | クラウド |
3 | 未割当(開発用) |
オーバレイNW構成
上の図のように全てのトンネルはセンタ拠点に集約されるハブアンドスポーク方式のNWの構成になります。 センタ拠点は障害のことを考えるといずれクラウドする…かも。
ESXi設計
GA-C1037UN-EUはNICが2枚あるおかげでルータとしても使用することができます。
ESXiで仮想SWを2つ作り、WAN側とLAN側でそれぞれSWを仮想化し、LAN側の仮想SWに無線APにしているAtermを接続することで、Aterm配下の端末はVyOSでNAPTされインターネットに抜けることができます。
仮想化しているので物理的な配線がいらないため、Sophos UTM等も置くのが簡単です(CPUリソースがあれば)
VyOS Config
設定したConfigは以下になります。
ポイントは
- SSHはローカル面のみ
- グローバル面はPPPoEにて接続
- ブロードバンドルータとして扱うためにNATおよびDHCPを動かす
firewall { name firewall-rules { default-action accept rule 10 { action reject destination { port ssh } protocol tcp } } } interfaces { ethernet eth0 { duplex auto hw-id FF:FF:FF:FF:FF:FF pppoe 0 { default-route auto firewall { local { name firewall-rules } } name-server auto password hoge@hoge.com user-id hoge } smp_affinity auto speed auto } ethernet eth1 { address 192.168.0.254/22 duplex auto hw-id FF:FF:FF:FF:FF:FF smp_affinity auto speed auto } loopback lo { } } nat { source { rule 10 { outbound-interface pppoe0 source { address 192.168.0.0/22 } translation { address masquerade } } } } service { dhcp-server { : shared-network-name dhcp-pool { authoritative enable subnet 192.168.0.0/22 { default-router 192.168.0.254 dns-server 192.168.0.254 lease 86400 start 192.168.0.60 { stop 192.168.0.199 } } } } dns { forwarding { listen-on eth1 } } ssh { port 22 } } system { config-management { commit-revisions 20 } console { } host-name vyos login { user hoge { authentication { encrypted-password hoge plaintext-password "" } level admin } } ntp { server 0.pool.ntp.org { } server 1.pool.ntp.org { } server 2.pool.ntp.org { } } package { auto-sync 1 repository community { components main distribution helium password "" : url http://packages.vyos.net/vyos username "" } } syslog { global { facility all { level notice } facility protocols { level debug } } } time-zone UTC }
set firewall all-ping 'enable' set firewall broadcast-ping 'disable' set firewall config-trap 'disable' set firewall ipv6-receive-redirects 'disable' set firewall ipv6-src-route 'disable' set firewall ip-src-route 'disable' set firewall log-martians 'enable' set firewall name firewall-rules default-action 'accept' set firewall name firewall-rules rule 10 action 'reject' set firewall name firewall-rules rule 10 destination port 'ssh' set firewall name firewall-rules rule 10 protocol 'tcp' set firewall receive-redirects 'disable' set firewall send-redirects 'enable' set firewall source-validation 'disable' set firewall syn-cookies 'enable' set firewall twa-hazards-protection 'disable' set interfaces ethernet eth0 duplex 'auto' set interfaces ethernet eth0 hw-id 'FF:FF:FF:FF:FF:FF' set interfaces ethernet eth0 pppoe 0 default-route 'auto' set interfaces ethernet eth0 pppoe 0 firewall local name 'firewall-rules' set interfaces ethernet eth0 pppoe 0 mtu '1492' set interfaces ethernet eth0 pppoe 0 name-server 'auto' set interfaces ethernet eth0 pppoe 0 password 'hoge@hoge.com' set interfaces ethernet eth0 pppoe 0 user-id 'hoge' set interfaces ethernet eth0 smp_affinity 'auto' set interfaces ethernet eth0 speed 'auto' set interfaces ethernet eth1 address '192.168.0.254/22' set interfaces ethernet eth1 duplex 'auto' set interfaces ethernet eth1 hw-id 'FF:FF:FF:FF:FF:FF' set interfaces ethernet eth1 smp_affinity 'auto' set interfaces ethernet eth1 speed 'auto' set interfaces loopback 'lo' set nat source rule 10 outbound-interface 'pppoe0' set nat source rule 10 source address '192.168.0.0/22' set nat source rule 10 translation address 'masquerade' set service dhcp-server disabled 'false' set service dhcp-server shared-network-name dhcp-pool authoritative 'enable' set service dhcp-server shared-network-name dhcp-pool subnet 192.168.0.0/22 default-router '192.168.0.254' set service dhcp-server shared-network-name dhcp-pool subnet 192.168.0.0/22 dns-server '192.168.0.254' set service dhcp-server shared-network-name dhcp-pool subnet 192.168.0.0/22 lease '86400' set service dhcp-server shared-network-name dhcp-pool subnet 192.168.0.0/22 start 192.168.0.51 stop '192.168.0.199' set service dns forwarding cache-size '150' set service dns forwarding listen-on 'eth1' set service ssh port '22' set system config-management commit-revisions '20' set system console device ttyS0 speed '9600' set system host-name 'vyos' set system login user vyos authentication encrypted-password '$1$YGhX/dAA$kcBWn3gsr3Kl4jGOEPH6E1' set system login user vyos authentication plaintext-password '' set system login user vyos level 'admin' set system ntp server '0.pool.ntp.org' set system ntp server '1.pool.ntp.org' set system ntp server '2.pool.ntp.org' set system package auto-sync '1' set system package repository community components 'main' set system package repository community distribution 'helium' set system package repository community password '' set system package repository community url 'http://packages.vyos.net/vyos' set system package repository community username '' set system syslog global facility all level 'notice' set system syslog global facility protocols level 'debug' set system time-zone 'UTC' delete system console device ttyS0