ES460をルータにしてましたが、再起動しようとしたら起動しなくなってしまいました。
代わりになるハードウェアを調達してもいいんですが、故障のことを考慮すると仮想化したうえで冗長化しようと思いましたので、構築の手順です。環境としてはens192がインターネット側、ens224がイントラ側になります。
取り合えず、DHCPサーバとIPv6の転送を設定していきます。手順上プロンプトが#となっているのは両ノード、ホスト名が書いてあるのは片ノードでの実施になります。
# dnf -y install dhcp-server # vi /etc/dhcp/dhcpd.conf ##以下を追記 option domain-name "homelab.gurees.net"; option domain-name-servers 192.168.8.1; default-lease-time 600; max-lease-time 7200; authoritative; subnet 192.168.8.0 netmask 255.255.252.0 { range dynamic-bootp 192.168.11.10 192.168.11.254; option broadcast-address 192.168.11.255; option routers 192.168.8.1; } ##追記ここまで # firewall-cmd --add-service=dhcp --permanent # firewall-cmd --reload # echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf # vi /etc/sysctl.conf # sysctl -p # firewall-cmd --permanent --zone=trusted --change-interface=ens192 # firewall-cmd --permanent --zone=trusted --change-interface=ens224 # firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens224 -o ens192 -j ACCEPT # firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens192 -o ens224 -j ACCEPT # firewall-cmd --reload
keepalivedで切替の設定をします。priorityは1号機を優先したいので、2号機側は90に設定します。
# dnf install -y keepalived # vi /etc/keepalived/keepalived.conf ##中身を消して以下で上書きます ! Configuration File for keepalived global_defs { vrrp_garp_master_refresh 60 garp_master_delay 5 advert_int 1 router_id 250 } vrrp_instance VI_1 { state BACKUP interface ens192 priority 100 advert_int 3 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.1.250/24 } notify_master "/usr/local/sbin/keepalived_master" notify_backup "/usr/local/sbin/keepalived_backup" notify_fault "/usr/local/sbin/keepalived_backup" notify_stop "/usr/local/sbin/keepalived_backup" } vrrp_instance VI_2 { state BACKUP interface ens224 priority 100 advert_int 3 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.8.1/22 } }
keepalived切り替え時にdhcpdを起動するためのスクリプトを作成します。
# echo '#!/bin/sh' > /usr/local/sbin/keepalived_master # echo 'systemctl start dhcpd' >> /usr/local/sbin/keepalived_master # echo '#!/bin/sh' > /usr/local/sbin/keepalived_backup # echo 'systemctl stop dhcpd' >> /usr/local/sbin/keepalived_backup # chmod +x /usr/local/sbin/keepalived_master # chmod +x /usr/local/sbin/keepalived_backup
ファイアウォールでvrrpを通し、keepalivedを自動起動するようにします。
# firewall-cmd --permanent --add-protocol=vrrp --zone=trusted # firewall-cmd --reload # systemctl start keepalived.service # systemctl enable keepalived.service
これで以下のように切り替わるのを確認できます。
>tracert 192.168.8.40 192.168.8.40 へのルートをトレースしています。経由するホップ数は最大 30 です 1 3 ms 3 ms 2 ms rtx1200.local [192.168.1.1] 2 4 ms 4 ms 4 ms 192.168.1.251 3 6 ms 7 ms 6 ms 192.168.8.40 トレースを完了しました。 ※※192.168.1.251をシャットダウンする※※ >tracert 192.168.8.40 192.168.8.40 へのルートをトレースしています。経由するホップ数は最大 30 です 1 5 ms 3 ms 3 ms rtx1200.local [192.168.1.1] 2 4 ms 3 ms 4 ms 192.168.1.252 3 4 ms 5 ms 4 ms 192.168.8.40 ※※192.168.1.251を起動する※※ >tracert 192.168.8.40 192.168.8.40 へのルートをトレースしています。経由するホップ数は最大 30 です 1 3 ms 3 ms 2 ms rtx1200.local [192.168.1.1] 2 4 ms 4 ms 4 ms 192.168.1.251 3 6 ms 7 ms 6 ms 192.168.8.40 トレースを完了しました。
次にDNSを設定します。こちらは両ノードととも起動したままで問題ないので通常通りに設定します。
# dnf -y install bind bind-utils # mkdir /var/named/log # chown named.named /var/named/log # vi /etc/named.conf ##以下に書き換え acl internal-network { 192.168.8.0/22; }; acl home-network { 192.168.1.0/24; }; options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; internal-network; home-network; }; forwarders { 192.168.1.1; }; recursion yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; geoip-directory "/usr/share/GeoIP"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; channel "default-log" { file "/var/named/log/default.log" versions 5 size 10M; severity debug; print-time yes; print-severity yes; print-category yes; }; }; zone "homelab.gurees.net" { type master; file "homelab.gurees.net.zone"; };
ゾーンファイルを構成します。
# vi /var/named/homelab.gurees.net.zone ## 以下を追記 $TTL 86400 @ IN SOA gateway.homelab.gurees.net. root.homelab.gurees.net. ( 2022121801 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) IN NS gateway.homelab.gurees.net. IN A 192.168.8.1 gateway IN A 192.168.8.1 esxi01 IN A 192.168.8.11 esxi02 IN A 192.168.8.12 esxi06 IN A 192.168.8.16 esxi07 IN A 192.168.8.17 pve01 IN A 192.168.9.21 pve02 IN A 192.168.9.22 pve03 IN A 192.168.9.23 pve04 IN A 192.168.9.24 pve05 IN A 192.168.9.25 svn IN A 192.168.10.1 jenkins IN A 192.168.10.2
設定の確認とDNSサーバの起動を行います。
# named-checkconf -z zone homelab.gurees.net/IN: loaded serial 2022121801 # systemctl enable --now named Created symlink /etc/systemd/system/multi-user.target.wants/named.service → /usr/lib/systemd/system/named.service.
これで冗長対応なルータを作ることができました。今回は仮想マシンにしたので、バックアップを取っておけば故障の復旧も安心ですね。