Linux

使用 iptables 和不同的網路介面轉發 MySQL 連接

  • October 31, 2016

我有一台帶有 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

你應該能夠讓它工作。

引用自:https://serverfault.com/questions/394998