是否可以在环回设备上放置真实的 IP(不在 127.xxx 范围内)?
答案1
作为使用 的替代方案lo:0
,您还可以使用dummy
Linux 中的接口,如下所示:
ifconfig dummy0 10.0.0.1/32
ifconfig dummy1 10.1.1.1/24
除了其他答案之外:
- 我不建议更改通常/官方的环回接口地址,因为很多功能都依赖于它;
- 但是,您可以拥有/创建多个环回/虚拟接口 - lo:0 到 lo:255 或 dummyX 接口;
- 必须考虑到 lo:0 到 lo:255 是别名,而 dummyX 是完整接口;
- 此外,Linux 中通过 BGP 或 OSPF 创建虚拟 IP 的常用策略之一是将它们分配给环回/虚拟接口,并通过路由建立通往它们的路径;
- 同样,某些守护进程在以别名(例如 quagga )宣布地址时存在问题 - 因此在这些情况下建议使用 dummyX 接口;
- 我要强调的是,如果没有基础设施中的路由,此类地址仅在相关服务器中是已知的/能够使用的;
- 在没有正确路由的情况下将私有/公共地址分配给环回接口可能是黑名单通信的一种低计算成本措施暂时地具有 IP 地址/网络。
有关更多详细信息,请参阅使用 Quagga/BIRD 完成的 BIND 选播设置教程。
路由线索在这里:OSPF:将 Quagga 迁移到 BIRD
PS Linux 默认情况下仅创建 dummy0 和 dummy1,并且必须指示其创建更多数量的虚拟接口。
答案2
在当前带有该实用程序的 Linux 内核上,ip
它非常简单:
ip addr add 10.0.1.8 dev lo
当您有一个在接口上绑定端口的服务,并且想要在同一端口和网络上运行不同的程序时,这会很有用。我用它来启用两者bind
并dnsmasq
在同一服务器上共存。
如果您用于/etc/network/interfaces
配置接口,请更新该lo
节以包括:
up ip addr add 10.0.1.8 dev lo
答案3
没有什么禁止这样做。
#ifconfig lo:1 10.0.0.1/8 #ifconfig 低:1 lo:1 链路 encap:本地环回 inet 地址:10.0.0.1 掩码:255.0.0.0 上环回运行 MTU:65536 公制:1 #平-c 1 10.0.0.1 PING 10.0.0.1 (10.0.0.1) 56(84) 字节数据。 来自 10.0.0.1 的 64 字节:icmp_seq=1 ttl=64 时间=0.025 ms --- 10.0.0.1 ping 统计数据 --- 发送 1 个数据包,接收 1 个数据包,丢包 0%,时间 0ms rtt 最小值/平均值/最大值/mdev = 0.025/0.025/0.025/0.000 毫秒
更新:
为了使该地址在 Ubuntu 16.04 上重新启动后保持不变,您可以/etc/network/interfaces
使用以下ethtool
命令修改文件:
auto lo lo:1
iface lo inet loopback
iface lo:1 inet static
address 10.0.0.1
network 10.0.0.0
netmask 255.0.0.0
答案4
是的,但这并不意味着这是一个好主意。如果您使用系统将要访问的 IP,则它尝试发送到那里的任何数据都将被重定向到本地系统,这可能会导致各种奇怪的网络问题。这尤其意味着您不能安全地使用以下范围之外的任何内容:
127.0.0.0/8
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
240.0.0.0/4
以下任何情况可能存在例外情况,具体取决于其他网络接口的配置方式:
10.0.0.0/8
192.168.0.0/16
172.16.0.0/12
169.254.0.0/16
这是一个案例RFC 1925,第 2 节第 3 项适用。