たぶん図で書かないと分かりにくいと思うので、YAMAHAのフリーアイコンを使って構成図を作ってみました。
手作り感たっぷりに仕上がっています。
ローカルIPはフレッツで使っているクセで無意識に付けてました。
今は問題なく動いていますが、今回は数日間ほど悩んだのです。
今回のキモになった部分はiptablesでした。
とにもかくにもiptablesでした。
ルータを使うという手もありますが、どうしても2台でやりたかったので1台をゲートウェイ兼ウェブサーバーとして動作させています、こいつをローカルAとします。
ローカルネットワークの構成はとくに問題なく終わったのですが、できなかったところが192.168.24.200をローカルBとして話を進めますが、このローカルBからYumアップデートもできないし、それゆえにMySQLもインストールできない。
要はパケットが外にでない。
パッと思いついたのが、VPNの時にもやったiptablesのNatとMasquarade。
パケットの転送をする、ルータの機能の一つだ。
ポートフォワードをやるとして、ほかにもYumができないなど情報をググってみてIPV6が有効だったらできないとかいろいろと情報は出てくるけど、今の状況はそれ以前の問題だろう。
そのほかにも/etc/sysconfig/networkや/etc/sysconfig/network-scripts/ifcfg-eh0やらをいじりにいじりまくったけどうまくいかない。
VPNでやった時と同じかどうかはっきり覚えてないけど、もっかい調べなおしてPostroutingの設定を追加したりした。
-A POSTROUTING -s 192.168.24.0/24 -o eth0 -j MASQUERADE -A FORWARD -s 192.168.24.0/24 -i eth1 -o eth0 -j ACCEPT -A OUTPUT -d 10.0.0.0/8 -o eth0 -j DROP -A OUTPUT -d 176.16.0.0/12 -o eth0 -j DROP -A OUTPUT -d 192.168.0.0/16 -o eth0 -j DROP -A OUTPUT -d 127.0.0.0/8 -o eth0 -j DROP -A RH-Firewall-1-INPUT -d 192.168.24.0/24 -j ACCEPT
つな感じです。
そして目的通りにPINGは応答するようになりましたが、IPアドレスだった場合だけ・・・
ドメインだとダメなんです。
ほい、パケットは抜けるようになりましたが、DNSがおかしい。
あー、DNSじゃなくておかしいのはサーバー側か。
やはり内向きのDNSが必要なのか!と間違った方向にどんどん進んでいく、それだけ必死だったんですよ。
んで内向きのキャッシュDNSサーバー兼、ゲートウェイ兼、ウェブサーバーという状態に。
ローカルBからも名前解決できるようになりましたが、まだYumアップデートができない。
単にdigだったりnslookupはできるのだが。
Tracerouteをしてみるとゲートウェイを抜けていない、おもいっきし。
経路がありませんという結果 がでてしまう。
そして同じことをやったような気に何度かなりつつも、昨日のお昼くらいにやっとというか、ついにiptablesをポートフォワードの設定でだけにしてみることにした。
さっき書いた設定ですね。
すると!これの方向が良かったようで、Yumアップデートも動いてくれました、どうやらフィルタリングされていたようです。
namedも停止して試しても、/etc/resolv.confの設定をやり直すとなんなく動いた。
よっしゃあ~っと思ったが、また作業しようと起動したらローカルBにSSHが繋がらない、今度はローカルBからローカルAにはパケットがでて通信できるけど、ローカルAからローカルBへのアクセスができなくなってしまったようだ。
なにやってんだか。
iptablesを見ると
-A RH-Firewall-1-INPUT -d 192.168.24.0/24 -j ACCEPT
が抜けていた。
あとはRH-Firewal-1-INPUTの記述の位置を下げてみたら、元々あったフィルタリングの設定を元に戻してもちゃんと動いてくれた。
今回は2台だから必要はないけど、台数を増やすときはこの設定をベースにしてPREROUTINGの設定を追加すればいいはず・・・たぶん。
単純なネットワークの設定はこれでいいはずだから、ほかの部分はサーバー側の設定だから何とかなるだろうと予測。
自宅サーバーを作っていた時にフレッツのCTUでやってた作業が今回の手作業にあたるけど、これもスクリプト化すればグローバル側のIPアドレスやローカルのIPアドレスを指定するだけでOKなはず。
イメージするとそうなる。
でもって今回はルーターは使ってないので短くまとまっているけど、今後ルーティングが絡んで来るとまったく別の銀河系みたいな話になるんだろうなあって思う。
今回のiptablesの設定
# iptables-setting *nat :PREROUTING ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A POSTROUTING -s 192.168.24.0/24 -o eth0 -j MASQUERADE COMMIT # # *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -s 192.168.24.0/24 -i eth1 -o eth0 -j ACCEPT -A OUTPUT -d 10.0.0.0/8 -o eth0 -j DROP -A OUTPUT -d 176.16.0.0/12 -o eth0 -j DROP -A OUTPUT -d 192.168.0.0/16 -o eth0 -j DROP -A OUTPUT -d 127.0.0.0/8 -o eth0 -j DROP :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT -A RH-Firewall-1-INPUT -d 192.168.24.0/24 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT