外网和内网如何使用同一个IP?

外网和内网如何使用同一个IP?

我在办公室有一个 Ubuntu 防火墙盒(Alma),上面有一个 Web 服务器。它看起来像这样:

[Internet] <-> [DSL Router] <-> [Alma]
                                   |
                  [DMZ:10.1...] <--+--> [Internal LAN:192...]

每当我在 Alma 之外的家里时,我都可以通过 SSH 轻松访问它。当我在里面时,在内部 LAN 上我无法使用公共 IP 地址登录盒子,而必须使用本地子网 192...Alma 有 3 个 NIC 接口。

我希望能够使用单个公共 IP 地址编写一些脚本。假设它是 7.7.7.7。这个问题阻止了轻易地做到这一点。有没有办法发出这个命令:

ssh 7.7.7.7

可以在 192 子网以及互联网上工作吗?奇怪的是,我可以从内部或外部 ping 7.7.7.7。但是当我尝试从内部通过 SSH 连接到 7.7.7.7 时,连接被拒绝。

我做错了什么,或者做得不对?

我的 SSH 守护进程监听 0.0.0.0。当我从内部尝试时,防火墙根本不记录任何尝试。

任何帮助表示赞赏。

答案1

另一种方法是设置本地 DNS 服务器并使用名称而不是 IP 地址。这个概念称为水平分割 DNS。 your-machine.yourdomain.com 在本地将解析为 10.0.0.7,在外部使用时将解析为 7.7.7.7。

也可以看看: 水平分割

我个人会推荐使用DJBDNS(或其分叉)并且不绑定。

答案2

当从内部LAN访问时,您必须配置Alma对公共IP地址进行目标NAT。

假设 7.7.7.7 是公共地址,192.168.2.1 是本地 IP。然后将这些行放在 iptables 配置中:

-A 预路由 -d 7.7.7.7 -s 192.168.2.0/24 -j DNAT --到目的地 192.168.2.1

来自本地 LAN 的任何 7.7.7.7 数据包都将被重新路由(使用目标 NATing)到 192.168.2.1

相关内容