使用 iptables 和 dhcpd 进行端口转发

使用 iptables 和 dhcpd 进行端口转发

设置:我有一台 Linux(Gentoo,如果这有区别的话)机器,它充当整个公寓的网关。这台机器使用 iptables 和 dhcpd 实现 NAT 魔法。

问题:我有一台特定的计算机,我想将端口转发到该计算机(对于种子,如果再次存在区别)。

我拥有足够的 Linux 管理技能来阅读操作指南并正确配置内容(最终),但我发现适合我的情况的操作指南太不清楚,而且似乎不必要地复杂。

据我所知,我的问题有两个:让 dhcpd 可靠地为我想要的计算机分配一个特定的静态 IP,然后配置 iptables 以进行端口转发。

有人能给我一个明确的、一步一步的指南来指导我如何做到这一点吗?我确信我不是唯一一个想这样做的人……


编辑:我的软件版本是:

# iptables --version
iptables v1.4.0

# dhcpd——版本
isc-dhcpd-V3.1.1-Gentoo

答案1

要让 dhcp 可靠地为您想要的计算机分配某个静态 IP,通常要做的是研究如何告诉您的 dhcp 服务器(无论您运行哪个)将 mac 地址静态映射到 IP 地址。这将使其始终将相同的 IP(您指定的)分配给该 mac 地址。

ISC dhcp 需要类似以下的配置节

host mycomputer {
  hardware ethernet 00:12:34:56:78:9A;
  fixed-address 192.168.1.10;
}

dnsmasq 需要如下一行:

dhcp-host=00:12:34:56:78:9A,192.168.1.10

其详细信息在手册页

在哪里:

  • 我的电脑是你的计算机的主机名
  • 00:12:34:56:78:9A你的电脑的 MAC 地址是
  • 192.168.1.10您希望始终将 IP 分配给该 mac 地址吗

完成后,您现在有一个“静态”IP 来进行端口转发。要做到这一点,您需要像@Avery Payne 所说的那样:

iptables -t nat -I PREROUTING -s ! {internal-network} -d {public-address} -p tcp --dport {port-on-public-address} -j DNAT --to-dest {internal-address}

在哪里:

  • 内部网络是代表您网络的 IP 地址,即 192.168.1.0
  • 内部地址是代表要公开的主机的 IP 地址,即 192.168.1.10
  • 公共广播是面向您的 ISP 的接口的 IP 地址
  • 公用地址上的端口是流量到达的端口号(如果您的内部计算机可以看到它);请注意,此规则在转发时不会更改端口号,它只是将数据包传递下去

注意-s、感叹号和{internal-network}之间的空格,确保两边都有空格。

答案2

iptables -t nat -I PREROUTING -s ! {internal-network} -d {public-address} -p tcp --dport {port-on-public-address} -j DNAT --to-dest {internal-address}

在哪里:

  • 内部网络是代表您网络的 IP 地址,即 192.168.1.0
  • 内部地址是代表要公开的主机的 IP 地址,即 192.168.1.2
  • 公共广播是面向您的 ISP 的接口的 IP 地址
  • 公用地址上的端口是流量到达的端口号(如果您的内部计算机可以看到它);请注意,此规则在转发时不会更改端口号,它只是将数据包传递下去

注意 -s、感叹号和 {internal-network} 之间的空格,确保两个都側面。

相关内容