社内のネットワークとは別に、ゲスト用にネットワーク回線を提供したいことがある。
このようなネットワークでは、インターネットとの通信は許しつつも、社内のPCや各種サーバへのアクセスは防ぎたい。
そのためには、ファイアーウォールの機能を備えたルータを置くことが必要だけれども、これを仮想化することを考えたい。(*1)
仮想化のシステムにはVMware ESXi、ソフトウェアルータとしてはvyattaを利用する。
(*1) 最近の無線ルータにはもともとゲストネットワークの機能が入っているものがあり、そうした機器では自前でルータを立てる必要はない。
物理的な接続
ゲスト用に物理的なHUBを用意する。無線LAN(Wi-Fi)も提供するならば、アクセスポイントをそこにつなげる。
前回の記事と同様に、ゲストネットワーク(Guest Network)にVLAN IDを一つ割り当てて、L2スイッチを通して仮想化ホストとの接続を行う。
仮想マシンを用意する
ESXiのネットワーク構成管理で、Guest Networkを作成して、VLAN IDを割り当てる。
メニューからvyattaをデプロイする。今回は単純にネットワークカードを2枚にした。eth0は社内ネットワークに接続し、eth1はGuest Networkに接続する。
ルータの基本設定
ホスト名、タイムゾーン、NTPサーバなんかを設定。
vyatta@rt:~$ configure
[edit]
vyatta@rt# set system host-name rt.guest
[edit]
vyatta@rt# set system time-zone Asia/Tokyo
[edit]
vyatta@rt# set system ntp-server ntp.nict.jp
[edit]
ネームサーバは社内ネットワークのを使ってもいいんだが、社内サーバの名前解決が出来ても嬉しくないので、外部のもの(プロバイダのDNSなど)を利用。ここではGoogle Public DNSを設定。
vyatta@rt# set system name-server 8.8.8.8
[edit]
vyatta@rt# set system name-server 8.8.4.4
[edit]
ネットワーク設定
eth0のアドレスはDHCPで取得し、eth1には固定で192.168.1.1/24を割り当てる。
vyatta@rt# set interfaces ethernet eth0 address dhcp
[edit]
vyatta@rt# set interfaces ethernet eth1 address 192.168.1.1/24
[edit]
eth0に向かうパケットはIPマスカレードする。
vyatta@rt# set service nat rule 10 outbound-interface eth0
[edit]
vyatta@rt# set service nat rule 10 type masquerade
[edit]
ファイアーウォール設定
社内ネットワークへのアクセスは拒否するようファイアーウォールを設定する。これは次のルールによって行う。
- 192.168.0.0/16に向けたパケットは拒否する。
- 172.16.0.0/12に向けたパケットは拒否する。
- 10.0.0.0/8に向けたパケットは拒否する。
- それ以外のパケットは許可する。
まずはこれをルールFW-1として作成。
vyatta@rt# set firewall name FW-1 rule 1 destination address 192.168.0.0/16
[edit]
vyatta@rt# set firewall name FW-1 rule 1 action reject
[edit]
vyatta@rt# set firewall name FW-1 rule 2 destination address 172.16.0.0/12
[edit]
vyatta@rt# set firewall name FW-1 rule 2 action reject
[edit]
vyatta@rt# set firewall name FW-1 rule 3 destination address 10.0.0.0/8
[edit]
vyatta@rt# set firewall name FW-1 rule 3 action reject
[edit]
vyatta@rt# set firewall name FW-1 rule 4 action accept
[edit]
このルールをeth1から入ってくるパケットに対して適用する。
vyatta@rt# set interface ethernet eth1 firewall in name FW-1
[edit]
逆方向の通信、つまり社内ネットワークからゲストネットワークに向けた通信も防いだ方がいいのだろうけど、どうせFW-1によって双方向の通信は拒否されるので、上記設定で十分だろう。
サービス設定
必要に応じて、ゲストネットワークのためのDNSやDHCPサーバを動かす。
eth1からのDNS問い合わせは、最初に設定した外部のDNSサーバに転送する。
vyatta@rt# set service dns forwarding listen-on eth1
[edit]
vyatta@rt# set service dns forwarding system
[edit]
DHCPで配るアドレスは192.168.1.100~199とし、デフォルトルータやDNSのアドレスは自分自身にする。
vyatta@rt# set service dhcp-server shared-network-name ETH1_POOL \
subnet 192.168.1.0/24 start 192.168.1.100 stop 192.168.1.199
[edit]
vyatta@rt# set service dhcp-server shared-network-name ETH1_POOL \
subnet 192.168.1.0/24 default-router 192.168.1.1
[edit]
vyatta@rt# set service dhcp-server shared-network-name ETH1_POOL \
subnet 192.168.1.0/24 dns-server 192.168.1.1
[edit]
設定の反映と保存
ここまでの設定をシステムに反映(commit)させる。問題なさそうなら保存(save)して完了。
vyatta@rt# commit
...
[edit]
vyatta@rt# save
Saving configuration to '/opt/vyatta/etc/config/config.boot'...
Done
[edit]
vyatta@rt# exit
exit
0 コメント:
コメントを投稿