设置:我有一台 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} 之间的空格,确保两个都側面。