IPtableはproxmoxを使用して内部LANから/に渡すことはできません。

IPtableはproxmoxを使用して内部LANから/に渡すことはできません。

単一のパブリックIPを持つproxmoxホストと、Webサーバーと複数のドメインがインストールされているいくつかのVMがあります。最初のVMは、要求を別のVMに転送するhaproxyを持つプロキシです。 Proxmoxホストにはこのiptablesスクリプトがあります。

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 22100 -j DNAT --to-destination 192.168.1.100:22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:443
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 22101 -j DNAT --to-destination 192.168.1.101:22
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 22102 -j DNAT --to-destination 192.168.1.102:22
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 22103 -j DNAT --to-destination 192.168.1.103:22
iptables-save > /etc/iptables.rules

内部LANは192.168.1.0、インターフェイスeth0にはパブリックIPがあり、プロキシは192.168.1.100、その他のシステムは101、102、103などです。

curl www.mydomain.com他のVMには、私が持っているのと同じVMから起動するのではなく、外部から接続すると機能するWebサイトがインストールされていますcurl: (7) Failed connect to www.mydomain.com:80。接続が拒否されますが、これはiptablesに問題があると考えられます。

ベストアンサー1

ついに解決策や解決策を見つけました。この問題の原因は何であるかわかりません(ProxmoxやDebianファイアウォールなどに関連しています)。通常のOpenVZを使った以前の設定はうまくいきました。

問題は、同じサーバー(同じ外部IP)の別のVM BがVM Aのサービスを使用している場合です。他のサーバーでプロキシを使用すると、他のプロキシのIPがサーバーのIPと異なるため、すべてがうまくいきます。

したがって、サービス呼び出しがサーバーの範囲を超えないようにしないでください。 dsnmasqを使用してサーバーにDNSサービスを設定します。 VM B の呼び出しはサーバーの DNS に移動し、VM A の IP を取得します。各VMのネームサーバーをローカルサーバーに設定することを忘れないでください。

このソリューションには、サーバー上の仮想マシンへのすべてのDNS呼び出しをキャッシュして速度を向上させるという利点があります。


詳細な説明:

サーバーにdnsmasqをインストールする

# apt-get install dnsmasq
# update-rc.d dnsmasq enable

dnsmasq を DNS サーバーとキャッシュとして構成します。

# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
# vi /etc/dnsmasq.conf

次の行のコメントを解除します。

domain-needed
bogus-priv

サーバー自体の内部IPをリッスンします。

listen-address=10.0.186.254   # internal IP
listen-address=127.0.0.1      # must be added too

localhostをネームサーバーとして追加します。

# vi /etc/resolv.conf

search mydomain.com
nameserver 127.0.0.1    # this line added
nameserver 8.8.8.8

ローカルプロキシ(10.0.186.1)または仮想マシンにルーティングする必要があるドメインエントリを追加します。

# vi /etc/hosts

10.0.186.1 api.mydomain.com           # these all point to the proxy 
10.0.186.1 loginservice.mydomain.com
10.0.186.1 api.otherdomain.com

/etc/hostsを変更した後にdnsmasqを再起動することを忘れないでください。

# service dnsmasq restart

Proxmox Webインターフェイスのすべての仮想マシンに127.0.0.1を(デフォルト)ネームサーバーとして追加します。

おすすめ記事