サーバー2台で構成を作ってみた

たぶん図で書かないと分かりにくいと思うので、YAMAHAのフリーアイコンを使って構成図を作ってみました。
手作り感たっぷりに仕上がっています。

network01

ローカル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

 

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です