vyosでプライベートLAN内のVMをインターネット接続し、名前解決可能にする
- LAB用にEsxi上に開発LANというプライベートLAN環境を引きました。
- そこに配置したVMからインターネットに接続し、名前解決可能な状態にします。
構成
- 以下のような構成を考え、VM2から配置したvyosから家庭内LANを通してインターネット接続可能なように設定します。
- VM1
- 家庭内LAN側:192.168.11.41
- 開発LAN側:172.16.1.2
- VM2
- 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:~#
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:~#