質問: 現在、インターネットに接続しているPC1(Ubuntu)があり、その下にプライベートネットワークでPC2(QNAP)がぶら下がっています。ここで、PC1のポート8080にアクセスすると、PC2のポート80にフォワードされ、PC2上のWeb画面に接続するようにしたいと考えています。 具体的な設定は、 PC1 eno1 172.25.95.126 (社内IPアドレス) eno2 192.168.137.1 (DHCPで下に192.168.137.2-250のアドレスを発行) PC2 eth1 192.168.137.2 現時点で、下記のコマンドをPC1上で実行してPC2からPC1を通じてインターネットにアクセスできるようになっています。 sudo iptables -P INPUT ACCEPT sudo iptables -P OUTPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE sudo iptables -A FORWARD -i eno2 -o eno1 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i eno1 -o eno2 -j ACCEPT ここでネットで調べて、172.25.95.126:8080 ⇔ 192.168.137.2:80ができるように、 sudo iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 8080 -j DNAT --to-destination 192.168.137.2:80 sudo iptables -A FORWARD -p tcp -d 192.168.137.2 --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT sudo iptables -t nat -A POSTROUTING -d 192.168.137.2 -p tcp --dport 80 -j SNAT --to-source 172.25.95.126:8080 としてみましたが、172.25.95.120等から http://172.25.95.126:8080 にアクセスしても何も返ってこず想定していたことができていない状態です。 これを想定通りに設定するにはどうすればよいでしょうか。
回答: INPUT, FORWARD チェインなどで拒否するルールがなければ、以下の DNAT のルールだけでいいはずです。 ``` iptables -t nat -A PREROUTING -p tcp -i eno1 --dport 8080 -j DNAT --to-destination 192.168.137.2:80 ``` 最後の SNAT のルールは `-d`, `--dport` ではなく、`-s`, `--sport` ではないでしょうか? ``` iptables -t nat -A POSTROUTING -p tcp -s 192.168.137.2 --sport 80 -o eno1 -j SNAT --to-source 172.25.95.126:8080 ``` 80番ポートへのアクセスの戻りパケットなので、このルールが無くても大丈夫だと思います。