Linuxをインターネットへのゲートウェイにする
背景
ESXi上で稼働しているVMをインターネットに接続したい
だが接続したいVMが稼働しているESXiとは異なるESXiにWi-Fiルータが接続されている
せっかくなのでWi-Fiルータが接続されているESXiにて稼働しているVMをルータ化して、他のVMはそいつをゲートウェイにしてインターネットに接続できるようにしてみる
インターネットに接続したい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がインターネットに抜けられるようになる!
Author And Source
この問題について(Linuxをインターネットへのゲートウェイにする), 我々は、より多くの情報をここで見つけました https://qiita.com/keiusukematsuda/items/586c804122170160b0e9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .