私はルーターとしてUbuntuを搭載したPCを持っています。インターネットへのパブリックIPを使用した3G接続があり、プライベートワイヤレスサブネットがあります。したがって、2つのアクティブなインターフェイスがあります。
iptablesの場合すべてのMySQL接続を転送(ポート3306)をサブネットのローカルマシン(10.42.43.10)に転送します。
これらのiptablesコマンドを入力します。
iptables -A PREROUTING -t nat -i ppp0 -p tcp --dport 3306 -j DNAT --to 10.42.43.10:3306
iptables -A FORWARD -p tcp -i ppp0 -o wlan0 -d 10.42.43.10 --dport 3306 -j ACCEPT
しかし、それは機能しません。 telnet publicip3306が失敗します:-(
どんな助けでもありがたいです。ありがとう!
接続を警告するためのsshトンネルを作成できます。 iptablesを使用するよりもはるかに簡単で安全です。
ssh -L YOUR_PUBLIC_IP:3306:10.42.43.10:3306 [email protected]
Sshユーザー資格情報を入力する必要があり、トンネルを介したリダイレクトが実行されます。高速、簡単、安全:)
Nileshが投稿した回答にコメントできなかったので、その手順に従って問題が発生する可能性がある人のためにこれを追加しました
に関してで
echo 1 > /proc/sys/net/ipv4/ip_forward
これは、rootユーザーである場合にのみ機能します。
あなたshouldこのようにしてください
echo -n 1 | Sudo tee /proc/sys/net/ipv4/ip_forward
echo -n
は、末尾の改行文字がないようにするためです
Sudo tee
は、権限を増やしてファイルに書き込むことができるようにするためのものです
Sudo echo > /file
は、rootユーザーとして/ fileにアクセスする必要がある場合は機能しません。これは、Sudoがecho
関数でのみ動作し、> /file
では動作しないためです。
ルールは正しいようです。カーネルでIP転送を有効にしていないと思います。 IP転送を有効にする方法は2つあります。
echo 1 > /proc/sys/net/ipv4/ip_forward
これは再起動時にリセットされます。次の行を/etc/sysctl.confに追加します。
net.ipv4.ip_forward = 1
そして、あなたはそれを機能させることができるはずです。