LoginSignup
3
2

More than 5 years have passed since last update.

Linuxをインターネットへのゲートウェイにする

Posted at

背景

ESXi上で稼働しているVMをインターネットに接続したい
だが接続したいVMが稼働しているESXiとは異なるESXiにWi-Fiルータが接続されている
せっかくなのでWi-Fiルータが接続されているESXiにて稼働しているVMをルータ化して、他のVMはそいつをゲートウェイにしてインターネットに接続できるようにしてみる

image.png

インターネットに接続したいVM : VM2
Wi-Fiルータが接続されているESXiにて稼働しているVM : VM1

※前提としてVM1がすでにインターネット接続できている状態とする

環境

VM OS : RHEL7
ESXi Version : 6.5U1
Wi-Fiルータ : どっかのUQWiMaxモバイルルータにクレードルをぶっ刺したやつ

いざ実践

以下のような流れで行う

1.VM1にてフォワーディング有効化設定
2.VM1にてNAT設定
3.VM2にてGatewayの変更

[1] VM1にてフォワーディング有効化設定

カーネルの設定をいじくる
デフォルトでip_forwardは無効になっている


 # cat /proc/sys/net/ipv4/ip_forward
 0

これを有効化する


 # echo 1 > /proc/sys/net/ipv4/ip_forward
 # cat /proc/sys/net/ipv4/ip_forward
 1

これだけだと再起動したときに再び無効化されてしまうため、恒久的に有効化されるように/etc/sysctl.confに以下のエントリーを追加する。

net.ipv4.ip_forward = 1

[2] VM1にてNAT設定

このままだとVM2からインターネットへの通信はできるが、インターネットからVM2への帰りの通信ができない。
なぜならWi-FiルータがNW2(10.0.0.0/24)の経路を知らないため
Wi-Fiルータにスタティックルートを登録することができればよいのだが、今回それはできない

そのためVM1にてNATができるように設定する必要がある
LinuxでNATをさせるにはiptables/firewalldを使用するのが手っ取り早い
RHEL7/CentOS7ではデフォルトでfirewalldが動作しており、firewallの設定でごにょごにょやれればよいがfirewallの設定に慣れていないため、今回はiptablesの関連パッケージをインストールしてiptablesでNATを実現させる

まずはfirewalldを停止させておく

 # systemctl stop firewalld
 # systemctl disable firewalld

次にiptables関連パッケージをインストールする

# yum install -y iptables-devel iptables-services

iptabelsを起動する

 # systemctl start iptables
 # systemctl enable iptables 

NATを設定する

 # iptables -t nat -A POSTROUTING -o ethXXX -j MASQUERADE 

※ethXXXはNW1側のインターフェール名

[3]VM2にてGatewayの変更

VM2のデフォルトゲートウェイをVM1のNW2のIFのIPアドレスにする

これでVM2がインターネットに抜けられるようになる!

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2