お疲れ様です。agiです。
今日はルーターやスイッチを駆使して社内LAN用のNATゲートウェイのような仕組みを作る実験を行いました!
~ざっくり構成図~

[家庭用ルーター](インターネット接続用)
IPアドレス:192.168.11.1/24
[Ubuntu24.04](NATゲートウェイ)
IPアドレス(WAN側):192.168.11.8/24 (家庭用ルーターのDHCPで取得)
IPアドレス(LAN側):192.168.10.2/24 (静的IP)
route: 192.168.20.0/24 via 192.168.10.1
[Cisco892J](社内LAN用ルーター)
FastEthernet0:vlan10
FastEthernet1:vlan20
vlan10:192.168.10.1/24 (NAT側)
vlan20:192.168.20.1/24 (社内LAN側)
デフォルトゲートウェイ:192.168.10.2 (NATゲートウェイ)
※Cisco892JのFa0-7はL2スイッチポートなので直接IPアドレスは設定できません。
そのためvlan10とvlan20を作成してIPアドレスを設定しています。
[Catalyst2960](社内LAN用スイッチ)
FastEthernet0/1-2:vlan20
[Windows11](社内LAN用PC)
IPアドレス:192.168.20.10/24
デフォルトゲートウェイ:192.168.20.1
↓これらの機器を使います!

実験前の状態
クライアントPCはこのような状態で、Wi-Fiを切断してネットワークに接続できない状態となっております。

手順
Ubuntu24.04 に NAT ゲートウェイの設定を行う
- IPアドレスを設定します。
ip a
でIPアドレスとインターフェース名を確認しておきます。- Linuxをルーターとして設定できるようにします。
- 静的ルートを設定します。
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADEsudo ip route add 192.168.20.0/24 via 192.168.10.1
・上記のコマンドについて
sysctl -w net.ipv4.ip_forward=1
Linuxをルーターとして設定するためのコマンドで、-w
は一時的、net.ipv4.ip_forward=1
はIPパケットの転送を有効にする設定です。
1が有効、0が無効的なあれです。iptables -t nat -A POSTROUTING -o wlp2s0 -j MASQUERADE
NATを有効にするためのコマンドです。
-t nat
はNATテーブルを指定-A POSTROUTING
はパケット送信後に処理を追加-o wlp2s0
は出力インターフェースwlp2s0(wifi側)から出ていくパケットに対して-j MASQUERADE
はアドレス変換を行うという意味です
→ 内部IPアドレスを外部IPアドレス(UbuntuのWAN側のIP)に変換して、インターネットに接続可能になります。
Windows11 に社内LAN用の IP アドレスを設定する
- ネットワークの設定を開きます。
- イーサネットのプロパティを開きます。
- IPアドレス、サブネットマスク、デフォルトゲートウェイを設定します。

Cisco892J に社内LAN用の IP アドレスを設定する
- コンソールケーブルで接続します。
- ルーターの設定を行っていきます。
- vlan10,20の作成
- Fa0,Fa1に対してのvlan割り当て
- IPアドレスの設定
- デフォルトゲートウェイの設定
conf t
vlan 10
exit
vlan 20
exit
interface vlan10
ip address 192.168.10.1 255.255.255.0
no shutdown
exit
interface vlan20
ip address 192.168.20.1 255.255.255.0
no shutdown
exit
interface FastEthernet0
switchport mode access
switchport access vlan 10
exit
interface FastEthernet1
switchport mode access
switchport access vlan 20
exit
ip route 0.0.0.0 0.0.0.0 192.168.10.2

Catalyst2960 の設定
- コンソールケーブルで接続します。
- スイッチの設定を行っていきます。
- vlan20の作成
- Fa0/1〜2 に対してのvlan割り当て
conf t
vlan 20
name CLIENT_VLAN
exit
interface FastEthernet0/1
switchport mode access
switchport access vlan 20
exit
interface FastEthernet0/2
switchport mode access
switchport access vlan 20
exit

※余談
設定を行っている際に、下記のような警告が出まくっていました。
%CDP-4-NATIVE_VLAN_MISMATCH: Native VLAN mismatch discovered on FastEthernet1 (20), with Switch FastEthernet0/1 (1).
これは、Cisco892JのFa1がvlan20に設定されているのに対して、Catalyst2960のFa0/1がvlan1に設定されていた(初期値)ことで出ている警告っぽいです。
設定中だったので致し方ないですが、1分おきくらいに出てきてなかなかうるさかったです(笑)
疎通テスト
Windows11からPingを打っていきます。
ping 192.168.10.1 # Ubuntu24.04のLAN側IP
ping 8.8.8.8 # インターネット側IP


通りました!!!やったー!すごい!
Edgeも開いてみましたが、インターネットに接続できていました!
NAT確認コマンド
sudo iptables -t nat -L -n -v
NATの設定を詳細付きで確認するコマンドです。
設定前は何も表示されませんでしたが、設定後は以下のように表示されていました。

- pkts:NAT変換されたパケット数
- bytes:NAT変換されたデータ量
ということで、ガッツリ成功してそうです!
まとめ
社内LANからNATゲートウェイを通して外部インターネットに接続というのは一般的な構成かと思いますが、
自分で実際に作成してみることで概念の理解がより深まった気がします。
また、クラウド環境でよく使われるNATゲートウェイも、今回構築した仕組みと同様に、
内部IPアドレスをNATゲートウェイが持つグローバルIPに変換して外部通信を行うものなのでしょう。
ネットワーク関連の実験はいろいろ試したいことがあるので、今後もやっていきます!