AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 389306
Accepted
JustJeff
JustJeff
Asked: 2012-05-16 08:09:12 +0800 CST2012-05-16 08:09:12 +0800 CST 2012-05-16 08:09:12 +0800 CST

将所有都希望使用相同固定 IP 地址的多个设备容纳到同一 LAN 中的最佳方法是什么?

  • 772

假设我有一个支持以太网的设备,其中有一个硬编码的 IP 地址。我有适用于该设备的软件,可以将其配置为使用该设备的几乎任何 IP 地址,但如前所述,该设备始终具有相同的固定地址。

现在问题来了:假设我想在我的网络中使用多个这些设备。举两个例子就足以说明问题了。显然存在直接的 IP 冲突。我可以运行该软件的两个实例,但无法明确哪个软件实例应该关联到哪个设备。

我认为可能有用的方法是使用支持第 3 层的设备来进行网络地址转换,但我不需要像大多数商品路由器那样设计整个 LAN 的 NAT。我真正想做的是在每个端口的基础上应用静态 NAT。我想告诉路由器(?),“你看到这个设备插入端口 2,认为它是 10.1.1.1?让它看起来像 192.168.1.2,另一个插入端口 3,它也认为它是10.1.1.1 - 使它看起来像 192.168.1.3" .. 等等。(当然假设我局域网的其余部分是 192.168.1/24)

我曾使用过一个执行 VLAN 和路由域的“交换机”,但似乎没有能力在 VLAN 之间转换地址。空间和成本限制排除了将整个支持 NAT 的路由器专用于每个设备的可能性。

那么这种事情可能吗?如果是这样,需要什么样的设备才能获得它?哎呀,也许我正在使用的开关可以做到这一点,我只是不知道要寻找什么并且没有认出它!但如果它根本没有完成,我也想知道为什么不这样做,找出我的想法中的缺陷在哪里。不过,似乎并非不可能。

networking nat
  • 4 4 个回答
  • 2046 Views

