やり方についてのチュートリアルをいくつか見つけたのですが、どれもうまくいきませんでした :/
私の設定:
ファイアウォール - インターネットからアクセス可能 - eth0: xxx.xxx.xxx.xxx (パブリック IP) - eth1: 192.168.1.1
サーバー - ファイアウォールからアクセス可能 - eth0: 192.168.1.5
引き続きポート 22 でファイアウォールに接続できるようにしたいので、ポート 2222 の着信接続を 192.168.1.5:22 に転送したいと思います。
ファイアウォールからサーバへの ping と ssh は機能します。サーバからファイアウォールへの ping と ssh も同様に機能します (ただし、ログインは公開キーでのみ許可され、サーバは許可されません...)
どこからでもファイアウォールへの ping と ssh が機能します。
IP 転送が有効になっています:
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
iptables ルールを投稿してもあまり意味がありません。ルールが 1 つも機能せず (PREROUTING、POSTROUTING、FORWARD などを使用)、他のルールも存在しないためです。
はい、私のファイアウォールは何もブロックしません。しかし、これはセキュリティに関するものではありません (まだ)。
私は最初の 2 ページで見つけたものをすべて試しました: https://www.google.de/search?q=iptables+forward+ssh
助言がありますか?
よろしく、イェンス
アップデートtcpdump -n -i any
以下は、Khaled の iptables コマンドを使用した後 の出力です。
15:42:33.852718 IP home-ip.56008 > firewall-public-ip.2222: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
15:42:33.852752 IP home-ip.56008 > 192.168.1.5.22: Flags [S], seq 1141341765, win 14600, options [mss 1460,sackOK,TS val 871214 ecr 0,nop,wscale 7], length 0
2 行目には次のような内容があるだろうと予想しました... IP 192.168.1.1.45678 > 192.168.1.5.22 ...
私の ssh クライアントが複数回接続を試行するため、この 2 行が数回繰り返されます。しかし、応答はありません。
2回目の更新 サーバー(192.168.1.5)のルートはここルートを追加しました
public-firewall-ip 255.255.255.255 192.168.1.1 192.168.1.5 1
しかし、これは効果がありません。サーバーでは、cygwin の sshd がインストールされた Win XP が稼働しています。ファイアウォールからサーバーへの ssh は問題なく動作するため、これまでこれについて言及しませんでした。しかし、ルーティングに関しては、Windows には多少の制限があるように感じます。
現在、サーバーに Wireshark をインストールしており、数分以内に結果を貼り付けます。
サーバー上のトレース サーバーのトレースを見ると、ポート 22 に到着した SYN と、自宅の IP への出発 SYN、ACK が示されています。エラーがあると思います。出発パッケージのソース IP/ポートが現在 192.168.1.5:22 であるため、ACK はマスカレードされるのではなく、ファイアウォールに送信する必要があります。NAT の背後にある自宅のラップトップにこれが届くはずがありません... それとも方法はあるのでしょうか?
答え1
トラフィックがファイアウォールを通過することを許可し、IP 転送が有効になっている場合は、ポート 2222 で SSH トラフィックを転送するための NAT ルールが 1 つだけ必要です。次のようなルールで十分です。
$ iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.5:22
アップデート:
このような問題をデバッグするときには、ネットワーク スニファーが役に立ちます。ファイアウォール マシンで tcpdump を実行し、要求の受信をキャッチできるかどうか、また同じ要求がファイアウォール マシンから送信されるかどうかを確認できます。