投稿者: user
RIPv2の自動経路集約(Auto Summary)について
RIPv2の動作検証をしていた際に想定と違う動作をしたため
その時に調べた内容や検証した内容についてのメモです。
概要
RIPv2はデフォルトで自動経路集約(Auto Summary)が有効になっているが、
ある条件の経路については集約されなかった。
ざっくり構成図
各機器Config
router1
router2#sh run
interface GigabitEthernet0
ip address 172.16.1.1 255.255.255.0
interface Vlan11
ip address 10.1.1.254 255.255.255.0
!
interface Vlan12
ip address 10.1.2.254 255.255.255.0
!
interface Vlan172
ip address 172.16.2.254 255.255.255.0
!
interface Vlan173
ip address 172.16.3.254 255.255.255.0
!
interface Vlan191
ip address 192.168.1.254 255.255.255.240
router rip
version 2
redistribute connected
network 172.16.0.0
router2
router2#sh run
interface GigabitEthernet0
ip address 172.16.1.2 255.255.255.0
router rip
version 2
network 172.16.0.0
各機器ルーティングテーブル
router1
router1#sh ip route
10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks
C 10.1.1.0/24 is directly connected, Vlan11
L 10.1.1.254/32 is directly connected, Vlan11
C 10.1.2.0/24 is directly connected, Vlan12
L 10.1.2.254/32 is directly connected, Vlan12
172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet0
L 172.16.1.1/32 is directly connected, GigabitEthernet0
C 172.16.2.0/24 is directly connected, Vlan172
L 172.16.2.254/32 is directly connected, Vlan172
C 172.16.3.0/24 is directly connected, Vlan173
L 172.16.3.254/32 is directly connected, Vlan173
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.240/28 is directly connected, Vlan191
L 192.168.1.254/32 is directly connected, Vlan191
router2
router2#sh ip route
R 10.0.0.0/8 [120/1] via 172.16.1.1, 00:00:04, GigabitEthernet0
172.16.0.0/16 is variably subnetted, 4 subnets, 2 masks
C 172.16.1.0/24 is directly connected, GigabitEthernet0
L 172.16.1.2/32 is directly connected, GigabitEthernet0
R 172.16.2.0/24 [120/1] via 172.16.1.1, 00:00:04, GigabitEthernet0
R 172.16.3.0/24 [120/1] via 172.16.1.1, 00:00:04, GigabitEthernet0
R 192.168.1.0/24 [120/1] via 172.16.1.1, 00:00:04, GigabitEthernet0
10.x.x.xと192.168.1.xについては経路集約されているが、
172.16.2.0と172.16.3.0は経路集約がされなかった。
この動作についてはCiscoのドキュメントにて説明されている
https://www.cisco.com/c/dam/global/ja_jp/td/docs/ios-xml/ios/iproute_rip/configuration/xe-16/irr-xe-16-book.pdf
RIP Version 2 は、デフォルトで自動ルート集約をサポートしています。クラスフル ネットワーク
境界を越えるとき、サブプレフィックスはクラスフル ネットワーク境界に集約されます。
クラスレス、クラスフルとは
クラスレスネットワーク:先頭3ビットでネットワーク部とホスト部を区別する
クラスフルネットワーク:CIDR表記(IPアドレス/サブネットマスクの1個数)でネットワーク部とホスト部を区別する
debugログ
debugログを見ても172.16.2.0と172.16.3.0は経路集約されずに広告/学習されています。
広告学習するI/Fと同一クラスフルネットワーク内のルートについては
経路集約されていないことがわかりました。
router1#
*May 4 10:44:53.699: RIP: sending v2 update to 224.0.0.9 via GigabitEthernet0 (172.16.1.1)
*May 4 10:44:53.699: RIP: build update entries
*May 4 10:44:53.699: 10.0.0.0/8 via 0.0.0.0, metric 1, tag 0
*May 4 10:44:53.699: 172.16.2.0/24 via 0.0.0.0, metric 1, tag 0
*May 4 10:44:53.699: 172.16.3.0/24 via 0.0.0.0, metric 1, tag 0
*May 4 10:44:53.699: 192.168.1.0/24 via 0.0.0.0, metric 1, tag 0
router2#
*May 4 08:54:47.099: RIP: received v2 update from 172.16.1.1 on GigabitEthernet0
*May 4 08:54:47.099: 10.0.0.0/8 via 0.0.0.0 in 1 hops
*May 4 08:54:47.099: 172.16.2.0/24 via 0.0.0.0 in 1 hops
*May 4 08:54:47.099: 172.16.3.0/24 via 0.0.0.0 in 1 hops
*May 4 08:54:47.099: 192.168.1.0/24 via 0.0.0.0 in 1 hops
結論
RIPv2がRIPデータベースのクラスフル境界内に複数のサブプレフィックスを持ち、
同じクラスフル境界内のサブプレフィックスを所有するインターフェイスからアップデートを送信する場合、
RIPv2は自動経路集約(Auto Summary)を実行しません。
無線用語(EIRP、RSSI、SNR)と電波強度の目安
概要
無線用語(EIRP、RSSI、SNR)の説明と快適な無線利用環境の目安の数値について
各用語
・dbm(デシベルミリワット)
信号強度の単位
0dBmに近いほど(数値が高いほど)優れた信号
・EIRP(Equivalent Isotropic Radiated Power)
実効等方輻射電力、簡単に言うと電波集力機器側の送信信号強度
Arubaの無線コントローラの場合はdbm単位で設定が可能
APごとのMAX値はAP135は21.5、AP325は27.0、AP515は30.0。
EIRP27だと建物Aの無線APへ建物Bで接続できることを確認できた。
※2.4GHzで直線距離は60m程
EIRP6でも同一フロアの壁に設置してあるAPから反対側の壁側で接続できることを確認できた。
※5GHzで直線距離は20m程
・RSSI(Received Signal Strength Indicator)
受信信号強度、クライアント側のWi-Fiアナライザ等で確認できる。
——————————————————————————————————————————-
-67 dBm Very Good Minimum signal strength for applications that require very reliable, timely delivery of data packets. VoIP/VoWi-Fi, streaming video
-70 dBm Okay Minimum signal strength for reliable packet delivery. Email, web
———————————————————————————————————–
※下記サイトより引用、metageek社はサイトサーベイなどで使うスペクトラムアナライザのメーカ
https://www.metageek.com/training/resources/understanding-rssi/#:~:text=RSSI%20vs%20dBm,levels%20in%20mW%20(milliwatts).
・SNR(Signal-to-Noise Ratio)
信号対雑音比 (RSSI – ノイズ他電波の信号強度) ※同一帯域のSSIDごとにSNRは計算できる
そのAPからみたときに同一チャネルを使ってる他電波との雑音比、大きい方が干渉が少ない
——————————————————————————-
25dB to 40dB SNR = Very good signal (3 – 4 bars); always associated; very fast.
——————————————————————————-
※下記サイトより引用、Ciscoが買収したNW機器メーカ(meraki)が引用している記事
http://www.wireless-nets.com/resources/tutorials/define_SNR_values.html
結論
ビデオストリーミング等を快適に見るためには、無線利用場所において下記2つの条件を満たしていること
・「利用するSSIDから受信する電波(RSSI)が強い」
RSSI:利用するSSIDのRSSIが-67 dBm 以上
・「同一周波数を利用する強い電波(SNRが低い)SSIDが存在しない」
SNR :同じ周波数を使用するSSID(特に同一チャネル)で25 dB 以下のSSIDが存在しない
※利用する電波や付近の電波の強度(RSSI)を計算するにはスマホは「Wi-Fi Analyzer」PCは「inSSIDer」等のフリーソフトで確認可能
SNRはRSSIを元に計算可能
OpenVPNを使ってクライアントVPNを構築
何をするか
外出先のインターネットからクライアントVPNを使って自宅NWに接続する。
OpenVPNサーバの構築
yum install -y qemu-img
必要なパッケージをインストール
yum –enablerepo=epel install openvpn easy-rsa
作業ディレクトリを作成してコピーして移動。
mkdir /etc/openvpn/easy-rsa cp /usr/share/easy-rsa/3.0.7/* /etc/openvpn/easy-rsa/ -R cd /etc/openvpn/easy-rsa
CA(認証局)の初期化。
./easyrsa init-pki
CA(認証局)を作成。
./easyrsa build-ca
CA秘密鍵のパスワードが聞かれるので任意のパスワードを入力。
Enter New CA Key Passphrase: Re-Enter New CA Key Passphrase:
処理が完了すると以下のファイルが作成される。
CA証明書:ca.crt CA秘密鍵:ca.key
DH(Diffie-Hellman)パラメータの生成。
./easyrsa gen-dh ・DHパラメータ /etc/openvpn/easy-rsa/pki/dh.pem
サーバ用秘密鍵、証明書の作成
※nonpassオプションをつけるとパスフレーズを省略できる。
./easyrsa build-server-full server_1
クライアント用証明書、秘密鍵の作成
※nonpassオプションをつけるとパスフレーズを省略できる。
./easyrsa build-client-full client_1
CA秘密鍵のパスワードが聞かれるのでパスワードを入力
Enter pass phrase for /etc/openvpn/easy-rsa/pki/private/ca.key:
処理が完了すると以下のファイルが作成される。
サーバ用証明書:client_1.crt
サーバ用秘密鍵:client_1.key
OpenVPNのテンプレコンフィグをコピー。
cp /usr/share/doc/openvpn*/sample/sample-config-files/server.conf server_1.conf
メインの設定ファイルを編集。
vi /etc/openvpn/server_1.conf #### ################################################# # Sample OpenVPN 2.0 config file for # # multi-client server. # # # # This file is for the server side # # of a many-clients <-> one-server # # OpenVPN configuration. # # # # OpenVPN also supports # # single-machine <-> single-machine # # configurations (See the Examples page # # on the web site for more info). # # # # This config should work on Windows # # or Linux/BSD systems. Remember on # # Windows to quote pathnames and use # # double backslashes, e.g.: # # "C:\\Program Files\\OpenVPN\\config\\foo.key" # # # # Comments are preceded with '#' or ';' # ################################################# # Which local IP address should OpenVPN # listen on? (optional) ;local a.b.c.d # Which TCP/UDP port should OpenVPN listen on? # If you want to run multiple OpenVPN instances # on the same machine, use a different port # number for each one. You will need to # open up this port on your firewall. port 1194 # TCP or UDP server? ;proto tcp proto udp4 # "dev tun" will create a routed IP tunnel, # "dev tap" will create an ethernet tunnel. # Use "dev tap0" if you are ethernet bridging # and have precreated a tap0 virtual interface # and bridged it with your ethernet interface. # If you want to control access policies # over the VPN, you must create firewall # rules for the the TUN/TAP interface. # On non-Windows systems, you can give # an explicit unit number, such as tun0. # On Windows, use "dev-node" for this. # On most systems, the VPN will not function # unless you partially or fully disable # the firewall for the TUN/TAP interface. ;dev tap dev tun # Windows needs the TAP-Win32 adapter name # from the Network Connections panel if you # have more than one. On XP SP2 or higher, # you may need to selectively disable the # Windows firewall for the TAP adapter. # Non-Windows systems usually don't need this. ;dev-node MyTap # SSL/TLS root certificate (ca), certificate # (cert), and private key (key). Each client # and the server must have their own cert and # key file. The server and all clients will # use the same ca file. # # See the "easy-rsa" directory for a series # of scripts for generating RSA certificates # and private keys. Remember to use # a unique Common Name for the server # and each of the client certificates. # # Any X509 key management system can be used. # OpenVPN can also use a PKCS #12 formatted key file # (see "pkcs12" directive in man page). #ca ca.crt ca /etc/openvpn/easy-rsa/pki/ca.crt #cert server.crt cert /etc/openvpn/easy-rsa/pki/issued/server_r.crt #key server.key # This file should be kept secret key /etc/openvpn/easy-rsa/pki/private/server_r.key # Diffie hellman parameters. # Generate your own with: # openssl dhparam -out dh2048.pem 2048 #dh dh2048.pem dh /etc/openvpn/easy-rsa/pki/dh.pem # Network topology # Should be subnet (addressing via IP) # unless Windows clients v2.0.9 and lower have to # be supported (then net30, i.e. a /30 per client) # Defaults to net30 (not recommended) ;topology subnet # Configure server mode and supply a VPN subnet # for OpenVPN to draw client addresses from. # The server will take 10.8.0.1 for itself, # the rest will be made available to clients. # Each client will be able to reach the server # on 10.8.0.1. Comment this line out if you are # ethernet bridging. See the man page for more info. server 10.8.0.0 255.255.255.0 # Maintain a record of client <-> virtual IP address # associations in this file. If OpenVPN goes down or # is restarted, reconnecting clients can be assigned # the same virtual IP address from the pool that was # previously assigned. ifconfig-pool-persist ipp.txt # Configure server mode for ethernet bridging. # You must first use your OS's bridging capability # to bridge the TAP interface with the ethernet # NIC interface. Then you must manually set the # IP/netmask on the bridge interface, here we # assume 10.8.0.4/255.255.255.0. Finally we # must set aside an IP range in this subnet # (start=10.8.0.50 end=10.8.0.100) to allocate # to connecting clients. Leave this line commented # out unless you are ethernet bridging. ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 # Configure server mode for ethernet bridging # using a DHCP-proxy, where clients talk # to the OpenVPN server-side DHCP server # to receive their IP address allocation # and DNS server addresses. You must first use # your OS's bridging capability to bridge the TAP # interface with the ethernet NIC interface. # Note: this mode only works on clients (such as # Windows), where the client-side TAP adapter is # bound to a DHCP client. ;server-bridge # Push routes to the client to allow it # to reach other private subnets behind # the server. Remember that these # private subnets will also need # to know to route the OpenVPN client # address pool (10.8.0.0/255.255.255.0) # back to the OpenVPN server. #;push "route 192.168.10.0 255.255.255.0" #;push "route 192.168.20.0 255.255.255.0" push "route 192.168.0.0 255.255.255.0" # To assign specific IP addresses to specific # clients or if a connecting client has a private # subnet behind it that should also have VPN access, # use the subdirectory "ccd" for client-specific # configuration files (see man page for more info). # EXAMPLE: Suppose the client # having the certificate common name "Thelonious" # also has a small subnet behind his connecting # machine, such as 192.168.40.128/255.255.255.248. # First, uncomment out these lines: ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 # Then create a file ccd/Thelonious with this line: # iroute 192.168.40.128 255.255.255.248 # This will allow Thelonious' private subnet to # access the VPN. This example will only work # if you are routing, not bridging, i.e. you are # using "dev tun" and "server" directives. # EXAMPLE: Suppose you want to give # Thelonious a fixed VPN IP address of 10.9.0.1. # First uncomment out these lines: ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 # Then add this line to ccd/Thelonious: # ifconfig-push 10.9.0.1 10.9.0.2 # Suppose that you want to enable different # firewall access policies for different groups # of clients. There are two methods: # (1) Run multiple OpenVPN daemons, one for each # group, and firewall the TUN/TAP interface # for each group/daemon appropriately. # (2) (Advanced) Create a script to dynamically # modify the firewall in response to access # from different clients. See man # page for more info on learn-address script. ;learn-address ./script # If enabled, this directive will configure # all clients to redirect their default # network gateway through the VPN, causing # all IP traffic such as web browsing and # and DNS lookups to go through the VPN # (The OpenVPN server machine may need to NAT # or bridge the TUN/TAP interface to the internet # in order for this to work properly). ;push "redirect-gateway def1 bypass-dhcp" # Certain Windows-specific network settings # can be pushed to clients, such as DNS # or WINS server addresses. CAVEAT: # http://openvpn.net/faq.html#dhcpcaveats # The addresses below refer to the public # DNS servers provided by opendns.com. ;push "dhcp-option DNS 208.67.222.222" ;push "dhcp-option DNS 208.67.220.220" # Uncomment this directive to allow different # clients to be able to "see" each other. # By default, clients will only see the server. # To force clients to only see the server, you # will also need to appropriately firewall the # server's TUN/TAP interface. #;client-to-client client-to-client # Uncomment this directive if multiple clients # might connect with the same certificate/key # files or common names. This is recommended # only for testing purposes. For production use, # each client should have its own certificate/key # pair. # # IF YOU HAVE NOT GENERATED INDIVIDUAL # CERTIFICATE/KEY PAIRS FOR EACH CLIENT, # EACH HAVING ITS OWN UNIQUE "COMMON NAME", # UNCOMMENT THIS LINE OUT. ;duplicate-cn # The keepalive directive causes ping-like # messages to be sent back and forth over # the link so that each side knows when # the other side has gone down. # Ping every 10 seconds, assume that remote # peer is down if no ping received during # a 120 second time period. keepalive 10 120 # For extra security beyond that provided # by SSL/TLS, create an "HMAC firewall" # to help block DoS attacks and UDP port flooding. # # Generate with: # openvpn --genkey --secret ta.key # # The server and each client must have # a copy of this key. # The second parameter should be '0' # on the server and '1' on the clients. tls-auth ta.key 0 # This file is secret # Select a cryptographic cipher. # This config item must be copied to # the client config file as well. # Note that v2.4 client/server will automatically # negotiate AES-256-GCM in TLS mode. # See also the ncp-cipher option in the manpage cipher aes-256-cbc #auth sha256 # Enable compression on the VPN link and push the # option to the client (v2.4+ only, for earlier # versions see below) ;compress lz4-v2 ;push "compress lz4-v2" # For compression compatible with older clients use comp-lzo # If you enable it here, you must also # enable it in the client config file. #;comp-lzo comp-lzo # The maximum number of concurrently connected # clients we want to allow. ;max-clients 100 max-clients 100 # It's a good idea to reduce the OpenVPN # daemon's privileges after initialization. # # You can uncomment this out on # non-Windows systems. #;user nobody #user nobody #;group nobody #group nobody # The persist options will try to avoid # accessing certain resources on restart # that may no longer be accessible because # of the privilege downgrade. persist-key persist-tun # Output a short status file showing # current connections, truncated # and rewritten every minute. #status openvpn-status.log status /var/log/openvpn-status.log # By default, log messages will go to the syslog (or # on Windows, if running as a service, they will go to # the "\Program Files\OpenVPN\log" directory). # Use log or log-append to override this default. # "log" will truncate the log file on OpenVPN startup, # while "log-append" will append to it. Use one # or the other (but not both). #;log openvpn.log log-append /var/log/openvpn.log log /var/log/openvpn.log # Set the appropriate level of log # file verbosity. # # 0 is silent, except for fatal errors # 4 is reasonable for general usage # 5 and 6 can help to debug connection problems # 9 is extremely verbose verb 3 # Silence repeating messages. At most 20 # sequential messages of the same message # category will be output to the log. ;mute 20 # Notify the client that when the server restarts so it # can automatically reconnect. explicit-exit-notify 1 ####
vpnux Clientの設定
vpnux Clientを起動して「プロファイル」→「追加」を押下する。
■一般設定
プロファイル名:任意
VPNサーバ:OpenVPNサーバのグローバルIP
デバイス:TUN
拡張設定:[LZO圧縮を有効にする]をチェック
CA証明書:「ca.crt」を選択
認証:「証明書認証(PKI)を使用」を選択
証明書認証(PKI)/証明書:「client1.crt」を選択
証明書認証(PKI)/秘密鍵:「client1.key」を選択
■詳細設定
追加セキュリティ設定:「TSL-Auth HMAC署名を使用」をチェック
追加セキュリティ設定/共有鍵:「ta.key」を選択
ログからのトラシュー
暗号方式を大文字で記載していた。
cipher AES-256-CBC → cipher aes-256-cbc
Fri May 15 10:44:27 2020 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]61.86.178.47:1194
プロトコルのipv4の指定が抜けていた。
udp → udp4
Fri May 15 10:37:02 2020 Could not determine IPv4/IPv6 protocol. Using AF_INET
CentOS7のサーバ構築でうまくいかない時の共通確認事項
サーバを構築する際にいつも忘れてしまうところ。
・SELINUXの無効化
状態確認
getenforce
永久的に無効化
vi /etc/selinux/config
—-
SELINUX=enforcing
—-
・FWの無効化
状態確認
systemctl status iptables
systemctl status firewalld
停止(再起動すると復活する)
/etc/init.d/iptables stop
systemctl stop firewalld
・それでも無理な場合
サービスの状態確認、エラーの場合は問題箇所も表示される
systemctl status [サービス名]
エラーログ確認
vi /var/log/[ログファイル]
jounalctl
(zabbix)Template OS Linux内のデフォルトのアイテムとその表示例
zabbixサーバって構築した後も監視項目のチューニングとか大変そう、と思っていたのですがデフォルトで存在するテンプレート「Template OS Linux」で一般的な監視項目(アイテム)は既に入っていたので「Template OS Linux」内の監視項目を整理します。
zabbixサーバ、エージェントのバージョンは「3.4.15」
※右側は監視している値の表示例
■General セクション
Host boot time : 2020/4/11 7:21:16
Host local time : 2020/5/13 15:14:21
Host name : ip-172-131-49-55
System information : Linux ip-172-131-49-55 4.4.0-1105-aws #112-Ubuntu SMP Wed Mar 18 05:11:57 UTC 2020 x86_64
System uptime : 32 days, 07:50:10
■Memory セクション
Available memory : 488.09 MB
Free swap space : 436.63 MB
Free swap space in % : 68.79%
Total memory : 990.65 MB
Total swap space : 634.76 MB
■Network interfaces セクション
Incoming network traffic on eth0 : 1.46 Kbps
Outgoing network traffic on eth0 : 2.51 Kbps
■OS セクション
Host boot time : 2020/4/11 7:21:16
Host local time : 2020/5/13 15:19:21
Host name : ip-172-131-49-55
Maximum number of opened files : 99246
Maximum number of processes : 32768
Number of logged in users : 1
System information : Linux ip-172-131-49-55 4.4.0-1105-aws #112-Ubuntu SMP Wed Mar 18 05:11:57 UTC 2020 x86_64
System uptime : 32 days, 07:50:10
■Performance セクション
Context switches per second : 86 sps
CPU idle time : 99.9%
CPU interrupt time : 0%
CPU iowait time : 0%
CPU nice time : 0%
CPU softirq time : 0%
CPU steal time : 0.02%
CPU system time : 0.02%
CPU user time : 0.07%
Interrupts per second : 47 ips
Processor load (1 min average per core) : 0
Processor load (5 min average per core) : 0
Processor load (15 min average per core) : 0
■Processes セクション
Number of processes : 129
Number of running processes : 1
■Security セクション
Checksum of /etc/passwd : 4980275739
Number of logged in users : 1
■Zabbix agent セクション
Agent ping : Up (1)
Host name of zabbix_agentd running : WebServer
Version of zabbix_agent(d) running : 3.4.15
KVMからVMwareWorkstationに移行する
何をするか
KVM上で動かしている仮想マシンのイメージファイルをWindowsマシン上のVMwareWorkstationで使えるように変換して使用する。
qemuマシン側
qemu-imgをインストールする。
yum install -y qemu-img
qemuの仮想マシンのイメージがある場所に移動する
cd /var/lib/libvirt/images/
イメージの変換を行う。
qemu-img convert -O vmdk [元ファイル].img [出力名].vmdk
上記のコマンドで出来たvmdkファイルをWinSCPなどで取り出す。
Windowsマシン側
VMwareWorkstation上で仮想マシンを動かすには「vmdkファイル」と「vmxファイル」が必要なので、フリーツールの「vmxMaker」をダウンロードする。
仮想マシンのディスク(vmdk)やメモリ容量、OSの種類等を選択して「vmxファイル」を作成する。
VMwareWorkstationの仮想マシンを開くから「vmxファイル」を選択して仮想マシンを起動する。
(bind)ルートDNSサーバとキャッシュサーバの関係とnamed.caについて
名前解決の流れを整理
https://www.xxx.jp というWebサイトにアクセスする場合
①クライアントAは「www.xxx.jp」のIPアドレスを知る為に、PCに設定されたDNSキャッシュサーバに名前解決を依頼する。
②名前解決を依頼された検索用DNSサーバはルートDNSサーバに問い合わせをする。
③ルートDNSサーバ自身は「www.xxx.jp」のIPアドレスは知らないが、「.jp」ドメインを管轄しているDNSサーバBのIPアドレスを知っているのでそのアドレスを返す。
④DNSキャッシュサーバはDNSサーバBに対して問い合わせをする。
⑤DNSサーバB自身は「www.xxx.jp」のIPアドレスは知らないが、「xxx.jp」ドメインを管轄しているDNSサーバCのIPアドレスを知っているのでそのアドレスを返す。
⑥DNSキャッシュサーバはDNSサーバCに対して問い合わせをする。
⑦DNSサーバCは「www.xxx.jp」のIPアドレスを知っているのでそのアドレスを返す。
⑧DNSキャッシュサーバはクライアントAに「www.xxx.jp」のIPアドレスを返す。
⑨DNSキャッシュサーバは「www.xxx.jp」のIPアドレスを元に「https://www.xxx.jp」へアクセスする。
DNSキャッシュサーバのパターン
①ISPが運用するDNSキャッシュサーバを使用する場合
一番スタンダードで特に追加の設定は不要。ONUからIPアドレスを自動取得するとISPのDNSキャッシュサーバも一緒に降ってくる。
②インターネット上のDNSキャッシュサーバを使用する場合
PCにインターネット上のDNSキャッシュサーバのアドレスを手動設定する。有名なDNS1サーバでgoogleの8.8.8.8などがある。
③自前でキャッシュサーバを用意する場合
PCに自前で用意したのDNSキャッシュサーバのアドレスを手動設定する。
named.caについて
自前でキャッシュサーバを用意する場合はLinuxのBIND等を使ってDNSキャッシュサーバを構築する必要がある。
名前解決の流れで記載した通り、DNSキャッシュサーバはルートDNSサーバのに問い合わせを行うのでルートDNSサーバの情報を持っている。デフォルトでは「named.ca」という名前のファイルに記載されていたので中身を見てみる。
; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net ; (2 servers found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900 ;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1472 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 518400 IN NS a.root-servers.net. . 518400 IN NS b.root-servers.net. . 518400 IN NS c.root-servers.net. . 518400 IN NS d.root-servers.net. . 518400 IN NS e.root-servers.net. . 518400 IN NS f.root-servers.net. . 518400 IN NS g.root-servers.net. . 518400 IN NS h.root-servers.net. . 518400 IN NS i.root-servers.net. . 518400 IN NS j.root-servers.net. . 518400 IN NS k.root-servers.net. . 518400 IN NS l.root-servers.net. . 518400 IN NS m.root-servers.net. ;; ADDITIONAL SECTION: a.root-servers.net. 518400 IN A 198.41.0.4 b.root-servers.net. 518400 IN A 199.9.14.201 c.root-servers.net. 518400 IN A 192.33.4.12 d.root-servers.net. 518400 IN A 199.7.91.13 e.root-servers.net. 518400 IN A 192.203.230.10 f.root-servers.net. 518400 IN A 192.5.5.241 g.root-servers.net. 518400 IN A 192.112.36.4 h.root-servers.net. 518400 IN A 198.97.190.53 i.root-servers.net. 518400 IN A 192.36.148.17 j.root-servers.net. 518400 IN A 192.58.128.30 k.root-servers.net. 518400 IN A 193.0.14.129 l.root-servers.net. 518400 IN A 199.7.83.42 m.root-servers.net. 518400 IN A 202.12.27.33 a.root-servers.net. 518400 IN AAAA 2001:503:ba3e::2:30 b.root-servers.net. 518400 IN AAAA 2001:500:200::b c.root-servers.net. 518400 IN AAAA 2001:500:2::c d.root-servers.net. 518400 IN AAAA 2001:500:2d::d e.root-servers.net. 518400 IN AAAA 2001:500:a8::e f.root-servers.net. 518400 IN AAAA 2001:500:2f::f g.root-servers.net. 518400 IN AAAA 2001:500:12::d0d h.root-servers.net. 518400 IN AAAA 2001:500:1::53 i.root-servers.net. 518400 IN AAAA 2001:7fe::53 j.root-servers.net. 518400 IN AAAA 2001:503:c27::2:30 k.root-servers.net. 518400 IN AAAA 2001:7fd::1 l.root-servers.net. 518400 IN AAAA 2001:500:9f::42 m.root-servers.net. 518400 IN AAAA 2001:dc3::35 ;; Query time: 24 msec ;; SERVER: 198.41.0.4#53(198.41.0.4) ;; WHEN: Thu Apr 05 15:57:34 CEST 2018 ;; MSG SIZE rcvd: 811
A~Mまでの13個のルートDNSサーバのアドレスが記載されている。この情報をもとに冒頭に書いた流れの「www.xxx.jp」の名前解決が出来ていることになる。
ちなみにこの情報は変更されることがあるので、自前でキャッシュサーバを用意する場合は定期的に変更確認をしないといつの間にかインターネット上のWebサイトに繋がらなくなることが考えられる。
因みにこのファイルの最新版は下記のリンクに「named.cache」という名前で存在する。
最新版
(vyos)vyosの初期設定
初期ID/PWは「vyos」です。
vyosをインストールするコマンドを入力。
install-system
※以下、[]内の値はデフォルト値です。何も入力せずに[Enter]を押下した場合[]内の値が適用されます。
進めるかどうかの確認なので、そのまま[Enter]
Would you like to continue? (Yes/No) [Yes]:
パーティションの方式を聞かれるので、そのまま[Enter]
Partition (Auto/Union/Parted/Skip) [Auto]:
インストール先のディスクを自動で見つけてくれるので、そのまま[Enter]
[]内には対象のディスクが表示されます。
Install the Image on? []:
進めるかどうかの確認なので、[Yes]を入力。
Continue? (Yes/No) [No]:
vyosが使用するディスクのサイズを聞かれるので、そのまま[Enter]
How big of a root partition should I create? (1000MB - 1074MB) [1074]MB:
設定ファイルの場所を聞かれるので、そのまま[Enter]
Which one should I copy to sda? [/opt/vyos/etc/config/config.boot]:
vyos(管理者)ユーザのパスワード入力と確認。
Enter vyos password: Retype vyos password:
起動プログラムのインストール先を聞かれるので、そのまま[Enter]
Which drive should GRUB modify the boot partition on? [sda]:
再起動するコマンドを入力。
reboot
(vyos)ノートPCを家庭用ルータにする
何をするか
使わなくなったノートPC上でvyosというネットワークOSを導入して、ノートPCを家庭用ルータとして使用してみます。
やる理由としてはvyosを使ってルータを作ってみたかっただけです。
環境
OS:Win8
ソフト:VMware Workstation 12 Player
↓ざっくり構成(before)

↓ざっくり構成(after)
※無線LANアダプタがあればvyos自体がAPにもなれます。

vyosの機能
vyosは企業などで使われる商用ルータと同等の機能があります。
家庭用ルータとしてはほぼ不要ですが…。
yvso機能wiki
WebキャッシュサーバやIPSecVPNは家庭でも使えるかも。
家庭用ルータに必要な機能を洗い出し
・送信元NAT
自宅のPCがインターネットに出る際に使用
・DHCP
自宅のPCがAPにアクセスした際にローカルアドレスを自動取得する為に使用
・DNS転送
ISP(WAN側)から自動取得したDNSの情報をDHCPクライアントに伝える事が出来ないので、自身がDNSサーバのように振る舞いISPのDNSへクエリを中継するため。
VMware Workstationの設定など
vyosのisoをダウンロードして仮想マシンを作成する
vyosのisoをダウンロード → vyos
仮想マシン、仮想ネットワークエディタの設定。
自動ブリッジではなくVMnetを使用したのは、今後の物理インタフェース追加も考えてインタフェースを明示的に指定する為です。
NATを使用しているのはホスト(ノートPC)に振られているグローバルIPをvyosで使用する為です。


ノートPC内部のイメージはこんな感じ。
USBNICを1つつけてるので物理NICが2つあります。

vyosの設定
初期設定は長くなるので別の記事で書きます
LAN側(eth2)、WAN側(eth3)のインタフェースを認識している事を確認。
vyos@vyos:~$ show interfaces
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
eth2 - u/u
eth3 - u/u
lo 127.0.0.1/8 u/u
::1/128
設定モードに移行してLAN側、WAN側それぞれのアドレスを設定。
ONUからのグローバルIP取得はDHCPです。
vyos@vyos:~$ configure vyos@vyos# set interfaces ethernet eth2 address 192.168.1.254/24 vyos@vyos# set interfaces ethernet eth3 address dhcp
SSHを有効にして今までの設定変更を反映。
これでターミナルソフトからSSH経由で接続できます。
vyos@vyos# set service ssh vyos@vyos# commit
LAN→WANへの送信元NATのルールを作成。
vyos@vyos# set nat source rule 900 translation address masquerade vyos@vyos# set nat source rule 900 source address 192.168.1.0/24 vyos@vyos# set nat source rule 900 outbound-interface eth3
DHCPサーバになる為の設定。
アドレスプールは 192.168.1.100-150
vyos@vyos# set service dhcp-server shared-network-name my_pool subnet 192.168.1.0/24 vyos@vyos# set service dhcp-server shared-network-name my_pool subnet 192.168.1.0/24 start 192.168.1.100 stop 192.168.1.150 vyos@vyos# set service dhcp-server shared-network-name my_pool subnet 192.168.1.0/24 default-router 192.168.1.254 vyos@vyos# set service dhcp-server shared-network-name my_pool subnet 192.168.1.0/24 dns-server 192.168.1.254
DNS転送の設定。
vyos@vyos# set service dns forwarding listen-on eth2
設定を保存して再起動。
vyos@vyos# commit vyos@vyos# save vyos@vyos# exit vyos@vyos:~$ reboot
使えそうな確認コマンドなど
コンフィグの確認。
vyos@vyos:~$ show configuration
インターフェースの状態確認。
vyos@vyos:~$ show interfaces
ルーティングテーブルの確認。
vyos@vyos:~$ show ip route
NATルールの確認。
vyos@vyos:~$ show nat source rules
現在の送信元NATの状態を確認。
vyos@vyos:~$ show nat source translations detail
完成版コンフィグ
vyos@vyos:~$ show configuration
interfaces {
ethernet eth2 {
address 192.168.1.254/24
duplex auto
hw-id 00:0c:29:0a:a4:89
smp_affinity auto
speed auto
}
ethernet eth3 {
address dhcp
duplex auto
hw-id 00:0c:29:0a:a4:93
smp_affinity auto
speed auto
}
loopback lo {
}
}
nat {
source {
rule 900 {
outbound-interface eth3
source {
address 192.168.1.0/24
}
translation {
address masquerade
}
}
}
}
service {
dhcp-server {
disabled false
shared-network-name my_pool {
authoritative disable
subnet 192.168.1.0/24 {
default-router 192.168.1.254
dns-server 192.168.1.254
lease 86400
start 192.168.1.100 {
stop 192.168.1.150
}
}
}
}
dns {
forwarding {
cache-size 150
listen-on eth2
}
}
ssh {
port 22
}
}
system {
config-management {
commit-revisions 20
}
console {
device ttyS0 {
speed 9600
}
}
host-name vyos
login {
user vyos {
authentication {
encrypted-password ****************
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
}
スループットの測定
回線速度計測サイトを使用して有線接続時の速度テストをしてみた結果。
※干渉をうけにくい有線接続でテスト。
・モデム—自宅のPC
下り:74Mbps 上り:4.5Mbps
・モデム—vyos—自宅のPC
下り:94Mbps 上り:5.6Mbps
無線アダプタを買ってAP設定をすれば高機能無線ルータとして実用的に使えるんじゃないか??
安定稼働するかどうかは分かりませんが。

