とあるシステムの中の人

プログラミング、育児、武道、3Dグラフィック、ゲーム開発

vyosでプライベートLAN内のVMをインターネット接続し、名前解決可能にする

vyosでプライベートLAN内のVMをインターネット接続し、名前解決可能にする

  • LAB用にEsxi上に開発LANというプライベートLAN環境を引きました。
  • そこに配置したVMからインターネットに接続し、名前解決可能な状態にします。

構成

  • 以下のような構成を考え、VM2から配置したvyosから家庭内LANを通してインターネット接続可能なように設定します。
  • VM1
    • 家庭内LAN側:192.168.11.41
    • 開発LAN側:172.16.1.2
  • VM2
    • 開発LAN側:172.16.1.3
  • vyos
    • 家庭内LAN側:192.168.11.7
    • 開発LAN側:172.16.1.1

SNATの設定

  • 今回設定するのはSNATの設定だけです。
  • 以下はvyosのIP構成です。
vyos@vyos:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:0d:58 brd ff:ff:ff:ff:ff:ff
    inet 192.168.11.7/24 brd 192.168.11.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe33:d58/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:0d:62 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.1/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe33:d62/64 scope link 
       valid_lft forever preferred_lft forever
vyos@vyos:~$ 
  • インターネット(家庭内LAN)に面しているインターフェースにSNATの設定を行います。
  • 設定前だと以下のように名前解決ができません。
root@ttmp-virtual-machine:~# dig @8.8.8.8 google.com
;; communications error to 8.8.8.8#53: timed out
^Croot@ttmp-virtual-machine:~#
  • 以下のようにSNATを設定してみます。
vyos@vyos# set nat source rule 108 outbound-interface eth0
[edit]
vyos@vyos# set nat source rule 108 source address 172.16.1.0/24
[edit]
vyos@vyos# set nat source rule 108 translation address 192.168.11.7
[edit]
vyos@vyos# commit
[edit]
vyos@vyos# save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@vyos# 
  • インターネット接続ができるようになり、外部のNAME_SERVER_IPに接続できるようになったため、名前解決できるようになりました。
root@ttmp-virtual-machine:~# dig @8.8.8.8 google.com

; <<>> DiG 9.18.18-0ubuntu0.22.04.1-Ubuntu <<>> @8.8.8.8 google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58886
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;google.com.            IN  A

;; ANSWER SECTION:
google.com.     171 IN  A   172.217.26.238

;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Sun Jan 14 08:32:11 JST 2024
;; MSG SIZE  rcvd: 55

root@ttmp-virtual-machine:~#