ポート22を特定のインターフェイスに転送

ポート22を特定のインターフェイスに転送

私は特定のコンピュータに3つの別々のインターフェイスがある状況にあります。接続されている各ネットワークは、サーバーが(ネットワークベースのルーティング/ファイアウォールを介して)特定のサービスのみを提供できるようにします。明らかに、クライアントはさまざまなサブネットから接続でき、ネットワークファイアウォールを使用してクライアントへのアクセスを制御します。

管理インターフェイスはSSHトラフィックを許可しますが、クライアントが接続するには、デフォルトルートを管理ネットワークのゲートウェイに設定する必要があります。これは SSH を中心に機能しますが、本番インターフェイスを介してのみ許可される HTTP サービスを中断します。 3番目のインターフェイスはバックアップインターフェイスですが、そのインターフェイスへのすべてのトラフィックは同じサブネットにあります。

ルーティングテーブルは次のとおりです。

[root@xxxcpr2 ~]# ip route
10.19.1.0/24 dev eth0 proto kernel scope link src 10.19.1.10
10.18.29.0/24 dev eth1 proto kernel scope link src 10.18.29.25
192.168.5.0/24 dev eth2 proto kernel scope link src 192.168.5.35
default via 10.18.29.1 dev eth1

その中で、eth0は管​​理インターフェイス、eth1は本番インターフェイス、eth2はバックアップインターフェイスです。

基本的に私が達成したいのは、すべてのポート22トラフィックのデフォルトゲートウェイが管理インターフェイスの外部にルーティングされていることですが、直接接続されているサブネット以外の他のすべてのトラフィックは本番インターフェイスの外部にルーティングする必要があることです。基本的に欲しいものの90%を達成しました。 SSHトラフィックの例外を追加したいです。

私が見つけたこれしかし、私はそれを動作させることはできません。おそらく私の理解が欠けているか、RHELとUbuntuの間にいくつかの違いがあるかもしれません。mainテーブルのデフォルトゲートウェイはすでに本番インターフェイスから出るように設定されているので、私がしたことは次のとおりです。

# echo 1 > /proc/sys/net/ipv4/ip_forward
# ip route add table 22 default via 10.19.1.1
# iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 22
# ip rule add fwmark 22 table 22
# iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 10.18.29.25
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.19.1.10

私の考えでは、(誰かがこれが間違っていると指摘するかもしれません)、パケットにタグを付けて表22を使用してルールを作成することはうまくいくでしょう(元の投稿がなぜ言及されたのかわかりませんが、SNAT完全性のためにできるだけ複製するしようとしました)。ただし、mainテーブルのデフォルトパスを変更しない場合は、接続時間が継続します。

基本的に、この時点では私が理解していないか見落としていることを指摘してくれる人が必要です。

ベストアンサー1

着信SSH接続の場合(接続追跡なし)

iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 22

発信SSH接続の場合(接続追跡なし)

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 22

--port代わりに、--dport次のように組み合わせることができます。--sport

接続追跡を使用する方が良い方法かもしれませんが、上記のルールは始めるのに役立ちます。

おすすめ記事