web-dev-qa-db-ja.com

IPTABLESとVBoxを使用したポートフォワーディング

Ubuntuでiptablesの適切な構成を取得する際に小さな問題があります。ただし、その前に、ネットワーク構成について説明します。

192.168.1.0/24サブネットにサービスを提供するmodem + router + DHCPで終了するxDSL回線を使用しています。私のラップトップとPCはこのネットワークに接続されており、それぞれ192.168.1.6と192.168.1.3のアドレスを取得します。 PCでは、VBoxと2台の仮想マシン(両方ともUbuntu)でUbuntuを実行しています。 PCのvboxnet0インターフェースにはIP10.10.10.1が割り当てられ、個々の仮想マシンは10.10.10.10と10.10.10.11を取得します。 VM1は、テスト目的でApacheWebサーバーを実行します。

これで、PC(192.168.1.3)から、ブラウザーにアドレスを入力することで、VM1ApacheがホストするWebサイト(10.10.10.10)にアクセスできます。そこに問題はありません。

ただし、ブラウザのアドレスバーに同じ10.10.10.10と入力して、ラップトップ(192.168.1.6)から同じWebサイトにアクセスできるようにしたいと思います。ただし、これは機能しません。なんらかの理由でネットワークを通過できません。 192.168.1.xネットワークではIPアドレスが不明なようです。 iptablesを介して簡単な方法でそれを構成する方法があれば、それは素晴らしいスタートになるでしょう。

さて、そのステップが可能であれば、さらに複雑なセットアップを構成できるようにしたいと思います。 192.168.1.3アドレスと適切なポートアドレスを使用して、特定のサービス要求を適切なVMインスタンスに転送できるようにしたい。たとえば、192.168.1.3:80はVM1に移動して、 ApacheでホストされているWebサイト(たとえば、192.168.1.3:4000)は、VM2に移動して、そこでホストされているSFTPサービスを取得する必要があります。つまり、PCで宛先ポート固有のルーティングを実行して、に接続されているコンピューター間の双方向通信を可能にします。 10.10.10.xネットワークで実行されている192.168.1.xネットワークとVM。iptablesを使用したこれに対する簡単な解決策はありますか?

これは私が今までに作り上げた例ですが、転送を正しく機能させることができませんでした。ここにはたくさんのエラーがあると確信しています-iptablesに費やした最初の日です。

clear
# cleaning Firewall Rules , change ACCEPT to DROP if you want to shield
# the server, then you open ports as you need
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# Accepts all established inbound connections
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# opening INPUT ports (22,80,8080)
iptables -A INPUT --protocol tcp --dport 22 -j ACCEPT && echo "rule input 22 ok"
iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT && echo "rule input 80 ok"
iptables -A INPUT --protocol tcp --dport 443 -j ACCEPT && echo "rule input 443 ok"
iptables -A INPUT --protocol tcp --dport 8080 -j ACCEPT && echo "rule input 8080 ok"

#allow Loopback and networks
iptables -A INPUT -i lo -j ACCEPT  && echo "rule 7 ok"
#Accept any input from 10.10.10.0 network in vboxnet0 interface
iptables -A INPUT -s 10.10.10.0/24  -i vboxnet0 -j ACCEPT  && echo "rule 8 ok"

#enable Port forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward

# Opening PREROUTING - Filtering : this make the port forwarding trick.
# Forward as many ports you want to certain machines of the network to provide services such web server, ftp server, etc...
iptables -t nat -A PREROUTING -p tcp -i eth1 -d 192.168.1.0/24 --dport 8080 -j DNAT --to 10.10.10.10:80  && echo "rule 9 ok"
#iptables -t nat -A PREROUTING -p tcp -i eth1 -d xxx.xxx.xxx.xxx --dport 53 -j DNAT --to 10.10.10.14:53  && echo "rule 10 ok"
#iptables -t nat -A PREROUTING -p udp -i eth1 -d xxx.xxx.xxx.xxx --dport 53 -j DNAT --to 10.10.10.14:53  && echo "rule 11 ok"
#iptables -t nat -A PREROUTING -p udp -i eth1 -d xxx.xxx.xxx.xxx --dport 21 -j DNAT --to 10.10.10.16:21  && echo "rule 12 ok"

#Opening FORWARD ports for network services on vlan
iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p tcp --dport 80 -j ACCEPT && echo "rule 13 ok"
#iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p tcp --dport 21 -j ACCEPT  && echo "rule 14 ok"
#iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p tcp --dport 68 -j ACCEPT  && echo "rule 15 ok"
#iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p tcp --dport 22 -j ACCEPT  && echo "rule 16 ok"
#iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p tcp --dport 53 -j ACCEPT && echo "Rule 17 ok"
#iptables -A FORWARD -s 10.10.10.0/24 -i vboxnet0 -p udp --dport 53 -j ACCEPT && echo "Rule 18 ok"

# Opening POSTROUTING PROCESSES
# Netmasking is absolutelly necesary to protect vlan from attacks, only it hides their ip....
iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE  && echo "rule 19 ok"

# Reject all other inbound - default deny unless explicitly allowed policy
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

# test and display the rules if runs properly
iptables -L

助けてくれてありがとう

マレク

2
user137708

まず、VirtualBoxでブリッジネットワークを使用する簡単なセットアップを検討する必要があります。これにより、基本的にVMがLANに直接配置されるため、VMは192.168.1.0/24アドレスを取得し、LAN上の他のマシンから直接アクセスできます。

DNATルールは正しいように見えますが、FORWARDチェーンでブロックされていると思われます。 NATされたパケットは、引き続きFORWARDチェーンを通過する必要があるため、次のように、そこで受け入れられる必要があります。

iptables --append FORWARD --in-interface eth1 --out-interface vboxnet0 --destination 10.10.10.10 --protocol tcp --dport 80 --jump ACCEPT

ただし、NATルールが機能している間に、デフォルトでACCEPTにFORWARDチェーンを構成することをお勧めします。NATが機能したら、開始します。 FORWARDチェーンを制限します。

1
mgorven