4 个回答

  • Voted
  1. EivinGS
    2012-05-16T09:46:24+08:002012-05-16T09:46:24+08:00

    由于这些设备都具有相同的真实 IP,因此您需要进行某种屏蔽或静态 NAT。

    一种解决方案是将每个设备(交换机端口)放在一个单独的 VLAN 上,并在网络之间进行路由。交换机需要能够在每个端口的基础上执行静态 nat。

    另一种解决方案可能是在所有 VLAN 的一个端口成员上制作一台 linux 机器,并利用虚拟 IP 并在 linux 中执行路由/nat 部分。iptables 可以做 NAT。

    • 3
  2. Best Answer
    Tonny
    2012-05-16T10:54:37+08:002012-05-16T10:54:37+08:00

    可以办到。其实我去年自己做过。

    3个带有LAN监控的Airco单元,每个单元都坚持为10.0.0.2,并期望默认网关为10.0.0.1,子网为255.0.0.0。它可以更改,但只能由不再经营的制造商更改。

    购买新的不是一个选择:工业单位大约每件 100.000 美元。

    最糟糕的事情:通信必须是双向的:远程访问设备中的网络界面,并且它需要能够自己发送系统日志消息。

    诀窍是您需要多个 NAT-ting 路由器才能完成这项工作。单个路由器根本无法处理具有相同 IP 子网的下游 LAN。(至少没有我见过的任何设备......)

    我所做的是购买 3 个便宜的货架路由器 (D-Link DIR-615)。将每个单元放在它自己的路由器后面。在 LAN 端将每个路由器设置为 10.0.0.1,并将 HTTP 端口转发到 10.0.0.2 地址。每个路由器的 WAN 端都在常规 LAN 上,每个路由器都有自己的正常 IP 地址。

    要连接到一个单元,我只需将网络浏览器指向其路由器的 WAN-ip,剩下的由端口转发完成。设备的 Syslog 消息(传出)经过 NAT 转换后似乎来自 3 个路由器。

    唯一的缺点是要重新配置 D-Link,我需要将 PC 连接到每个 D-Link 的 LAN 端,这样我才能进入路由器的基于 Web 的管理界面。(D-link 实际上可以在 WAN 端运行它的管理界面,但据我所知,它只能在端口 80 上运行,这会干扰端口转发。)

    • 3
  3. Bad Dos
    2012-05-29T22:00:17+08:002012-05-29T22:00:17+08:00

    如果固定 IP 地址与您网段上的有效主机不重叠,我会简单地将它们插入并在运行管理软件的主机上为它们设置假地址。只需将静态 arp 条目添加到特定设备的 mac 地址,现在您就可以将它们都放在“使用”不同地址的网段上。

    我会认为这是一个 hack,但由于你暗示了其他原因,为什么你不能直接解决这个问题,这可能适合。

    • 1
  4. Matti Kettu
    2018-11-28T05:55:24+08:002018-11-28T05:55:24+08:00

    我相信这里提出的解决方案要简单得多。

    要求:您的设备,1 台交换机(能够进行 VLAN 中继和访问,为简单起见,我假设是 cisco),1 台 linux PC。我假设到达这些设备的 IP 地址无关紧要(如果是这样,这将变得更加“有趣”)。

    我假设目标设备都在静态 10.0.0.2、网关 10.0.0.1、掩码 255.255.255.0上运行(请参阅此处的另一个答案)。

    在交换机上将端口 1 连接到第一台设备:

    interface Gi0/1
      switchport mode access
      switchport access vlan 10
    

    在交换机上将端口 2 连接到第二个设备:

    interface Gi0/2
      switchport mode access
      switchport access vlan 20
    

    在交换机上,将端口 3 连接到将控制的 PC:

    interface Gi0/2
      switchport mode trunk
      switchport trunk allowed vlan 10,20
    

    现在我们已经有了链路层分离,遗憾的是这还不止于此。

    在您的 Linux PC 上,设置 2 个虚拟接口。下面进一步包含执行此操作的确切命令。

    eth0.10 网络地址 10.0.10.1 255.255.255.0 eth0.20 网络地址 10.0.20.1 255.255.255.0

    现在乐趣来了,非常有趣。虚拟 NIC、VRF、iptables 和许多路由!

    # First create 2 vrf for both devices
    ip link add device1 type vrf table 1
    ip link add device2 type vrf table 2
    ip link set dev vrfdevice1 up
    ip link set dev vrfdevice2 up
    
    # Second, create vlan device
    ip link add link eth0 name eth0.10 type vlan id 10
    ip link add link eth0 name eth0.20 type vlan id 20
    
    # Add the vlan to the correct vrf
    ip link set eth0.10 master vrfdevice1
    ip link set eth0.20 master vrfdevice2
    
    # Assign them proper IP address (unique)
    ip addr add 10.0.10.1/24 dev eth0.10
    ip addr add 10.0.20.1/24 dev eth0.20
    
    # Add the route in the **normal** route table to these devices (so normal kernel can work with it)
    ip route add 10.0.10.0/24 dev eth0.10
    ip route add 10.0.20.0/24 dev eth0.20
    
    # Add the route to the targets on both VRF
    ip route add 10.0.0.0/24 dev eth0.10 table 1
    ip route add 10.0.0.0/24 dev eth0.20 table 2
    
    # Verify your routes in the tables!
    ip -br route show table 1
      10.0.0.0/24 dev eth0.10 scope link
      10.0.10.0/24 dev eth0.10 proto kernel scope link src 10.0.10.1
    ip -br route show table 2
      10.0.0.0/24 dev eth0.20 scope link
      10.0.20.0/24 dev eth0.20 proto kernel scope link src 10.0.20.1
    

    现在真正有趣的是 ip 表!

    iptables -t nat -A OUTPUT --destination 10.0.10.2 -j DNAT --to-destination 10.0.0.2 --out-interface vrfdevice1
    iptables -t nat -A OUTPUT --destination 10.0.20.2 -j DNAT --to-destination 10.0.0.2 --out-interface vrfdevice2
    

    就是这样!我认为。我已经用 wireshark 验证了它是有效的......

    命令给出:telnet 10.0.10.2

    Wireshark 输出:ARP:谁有 10.0.0.2?告诉 10.0.10.1

    再次:telnet 10.0.20.2

    Wireshark 输出:ARP:谁有 10.0.0.2?告诉 10.0.20.2

    这是一项相当大的努力,如果其中任何一项对您有帮助,请告诉我并为答案投票。我们实际上不需要很多昂贵的路由器,VRF 可以解决大部分问题,尤其是与虚拟接口结合使用!有趣的是,这一切现在都可以在 Linux 中运行,很酷的东西

    • 0

相关问题

  • 谁能指出我的 802.11n 范围扩展器?

  • 我怎样才能得到一个网站的IP地址?

  • 在一个 LAN 中使用两台 DHCP 服务器

  • 如何在 Linux 下监控每个进程的网络 I/O 使用情况?

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve