Skip to content

VLAN を構築し、インターネットへ接続する

Published:7min

今更だが、私の GNS3 の環境は Apple Silicon で動かしている OrbStack VM 上に構築している。GNS3 on Apple Silicon に詳しい手順が書かれているので、参考にしてほしい。

今回は、GNS3 上で L2 スイッチとルーターを使って2つの VLAN を作成し、それぞれのエンドデバイスがインターネットに接続できるようにしました。以下の画像が今回構築したとトポロジーになる。

PC1 を VLAN10 に、PC2 を VLAN20 に所属させる。

スイッチ

スイッチの設定は以下のように行った。ここで VLAN の設定を行う。

Switch#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/0, Et0/1, Et0/2, Et0/3
                                                Et1/0, Et1/1, Et1/2, Et1/3
                                                Et2/0, Et2/1, Et2/2, Et2/3
                                                Et3/0, Et3/1, Et3/2, Et3/3
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
Switch#conf t
Switch(config)#vlan 10
Switch(config-vlan)#name VLAN-10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name VLAN-20
Switch(config-vlan)#exit
Switch(config)#int e1/0
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int e2/0
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int e0/0
Switch(config-if)#switchport trunk encapsulation dot1q
Switch(config-if)#switchport mode trunk
Switch(config-if)#switchport trunk allowed vlan 10,20
Switch(config-if)#exit
Switch(config)#end
Switch#show vlan brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Et0/1, Et0/2, Et0/3, Et1/1
                                                Et1/2, Et1/3, Et2/1, Et2/2
                                                Et2/3, Et3/0, Et3/1, Et3/2
                                                Et3/3
10   VLAN-10                          active    Et1/0
20   VLAN-20                          active    Et2/0
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
Switch#show int trunk

Port           Mode             Encapsulation  Status        Native vlan
Et0/0          on               802.1q         trunking      1

Port           Vlans allowed on trunk
Et0/0          1,10,20

Port           Vlans allowed and active in management domain
Et0/0          1,10,20

Port           Vlans in spanning tree forwarding state and not pruned
Et0/0          1,10,20

ルーター

ルーターの設定は以下のように行った。ここで作成した VLAN をルーティングできるように設定し、インターネットに接続できるようにした。

インターネットへ接続するために GNS3 が公式ドキュメントの「Connect GNS3 to the Internet (local server)」に従って Cloud を設定した。インターフェースは virbr0 である。

設定後 GNS3 を動かしている OrbStack VM へログインし、ip a コマンドでインターフェースの IP アドレスを確認する。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
...
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:6c:f1:43 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
...

これより 192.168.122.1 が default gateway として設定できる IP であることがわかる。

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int f0/0
R1(config-if)#no shutdow
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#
*Sep  4 13:41:45.903: %LINK-3-UPDOWN: Interface FastEthernet0/0, changed state to up
*Sep  4 13:41:46.903: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/0, changed state to up
R1(config)#int f0/0.10
R1(config-subif)#enc
R1(config-subif)#encapsulation do
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip address 192.168.10.1 255.255.255.0
R1(config-subif)#exit
R1(config)#int f0/0.20
R1(config-subif)#en
R1(config-subif)#encapsulation do
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip address 192.168.20.1 255.255.255.0
R1(config-subif)#end
R1#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
R1#conf t
R1(config)#int g1/0
R1(config-if)#ip address 192.168.122.10 255.255.255.0
R1(config-if)#end
R1#ping 1.1.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 88/97/120 ms
R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 192.168.122.1 to network 0.0.0.0

C    192.168.122.0/24 is directly connected, GigabitEthernet1/0
C    192.168.10.0/24 is directly connected, FastEthernet0/0.10
C    192.168.20.0/24 is directly connected, FastEthernet0/0.20
S*   0.0.0.0/0 [1/0] via 192.168.122.1

Cloud1 と繋げている GigabitEthernet1/0 部分の IP アドレスを 192.168.122.10 として設定した。この時のサブネットマスクは OrbStack で確認した範囲に合わせている。

この時点でルーターからインターネットに接続できるようになっている。Cloudflare の 1.1.1.1 へ ping の痩身に成功しているが、以下の通り PC1 と PC2 はまだインターネットに接続できない。

