n-1つのWeb接続仮想マシン専用n個のパブリックIPアドレスでKVM仮想化を実行する専用サーバーがあります。これで、プライベートアドレスがなく、代わりにホストから2〜3個のポートが転送されるいくつかのWeb接続VMを設定しようとしています。
ブリッジ構成は次のとおりです。
brctl show
伝えたいとしましょう
- 178.126.193.153:201 ~ 192.168.1.101:22
- 178.126.193.153:801 ~ 192.168.1.101:80
まず、コメントアウトを削除してホストでポート転送を有効にしました。
# net.ipv4.ip_forward=1
、それから/etc/sysctl.conf
私はそうだった
sysctl -p /etc/sysctl.conf
service network restart
それでは、上記のレシピと同様にこの問題、私はそうした:
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 201 -j DNAT --to-destination 192.168.1.101:22
iptables -A FORWARD -p tcp -d 192.168.1.101 --dport 201 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 801 -j DNAT --to-destination 192.168.1.101:80
iptables -A FORWARD -p tcp -d 192.168.1.101 --dport 801 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
クライアントマシンで実行し、対応するifconfig
インターフェイスeth0のIPアドレスが実際に192.168.1.101であることを確認しました。仮想マシン内部のインターフェースはと言いますかeth0
?
しかし、うまくいきません。
nmap 178.126.193.153
開いているポート201または801が表示されず、ssh -l root -p 201 178.126.193.153
混乱しています。
ssh: connect to host 178.126.193.153 port 201: Connection refused
ip route
ホストに戻る
178.126.193.128/26 dev br0 proto kernel scope link src 178.162.193.153
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
169.254.0.0/16 dev br0 scope link metric 1004
default via 178.126.193.190 dev br0
私は何が間違っていましたか?
答え1
トラフィックを別のポートに転送する場合は、ルートの後にSNATルールを追加する必要があります(または偽装することは重要ではありません)。また、順方向ルールでもいくつかの間違いを犯しました。だからこれを試してみてください:
iptables -t nat -A PREROUTING -p tcp -i br0 --dport 201 -j DNAT --to-destination 192.168.1.101:22
iptables -A FORWARD -p tcp -d 192.168.1.101 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -d 192.168.1.101 -p tcp --dport 22 -j SNAT --to-source 178.126.193.153
答え2
ループバックルーティングを有効にする必要があります。私のルータで次のことを行いました。
iptables -A FORWARD -o eth1 -d $IP -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
私の設定では、eth0がインターネットインターフェイス、$ IPがインターネットIP、eth1が内部インターフェイスです。
ここで重要なのは、内部インターフェイスから外部宛先IPへのトラフィックを処理するにはFORWARDルールが必要であることです。このルールはDNATの前に適用されるため、論理的には多少混乱しています。
2番目のルールは、内部トラフィックを最初に転送することを可能にし、それを他の方法で達成できます。
このタスクを実行するためにebtablesが必要な可能性がある仮想ネットワークの部分のために、他の特別なケースがあるかどうかはわかりません。