ずいぶん昔、まだ世の中にネットワークルータというハードウェアがほとんどなく、あったとしてもマニアックな超高級品であった時代、Linux-boxをルータとして使うIP-Masqueradeを組んだ・・・というのがLinuxとの最初の出会いであったなあ・・・(遠い目
時代はうつり、今や無線LANルーターがほとんどの家庭にあって、無線帯域を奪い合うような事態になっているわけだが。
さて、サーバを2台にしたことで外に出ているサーバは1台だけにして、もう1台は内側にサブネットを作って入れてしまう、という形になったので、懐かしのIP-Masqueradeの出番と相成った。今どき1000円もしないルータで設定もしないでそのまま使えてしまう機能なわけだが、Linuxでやるとなると、それなりの設定手順を踏まねばならない。
Centos7の場合、基本firewall-cmdでゴニョゴニョすることになる。
現状、
$ sudo firewall-cmd --get-active-zone public interfaces: ens1f0 enp4s0f0
こんな感じに2つのインターフェースはzone=publicで対等な感じになっている。
これを、まずは内向き、外向きに分けてやる。
$ sudo nmcli c mod ens1f0 connection.zone external $ sudo nmcli c mod enp4s0f0 connection.zone internal $ sudo firewall-cmd --get-active-zone internal interfaces: enp4s0f0 external interfaces: ens1f0
そして、zone=externalに対して
$ sudo firewall-cmd --zone=external --add-masquerade --permanent $ sudo firewall-cmd --reload sudo firewall-cmd --zone=external --query-masquerade yes $ sudo cat /proc/sys/net/ipv4/ip_forward 1
なお、ここまでの各種設定でfirewall-cmdでポートを開いて来ていたが、すべてzone=publicで設定していたので、すべての設定をzone=externalかzone=internalかに振り分けてやっておかないと、色々なサービスが動かない、という目に遭う。
これでいいはずなんだけど、なんだかまだ内から外に出ていけない。何かがおかしい。
あと、internalはすべてオープンということでzone=trustedという設定にする例もアチラコチラで見られるのだが。
解決。
DHCPのデフォルトルーティングの設定が間違っていた。