PC1> ping 192.168.20.10 # PC2 への ping

84 bytes from 192.168.20.10 icmp_seq=1 ttl=63 time=86.242 ms
84 bytes from 192.168.20.10 icmp_seq=2 ttl=63 time=29.429 ms
84 bytes from 192.168.20.10 icmp_seq=3 ttl=63 time=17.276 ms
84 bytes from 192.168.20.10 icmp_seq=4 ttl=63 time=36.174 ms
84 bytes from 192.168.20.10 icmp_seq=5 ttl=63 time=15.770 ms

PC1> ping 192.168.122.10 # R1 の GigabitEthernet1/0 への ping

84 bytes from 192.168.122.10 icmp_seq=1 ttl=255 time=109.748 ms
84 bytes from 192.168.122.10 icmp_seq=2 ttl=255 time=22.078 ms
84 bytes from 192.168.122.10 icmp_seq=3 ttl=255 time=16.743 ms
84 bytes from 192.168.122.10 icmp_seq=4 ttl=255 time=27.376 ms
84 bytes from 192.168.122.10 icmp_seq=5 ttl=255 time=40.664 ms

PC1> ping 1.1.1.1 # Cloudflare の ping

1.1.1.1 icmp_seq=1 timeout
1.1.1.1 icmp_seq=2 timeout
1.1.1.1 icmp_seq=3 timeout
1.1.1.1 icmp_seq=4 timeout
1.1.1.1 icmp_seq=5 timeout

PC1> ping 192.168.122.1 # virbr0 の ping

192.168.122.1 icmp_seq=1 timeout
192.168.122.1 icmp_seq=2 timeout
192.168.122.1 icmp_seq=3 timeout
192.168.122.1 icmp_seq=4 timeout
192.168.122.1 icmp_seq=5 timeout

NAT の設定

NAT の設定を行うことで、PC1 と PC2 がインターネットに接続できるようになる。

インターネットへの接続は GigabitEthernet1/0 で行っているため、そのインターフェースを ip nat outside として設定する。また、VLAN10 と VLAN20 はそれぞれ FastEthernet0/0.10 と FastEthernet0/0.20 で接続しているため、これらのインターフェースを ip nat inside として設定する。

ip nat inside でインターフェースが内部ネットワーク(通常はプライベートIPアドレス空間)に接続されていることを示し、ip nat outside でインターフェースが外部ネットワーク(通常はインターネットなどのパブリックネットワーク)に接続されていることを示す。

R1(config)#int g1/0
R1(config-if)#ip nat outside
R1(config-if)#exit
R1(config)#int fa0/0.10
R1(config-subif)#ip nat inside
R1(config-subif)#exit
R1(config)#int fa0/0.20
R1(config-subif)#ip nat inside
R1(config-subif)#end
R1(config)#ip nat inside source list 1 interface g1/0 overload
R1(config)#access-list 1 permit 192.168.10.0 0.0.0.255
R1(config)#access-list 1 permit 192.168.20.0 0.0.0.255

それぞれ設定した後 ip nat inside source list 1 interface g1/0 overload で NAT の設定を行う。これにより、VLAN10 と VLAN20 からの通信が GigabitEthernet1/0 へ送信される際に NAT が適用するようになる。このコマンドの対象は access-list 1 である。

access-list 1 は 192.168.10.0 と 192.168.20.0 のネットワーク範囲とのやりとりを許可するように設定している。

これで PC1 と PC2 がインターネットに接続できるようになる。

PC1> ping 1.1.1.1

84 bytes from 1.1.1.1 icmp_seq=1 ttl=50 time=120.196 ms
84 bytes from 1.1.1.1 icmp_seq=2 ttl=50 time=79.772 ms
84 bytes from 1.1.1.1 icmp_seq=3 ttl=50 time=51.237 ms
84 bytes from 1.1.1.1 icmp_seq=4 ttl=50 time=67.722 ms
84 bytes from 1.1.1.1 icmp_seq=5 ttl=50 time=84.699 ms

Previous Post
特定のホストのみ NAT overload(PAT)を実行する
Next Post
STP のルートポート、指定ポートの選出