Linux
使用 iptables 和不同的網路介面轉發 MySQL 連接
我有一台帶有 Ubuntu 作為路由器的 PC。它具有與 Internet 的公共 IP 的 3G 連接,並且有一個私有無線子網。所以它有兩個活動介面:
- ppp0:公共 IP(廣域網)
- wlan0:私有IP(區域網路)
使用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 publicip 3306 失敗:-(
任何幫助將不勝感激。謝謝!
您可以創建一個 ssh 隧道來轉發連接。它比使用 iptables 更容易和安全:
ssh -L YOUR_PUBLIC_IP:3306:10.42.43.10:3306 YOUR_USER@10.42.43.10
您必須輸入 ssh 使用者憑據,然後通過隧道進行重定向。快速、簡單和安全:)
規則似乎是正確的。我認為您尚未在核心中啟用 IP 轉發。有兩種方法可以啟用 IP 轉發:
echo 1 > /proc/sys/net/ipv4/ip_forward
這將在重新啟動時重置。將以下行添加到 /etc/sysctl.conf:
net.ipv4.ip_forward = 1
你應該能夠讓它工作。