良い感じのタイトルにならないやつ
構成
よくある話だと思うけど、2つのnicを持っているLinuxマシンに対して、internal segment側のマシンのゲートウェイとして動作させる、というやつ。
実は大昔に一度構築したけど、その時のメモがないので再構築したというお話。
図中internal segmentのマシンから、public segmentおよびインターネットへアクセスできるようにする設定を行います。
2nic持ってる対象のLinuxは、CentOS 7.5 1804 minimalでセットアップしてあります。
概要
internal segmentのマシン
- デフォルトゲートウェイは172.16.1.1
- DNSも172.16.1.1
- いわゆる「ふつーの設定」
設定
firewalld
以下のコマンドをぶち込めばだいたいOKです。
firewall-cmd --permanent --zone=internal --change-interface=ens224 firewall-cmd --permanent --zone=internal --add-masquerade firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o ens192 -j MASQUERADE firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens224 -o ens192 -j ACCEPT firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i ens192 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT firewall-cmd --reload
firewall-cmd --zone=internal --change-interface=ens224
で、ens224
のネットワークをinternal
という名前を付けて管理します。
ちなみに昔からよく見かける/proc/sys/net/ipv4/ip_forward
を1
にする手順は、--add-masquerade
の手順で行われるので実は不要。
念のためOSをリブートしても設定が保持されることを確認しておくとbetter。
これで、internal segmentのマシンから、public segmentへのsshやhttpアクセスが可能になるはず。
※ DNS設定は何もしていないので、この時点ではIPアドレスでのアクセスのみ。
DNS
ルーターLinuxへDNSサーバーをお手軽に立てるためにdnsmasqをインストール。
# yum install dnsmasq
最小限の設定
※ 設定本体は/etc/dnsmasq.conf
だけど、/etc/dnsmasq.d/*.conf
を外部ファイル読み込みしてくれるので、そっちに定義
# cat /etc/dnsmasq.d/local-dns.conf domain-needed bogus-priv
起動と有効化
# systemctl enable dnsmasq # systemctl start dnsmasq
firewalldの除外設定
# firewall-cmd --add-service=dns --permanent --zone=internal # firewall-cmd --reload
これでinternal networkのマシンは、172.16.1.1に構築したDNSサーバーで名前解決しつつ、public networkへ接続可能になる。
yum install ruby
などで確認。
参考
cacooさんのフリープランで作成可能な図の上限超えてしまったので、draw.io初めて使ってみました。
ESXiで追加のネットワークを作成して放置してたやつ
firewalld確認コマンド
firewall-cmd --get-active-zones firewall-cmd --list-all --zone=internal firewall-cmd --direct --get-all-rules