SSHトンネルを介したIP転送

SSHトンネルを介したIP転送

この状況には3つのマシンが含まれます。

  • 一部のラップトップは、何らかの方法でインターネットに接続されています。
  • 第二標準ISP(dyndnsが提供する固定IP:myserver.dyndns.com)を介してインターネットに接続されているサーバー
  • 他のサーバーが4Gアダプタを介してインターネットに接続されています。

<---ISP1 ---ISP 2 --->第二<---ISP 2---4G--->

autossh4Gドングルは新しく着信接続を拒否したので、Bを介してAからCに接続するチャンネルを設定しました。

autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 -R 10000:127.0.0.1:10000

良い結果。

次に、次のように入力して4GドングルのWebインターフェースにアクセスしたいと思います。

myserver.dyndns.com:80

だからNATingを試しました。

  • 存在する第二:

    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:10000
    

    そして

    iptables -t nat -A POSTROUTING -d 127.0.0.1 --dport 10000 -j MASQUERADE`
    
  • 存在する:

    iptables -t nat -A PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 192.168.8.1:80
    

    そして

    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    

注:eth14Gドングルのインターフェースです。インターフェイスのIPは192.168.8.100、ドングルのIPは192.168.8.1です。

残念ながら、これは機能しません。 IP転送も有効にしました。

echo 1 > /proc/sys/net/ipv4/ip_forward

タイピング中

iptables -t nat -L -v -n

存在する第二そして, PREROUTING 行のみ第二試みるたびにパケット数が増えることがわかります。

これは、動作方法の不完全な理解によって引き起こされる可能性がありますnetfilter

あなたが提供できるどんな助けにも感謝します!

答え1

iptables -t filter -nvLサーバーBとCの出力を提供してもらえますか?

autosshチャンネルがサーバーCで実行されているようです。そうなんですか?それでは、別のアプローチを提案します。 Bでは、カーネルが許可されていないユーザーがポート80を開くことを許可していないため、REDIRECTルールが必要です。

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 10000
iptables -t filter -A INPUT -p tcp --dport 10000 -j ACCEPT

(編集する):サーバーBでは、次のGatewayPorts場所で有効にする必要があります/etc/ssh/sshd_config

# /etc/ssh/sshd_config
GatewayPorts clientspecified

サーバーCでパラメータを変更して、接続をドングルに直接渡しますautossh

autossh -M 0 -N [email protected] -R 10022:127.0.0.1:22 \
    -R :10000:192.168.8.1:80

あなたの設定で見られる唯一のエラーは、PREROUTINGサーバーCのチェーンルールに関するものです。この場合、ネットワークインターフェイスを介して着信パケットにのみ影響するため、評価されません。生成された接続はsshローカルで作成されるため、OUTPUTチェーンの規則に影響されます。

関連情報