Ssh

如何使用 iptables 將 HTTP 和 SSH 埠轉發到我的內部伺服器?

  • March 14, 2022

我沒有路由器,所以我把我的 CentOS 6.4 Linux 系統變成了路由器,將公共網路流量轉發到我的本地 LAN。它有兩張網卡,一張用於公共 IP 地址 (eth1),另一張用於專用 IP 地址 (eth2)。

我有一台連接到本地 LAN 的伺服器,比如說在192.168.1.2.

路由器

  • eth1: x.x.x.x, 公網 IP 地址
  • eth2: 192.168.1.1,內部路由器地址

當來自外部網路的某人在公共 IP 上執行 ssh 時,它應該被重定向到伺服器:

ssh x.x.x.x或使用PuTTY

我禁用了伺服器上的 SELinux 和 iptables 防火牆。我在 Linux 系統路由器上嘗試了一些 iptables 修改,但是 SSH 請求仍然沒有重定向:

iptables -t nat -A PREROUTING -p tcp -d 192.168.1.1 --dport 22 -j DNAT --to-destination 192.168.1.2:22

我還想使用來自同一 Linux 系統路由器的 iptables 將所有 HTTP (80) 流量轉發到我的內部伺服器。

首先確保在核心中啟用了數據包轉發

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

您也可以通過添加以下行使其永久化/etc/sysctl.conf

net.ipv4.ip_forward = 1

您必須在充當路由器的 Linux 機器上執行此操作。您可以在路由器機器上嘗試以下規則。

iptables -t nat -A PREROUTING -i eth1 -d x.x.x.x -p tcp --dport 22 -j  DNAT --to-destination 192.168.1.2:22

還要讓我們知道您的 NAT 規則從路由器框中的輸出。

iptables -t nat -L -n -v

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