- 締切済み
同一セグメントでのLVS
LinuxでLVSを利用してロードバランサを構築しています。 構成1: LB[keepalived(192.168.1.1)]仮想(192.168.0.3) A[Apache(192.168.0.1)] B[Apache(192.168.0.2)] 構成2: A[Apache+keepalived(192.168.0.1)]仮想(192.168.0.3) B[Apache(192.168.0.2)] DSASのページなどを参考にしているのですが、構成1の3台構成NATであれば問題なく動きます。しかし構成2の同一セグメントでサーバそのものに仮想を持たせるとうまくいきません。どうもAが仮想を持った際に192.168.0.2への振り分けが発生しても、自身で処理しようとしているのか失敗してしまいます。設定は以下の通りです。何が足りないのか教えて頂けると助かります。尚、問題切り分けとしてvrrpは片系です。 ---keepalived.conf virtual_server_group HTTP3 { 192.168.0.3 80 } virtual_server group HTTP3 { delay_loop 10 lvs_sched rr lvs_method DR protocol TCP virtualhost 192.168.0.3 real_server 192.168.0.1 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /test.html status_code 200 } connect_timeout 3 } } real_server 192.168.0.2 80 { weight 1 inhibit_on_failure HTTP_GET { url { path /test.html status_code 200 } connect_timeout 3 } } } vrrp_instance VI3 { state MASTER interface bond0 lvs_sync_daemon_interface bond0 garp_master_delay 5 virtual_router_id 3 priority 100 nopreempt advert_int 1 virtual_ipaddress { 192.168.0.3/24 dev bond0 } } --- ---投入コマンド echo 0 > /proc/sys/net/ipv4/conf/bond0/rp_filter iptables -t mangle -A PREROUTING -d 192.168.0.3 -j MARK --set-mark 1 ip rule add prio 3 fwmark 1 table 3 ip route add local 0/0 dev lo table 3 iptables -t nat -A PREROUTING -p tcp -d 192.168.0.3 -j REDIRECT ---
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- iptablesでFTPのパッシブモード通信許可
こんにちは。 iptablesの学習でテスト用のFWサーバーと2台のWebサーバーをつくりました。 いまはForwardでアクセスごとに転送先を振り分ける実験をしています。 FTPのForward設定でわからないことがあるので質問させてください。 やりたいこと: ip_conntrack_ftpを組み込めばiptablesにいちいちパッシブ通信の使用ポートすべてを指定しなくても、モジュールが自動で制御してくれるという情報をネットで見かけ、それをやってみようと考えています。ところがどうがんばってもFTPのパッシブモードがつながりません。FTP以外のサービス、たとえばDNS, NTP, HTTP等のForwardは問題なく行えています。 環境: FWサーバー → CentOS6 iptablesで外部からのアクセスをブロックしたり、振り分けたり。 WEBサーバー → CentOS6 apacheとvsftpdでWebサーバーを構成。iptables無効です。 ルーター → 業務用ですがファイアウォール等はすべて無効になっています。 111.222.333.0はグローバルIPアドレスです。 192.168.1.0はローカルIPアドレスです。 -eth0(WEB_SERVER1) | 192.168.1.2(→111.222.333.2) (ONU)-(ROUTER)-eth0(FW_SERVER)eth1----| 111.222.333.1(eth0) | 111.222.333.2(eth0:1) -eth0(WEB_SERVER2) 111.222.333.3(eth0:2) 192.168.1.3(→111.222.333.3) 192.168.1.1(eth1) FWサーバーのiptable設定: net.ipv4.ip_forward = 1 ip_conntrack_ftpモジュール有効 ip_nat_ftpモジュール有効 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP . .(一部省略) . # HTTP iptables -A FORWARD -p tcp -i eth0 -o eth1 -m multiport --dport 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -i eth1 -o eth0 -m multiport --sport 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT # FTP(ここをどうしたらいいのかわからない) iptables -A FORWARD -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --sport 21 -j ACCEPT # Webserver1 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.2 -j DNAT --to-destination 192.168.1.2 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.2 -j SNAT --to-source 111.222.333.2 # Webserver2 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.3 -j DNAT --to-destination 192.168.1.3 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.3 -j SNAT --to-source 111.222.333.3 上記設定でFTPのForward部分をmultiportにしてポート20を入れたり除いたり、NEWやESTABLISHEDやRELATEDを入れたり消したり、いろいろ試行錯誤していますがFilezillaで下のようなエラーがでます。 PASV レスポンス: 227 Entering Passive Mode (111,222,333,2,92,226). コマンド: LIST エラー: 接続タイムアウト エラー: ディレクトリ一覧表示の取り出しに失敗しました 説明が長くて恐縮ですがよろしくお願いします。 <(_ _)>
- ベストアンサー
- ネットワーク
- ポートフォワードについて
よろしくお願いいたします。 Linux上で2枚のLANカードでルーターを構築中です。 環境は、 eth0:インターネットへ(外へ) eth1:ローカルネット(内へ) 接続しています。 設定したiptables(ポートフォワードの部分)は、以下のとおりです。 iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:80 iptables -A FORWARD -i eth0 -p tcp --dport http -j ACCEPT iptables -A FORWARD -o eth0 -p tcp --sport http -j ACCEPT 実際外部から内部のwebサーバーにつながるのですが、 ルータ上から、ルータに割り当てられたグローバルIPアドレスで、 内部webサーバのホームページを見ようとすると見れません。 何か他に設定しないといけないのでしょうか?
- 締切済み
- その他(OS)
- 外部コマンドに変数を使うにはどうしたらよいのでしょうか
perlで書いたCGIでアクセスしてきたマシンのIPを取得 $user_ip = $ENV{'SERVER_ADDR}; 外部コマンドでiptableの設定を行うようにしたいのですが、以下のようにコマンドに変数($user_ip)を指定することができません。 system ("iptables -t nat -A PREROUTING -d $user_ip -i eth0 -j DNAT --to 192.168.0.10") どなたか解決策をお願いします。
- ベストアンサー
- Perl
- iptablesでアドレス変換したい
初心者です。 iptablesの勉強中ですが、アドレスの変換がうまくできず行き詰っています。 下図のように Mannaka をはさんで隔離された実験環境をつくりました。ここでやりたいことは、とにかくどんなアクセスやプロセスでもいいので、Mannaka をはさんで 192.168.10.10 <--> 192.168.20.100 192.168.10.20 <--> 192.168.20.200 というアドレス変換を実現したいということです。実験なのでセキュリティは度外視し、とにかくつながることを優先しています。Server1とServer2ではWebサーバーが動いていて、Apacheのインストールページが表示されます。 (192.168.20.100) Server1―― | |―(eth1)Mannaka(eth0)―――PCs(192.168.10.X) | (eth0=192.168.10.10)Mannaka IP Server2―― (eth1=192.168.20.10)Mannaka IP (192.168.20.200) --- (eth0:1=192.168.10.100)Server1 IP (eth0:2=192.168.10.200)Server2 IP iptablesの設定は下記のようにしました。 ---------- ---------- #!/bin/sh service iptables restart echo 1 > /proc/sys/net/ipv4/ip_forward iptables -F iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -A FORWARD -d 192.168.10.10 -s 0.0.0.0 -j ACCEPT iptables -A FORWARD -d 0.0.0.0 -s 192.168.10.10 -j ACCEPT iptables -A FORWARD -d 192.168.10.20 -s 0.0.0.0 -j ACCEPT iptables -A FORWARD -d 0.0.0.0 -s 192.168.10.20 -j ACCEPT iptables -t nat -A PREROUTING -d 192.168.10.10 -j DNAT --to 192.168.20.100 iptables -t nat -A PREROUTING -d 192.168.10.20 -j DNAT --to 192.168.20.200 iptables -t nat -A POSTROUTING -s 192.168.20.100 -j SNAT --to 192.168.10.10 iptables -t nat -A POSTROUTING -s 192.168.20.200 -j SNAT --to 192.168.10.20 ---------- ---------- 意図としては、 192.168.10.10へのアクセスがServer1(実IP192.168.20.100)、 192.168.10.20へのアクセスがServer2(実IP192.168.20.200) へと割り振られ、同じく Server1(実IP192.168.20.100)からのアクセスが192.168.10.10、 Server2(実IP192.168.20.200)からのアクセスが192.168.10.20 へと割り振られる、ということなのですが、スクリプトを実行してもeth0側のPCからeth1側のサーバーにアクセスできません。eth1側からeth0側へのアクセスもできません。192.168.20.0内部でのPing送受信やWebサイト閲覧は自由にできますが、eth0側のPCから192.168.10.10と192.168.10.20にPingを送っても、Mannakaサーバーが応答してしまい意図した動きにはなっていません。Server1とServer2のWebサイトも閲覧できません。 環境は、Mannaka, Server1, Server2 がCentOS6、その他のPCはWindows7です。 これがなぜ意図したとおりに動かないのか、そしてどうすれば動くようになるのかをご教示いただけないでしょうか。 よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- ipmasqadmをiptablesで定義する方法について
お世話になります。 Linuxをルーター機能で2枚のNIC構成で作成しています。 kernel-2.2では下記のコマンドでDMZにあるWebサーバーにポートフォアワードしていました。 /sbin/ipmasqadm portfw -a -P tcp -L 1.2.3.4 80 -R 192.168.0.101 80 これをkernel-2.4ではiptablesを使用して構成するようですが、その定義がいまいち理解できていません。 その定義方法は下記のものだけでよろしいのでしょうかをお尋ねします。つまり、下記のみで外部からDMZゾーンにあるWebサーバーへのアクセスが可能かどうか?です。 /sbin/iptables -A FORWARD -p tcp -s 0.0.0.0 --dport 80 -d 192.168.0.101 -j ACCEPTなど・・・ /sbin/iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to 192.168.0.101:80 以上のヒントをお願いします。
- ベストアンサー
- Linux系OS
- iptablesを使用してのDNSゾーン転送の設定。
今後Linuxをルーターとしてサーバー公開を目指しています。 グローバルIP=10.10.10.10(ルーターインターフェース=eth0) プライベートIP=192.168.0.1(ルーターインターフェースeth1) PrimaryDNS=10.10.10.10:53をプライベートIPに変換=192.168.0.2:53 セカンダリDNS=20.20.20.20 Linuxルータはiptablesのみ動作。 primaryDNSサーバーはwindows2000を使用しています。 iptablesにより、Preroutingを使用して10.10.10.10:53→192.168.0.2:53の変換。 POSTROUTINGにより192.168.0.2→10.10.10.10:53へ変換と設定しています。 # iptables -t nat -A PREROUTING -p tcp -d 10.10.10.10 -dport53 -j DNAT -to-destinalion 192.168.1.20:53 # iptables -t nat -A POSTROUTING -p tcp -s 10.10.10.10 -sport53 -j SNAT -to-source 192.168.1.20:53 # iptables -t nat -A PREROUTING -p udp -d 10.10.10.10 -dport53 -j DNAT -to-destinalion 192.168.1.20:53 # iptables -t nat -A POSTROUTING -p udp -s 10.10.10.10 -sport53 -j SNAT -to-source 192.168.1.20:53 そこで質問なのですが、この際Win2000でゾーン転送のセカンダリDNSの宛先アドレスはどうしたらよろしいのでしょうか? その際、iptablesの記述も教えてください。 一応、 # iptables -A FORWARD -p tcp -dport53 -j ACCEPT # iptables -A FORWARD -p udp -dport53 -j ACCEPT 53ポートのtcp,udpを許可しています。
- 締切済み
- Linux系OS
- iptables ポートフォワーディングについて
ポートフォワーディングの設定を行いたくて試しにやっているのですが、 うまくいかないので教えていただけないでしょうか。 WinXPクライアント(192.168.1.22) | Linuxルーター(eth0=192.168.1.40, eth1=192.168.2.41)起動しているサーバーはssh,telnet,ftp,http,postgresです。 | LinuxWebサーバー(eth0=192.168.2.81 port=80)起動しているサーバーはssh,telnet,ftp,http,postgres,cvspserverです。 WinXPクライアントからLinuxWebサーバーにアクセスしたいのですが、以下のように設定しても WinXPクライアントのブラウザには「サーバーが見つかりません」と表示されてしまいます。 他に追記すべき設定、お気づき等ございましたら教えてください。よろしくお願いします。 Linuxルーターのiptables設定内容(service iptables stopを行った後、以下を設定しております) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.81:80 iptables -A FORWARD -d 192.168.2.81 -p tcp --dport 80 -j ACCEPT ------------------------------------------------------------- 上記設定後iptables -Lとしてみたら以下のように表示されました。 Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere 192.168.2.81 tcp dpt:http Chain OUTPUT (policy ACCEPT) target prot opt source destination さらにservice iptables saveをして cat /etc/sysconfig/iptablesとしてみたところ以下のように表示されました。 # Generated by iptables-save v1.3.5 on Sat Jan 30 11:46:10 2010 *nat :PREROUTING ACCEPT [2:280] :POSTROUTING ACCEPT [2:115] :OUTPUT ACCEPT [2:115] -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.81:80 COMMIT # Completed on Sat Jan 30 11:46:10 2010 # Generated by iptables-save v1.3.5 on Sat Jan 30 11:46:10 2010 *filter :INPUT ACCEPT [148:9894] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [169:16447] -A FORWARD -d 192.168.2.81 -p tcp -m tcp --dport 80 -j ACCEPT COMMIT # Completed on Sat Jan 30 11:46:10 2010 ------------------------------------------------------------- ちなみに以下のように設定してWinXPクライアントからsshで192.168.1.40の10000ポートに接続すると接続できました。 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10000 -j DNAT --to 192.168.2.41:22 ------------------------------------------------------------- 以下のように設定してWinXPクライアントから「telnet 192.168.1.40 10000」コマンドを発行してみるとしていない 時と比べて「接続中: 192.168.1.40...」となっている時間が長いので何かしら影響しているのかなと思います。 iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 10000 -j DNAT --to 192.168.2.81:23
- 締切済み
- ネットワーク
- ApacheとTomcat ポート80番について
現在、VPSでマルチドメインで以下の2つサイトを運用しています。 1. PHPによるWordPressサイト 2. Javaによる動的サイト(静的HTML無し) Apache HTTP Server(ポート80)のバーチャルドメインを使用し、2のJavaサイトの場合はAJPでTomcat(ポート8009)へ処理を振り分けています。一般的な連携方法でと思います。 サーバーOSはCentOS5.5、IPアドレスはひとつ、ウェブサーバーにはApache HTTP Server, サーブレットコンテナとしてApache Tomcatを使用しています。root権限保持しています。 質問させていただきたいことは、Apache HTTP ServerおよびApache Tomcatを同時に起動させながらポート80番を1のサイトの場合はApache HTTPが使用、2のサイトの場合はApache Tomcatが使用できるようにする方法はご存知ないでしょうか?ということです。 現在はTomcat単独で運用する場合よりもApache HTTPを経由させるためにJavaのサイトが若干反応が遅く感じます。そもそも静的コンテンツはありませんし、URLの書き換えなども別の手段を用いているため、Apache HTTP Serverを経由する意味はどちらのサイトともブラウザでポート80番へアクセスできるようにする以外ありません。 何かよい方法ご存知ないでしょうか?なお、IPアドレスはひとつ増やしても構いません。
- 締切済み
- Linux系OS
- 自宅windows XP に Apache2.0.61 をインストールしてWEBサーバ構築し、1つのIPアドレスで複数のドメインを管理したいのですが
自宅のwindows XP sp2 に Apache HTTP server 2.0.61 をインストールしてWEBサーバの構築をしているのですが、そこで 1つのIPアドレスで複数のドメイン(ウェブサイト)を管理・公開したいのですがうまくいきません 自宅の自家製WEBサーバにて、1つのIPアドレスで、ネームベースのバーチャルホストを設定して、複数のドメイン(複数のウェブサイト)を管理し、ネット上に公開したいのですが、バーチャルホスト設定がうまくいきません。以下のURLは、わたしのApacheのConfi 内容です。Apache HTTP server 2.0.61 をインストールして全く内容は編集していない状態ですので、どこの部分をどのように編集すれば良いか具体的に教えていただければ幸いです。 http://192.168.0.4/new11/yahoo-1.html 以上です。
- 締切済み
- その他(インターネット・Webサービス)
- Virtual Addressと LVS NAT 不可分散
的外れな質問になってしまうかもしれませんが、教えてください。 OSはDebian Etch(3台)でLVS NATの不可分散の試験をしています。 一台にkeepalivedとロードバランスを入れ、他2台にapache-2をインストールしての試験です。 設定は下記URLの図と同様です。 (http://dsas.blog.klab.org/archives/50664843.html) Virtual Addressのインターフェスをeth0:0としてアドレスを上記URLと同様に10.10.31.100と設定し、ルータで分かれているインターネットワークのPCで10.10.31.100と入力すると不可分散は機能します。外部のネットワークから同様に、ファイアーウォールを通して example.org(私のウェブアドレス)で試しているのですが機能しません。 外部からexample.orgで検索をした場合、このパケットは10.10.31.100のVirtual Addressを通過しないために起こるのだろうと考えます。iptables(ファイアーウォール)内でexample.orgのパケットを10.10.31.100に仕向けることが出来たら問題が解決するのではと、勝手に推測しています。 example.orgに来たパケットをバーチャルアドレスに仕向ける記述の仕方を教えていただきたい。または、routingか何かで仕向ける方法があればご教授いただきたいのです。 お願い申し上げます。
- 締切済み
- その他(ITシステム運用・管理)
補足
ご回答及び検証ありがとうございます。 やはり出来るのは間違いないみたいですが(ldirectordも中身はLVSですよね?最近ultramonkeyのサイトが繋がらないのは何故?) 、だとするとt-okura様の言うとおり問題はloに飛んでいるパケットをeth0などの外部にRoutingしてやれば行けるのかも!と思ってiptablesを叩きまくりましたが、うまくいきませんでした(eth0にDNATしてみても、やっぱり振り分けるより先にApacheが食べてしまってるように見える)。ただ少し光明が見えてきた気がするのですが。 何か良い手段がありましたらご教授下さい。