構成として考えているのは以下の様になる。ESXiのvSwitchを使って内部セグメントを作り、1台仮想マシンでルーターを建てて、必要に応じてルーティングできるようにしたい。
|
|
◎ブロードバンドルーター
|
|
--------------------------vSwitch0 192.168.33.0/24 外部セグメント| |
| .31 PC/NAS etc
◎仮想ルーター
| .31
|
--------------------------vSwitch1 192.168.11.0/24 内部セグメント
|
検証用サーバ etc
上記を実現するために当初はLinuxで仮想ルーターを作ろうと思っていたのだが、オープンソースで「VyOS」というネットワークアプライアンスOSが存在することがわかったので使ってみることにした。
以下にインストールから初期設定までに実施内容を記載する。
VyOSのインストール
VyOSのインストールはVyOS.jpのユーザーガイドに詳しく記載されているため、そちらを参照。
VyOS.jp - ユーザーガイド
基本操作
VyOSはよくあるネットワーク機器のような操作性を持っており、通常モードと設定モードの2つがある。ただし、CISCOのOSと異なり特権モードとグローバルコンフィグレーションモードといった違いはない。
現在どちらのモードとなっているかは、プロンプトから見分けることができる。
$ ←通常モード
# ←設定モード
コマンド体系については、確認系のコマンド(show ~)はCISCOライクだが、設定系(set ~)・削除系(delete ~)のコマンド体系はわりと異なる印象。また、TAB補完については、コマンドとその意味が表示されるなど、かなり親切に作られている。
設定投入時は通常以下の流れとなる。
$ configure ←設定モードに移行
# set ~ ←設定コマンドを投入(削除の場合はdelete ~)
# compare ←現在の設定と未反映の設定の差異を確認
# commit ←設定の反映
# save ←設定の保存
# exit ←通常モードに戻る
$ show ~ ←設定確認
初期設定
起動直後の状態ではネットワーク設定がされていないので通信ができない。したがって、vSphere Clientの仮想コンソールを利用して初期設定を行う。
◆sshアクセスの有効化
# set service ssh port '22'
◆インターフェースの設定
外側のインターフェースのIP設定
# set interfaces ethernet eth0 address '192.168.33.31/24'
# set interfaces ethernet eth0 description 'OUTSIDE'
内側のインターフェースのIP設定
# set interfaces ethernet eth1 address '192.168.11.31/24'
# set interfaces ethernet eth1 description 'INSIDE'
◆デフォルトゲートウェイ設定
0.0.0.0/0に対するルーティング設定を実施。これがデフォルトゲートウェイと同義になる
# set protocols static route 0.0.0.0/0 next-hop 192.168.33.1 distance '1'
確認
$ show ip route
---------------
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route
S>* 0.0.0.0/0 [1/0] via 192.168.33.1, eth0
C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.11.0/24 is directly connected, eth1
C>* 192.168.33.0/24 is directly connected, eth0
---------------
◆タイムゾーン設定
# set system time-zone Asia/Tokyo
◆ntp設定
既存のNTP設定をすべて削除
# delete system ntp server
新たにNTP同期先を設定
# set system ntp server 192.168.33.3
設定を反映して保存
# commit
# save
※反映時に以下メッセージが表示される
---------------
[ system time-zone Asia/Tokyo ]
Stopping enhanced syslogd: rsyslogd.
Starting enhanced syslogd: rsyslogd.
[ system ntp ]
Stopping NTP server: ntpd.
Starting NTP server: ntpd.
---------------
NTPの同期状況の確認
$ show ntp
remote local st poll reach delay offset disp
=======================================================================
*192.168.33.3 192.168.33.31 2 64 1 0.00014 -0.000208 0.96825
◆コンソールデバイスの削除
仮想マシン環境ではコンソールデバイスが不要であり、ログに以下の様なエラーが10秒毎に出力されてしまうため無効化する。
---------------
Apr 6 17:03:44 vyos001 getty[22165]: ttyS0: tcgetattr: Input/output error
Apr 6 17:03:54 vyos001 getty[22166]: ttyS0: tcgetattr: Input/output error
Apr 6 17:09:05 vyos001 getty[22167]: ttyS0: tcgetattr: Input/output error
Apr 6 17:09:15 vyos001 getty[22169]: ttyS0: tcgetattr: Input/output error
Apr 6 17:09:25 vyos001 getty[22170]: ttyS0: tcgetattr: Input/output error
Apr 6 17:09:35 vyos001 getty[22171]: ttyS0: tcgetattr: Input/output error
---------------
現在の設定を確認
# show system console
---------------
device ttyS0 {
speed 9600
}
---------------
デバイスを削除
# delete system console device ttyS0
SourceNAT設定
内部セグメントにいる192.168.11.110の仮想マシンにSourceNATをかけて、インターネット接続をできるように設定してみる。
outbound-interfac(通信が出て行く側のインタフェース)をeth0に設定
# set nat source rule 110 outbound-interface eth0
ソースアドレス(NAT変換対象)を192.168.11.110に設定
# set nat source rule 110 source address '192.168.11.110'
NAT変換後IPアドレスを192.168.33.31(VyOSのeth0のIPアドレス)に設定
# set nat source rule 110 translation address '192.168.33.31'
設定確認
$ show nat source rules
Disabled rules are not shown
Codes: X - exclude rule, M - masquerade rule
rule intf translation
---- ---- -----------
110 eth0 saddr 192.168.11.110 to 192.168.33.31
proto-all sport ANY
---------------
---------------
Codes: X - exclude rule, M - masquerade rule
rule intf translation
---- ---- -----------
110 eth0 saddr 192.168.11.110 to 192.168.33.31
proto-all sport ANY
---------------
Firewall設定
外部セグメントから内部セグメントに対してFirewallによる通信制御を行う。とりあえず、pingと管理通信のみ実施可能になるよう設定する。
内部と外部セグメントのグループを作成
# set firewall group network-group NET-11 network '192.168.11.0/24'
# set firewall group network-group NET-33 network '192.168.33.0/24'
管理通信のポート番号のグループを作成
# set firewall group port-group PORT-MNT port '22'
# set firewall group port-group PORT-MNT port '443'
# set firewall group port-group PORT-MNT port '3389'
OUTSIDE-INというFirewallを作成し、デフォルト拒否に設定
# set firewall name OUTSIDE-IN default-action 'drop'
TCPの確立済み戻り通信の許可
※established:確立済みパケット
※related:確立済みパケットに関連するパケット
※established:確立済みパケット
※related:確立済みパケットに関連するパケット
# set firewall name OUTSIDE-IN rule 10 action 'accept'
# set firewall name OUTSIDE-IN rule 10 state established 'enable'
# set firewall name OUTSIDE-IN rule 10 state related 'enable'
外部からのecho-requestの許可
# set firewall name OUTSIDE-IN rule 20 action 'accept'
# set firewall name OUTSIDE-IN rule 20 icmp type-name 'echo-request'
# set firewall name OUTSIDE-IN rule 20 protocol 'icmp'
外部からの管理通信の許可
# set firewall name OUTSIDE-IN rule 100 action 'accept'
# set firewall name OUTSIDE-IN rule 100 destination group network-group 'NET-11'
# set firewall name OUTSIDE-IN rule 100 destination group port-group 'PORT-MNT'
# set firewall name OUTSIDE-IN rule 100 protocol 'tcp'
外部インタフェースにFirewallを適用
# set interfaces ethernet eth0 firewall in name 'OUTSIDE-IN'
設定の確認
$ show firewall
---------------
-----------------------------
Rulesets Information
-----------------------------
--------------------------------------------------------------------------------
IPv4 Firewall "OUTSIDE-IN":
Active on (eth0,IN)
rule action proto packets bytes
---- ------ ----- ------- -----
10 accept all 767928 1335923290
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 state RELATED,ESTABLISHED
20 accept icmp 801 76896
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 icmptype 8
100 accept tcp 21 1080
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 match-DST-NTWRK-GROUP NET-11 match
-set PORT-MNT dst
10000 drop all 307 36694
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0
Rulesets Information
-----------------------------
--------------------------------------------------------------------------------
IPv4 Firewall "OUTSIDE-IN":
Active on (eth0,IN)
rule action proto packets bytes
---- ------ ----- ------- -----
10 accept all 767928 1335923290
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 state RELATED,ESTABLISHED
20 accept icmp 801 76896
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 icmptype 8
100 accept tcp 21 1080
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0 match-DST-NTWRK-GROUP NET-11 match
-set PORT-MNT dst
10000 drop all 307 36694
condition - saddr 0.0.0.0/0 daddr 0.0.0.0/0
---------------
参考
VyOS.jp
0 件のコメント:
コメントを投稿