Linux:如何在启动时配置辅助 IP 地址?

jed*_*awk 0 firewall configuration ip iptables

问候专家,

我在这里配置了一个不错的小型 linux 防火墙机器。它eth1适用于内部网络 (10.0.0.*) 和eth2外部网络 (65.130.27.69/27)。 eth0当前未使用。(顺便说一下,我使用的是假 IP 地址。我不知道谁拥有这些地址。)

我已经完成了所有 iptables 的工作并使用 DNAT 进行了正确设置,一切正常,我已经更新了/etc/sysconfig/iptables. 都好。

这就是它变得有趣的地方。我们这里有一堆 IP,另一个服务器想要接收端口 80 的流量,但是在不同的 IP 上。我将规则添加到 iptables,然后将辅助 IP 添加到eth2如下所示:

# ip addr  add 65.130.27.70/27  dev eth2  broadcast 65.130.27.79
Run Code Online (Sandbox Code Playgroud)

这有效:

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
    link/ether 08:00:09:dc:f4:c1 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:a0:c9:03:ac:9b brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.0/8 brd 10.255.255.255 scope global eth1
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:a0:c9:73:7f:97 brd ff:ff:ff:ff:ff:ff
    inet 65.130.27.69/28 brd 65.130.27.79 scope global eth2
    inet 65.130.27.70/28 brd 65.130.27.79 scope global secondary eth2
Run Code Online (Sandbox Code Playgroud)

现在设备eth2侦听两个 IP 地址,.69 和 .70。一切都很好,工作正常。防火墙按其应有的方式路由流量,内部服务器按其应有的方式接收流量。

然后,有一天,由于未知原因,防火墙机器重新启动。自从我最初设置它已经几年了,所以我完全忘记了这个辅助IP地址。后来,人们开始抱怨某某服务不起作用。它没有工作,因为防火墙机器在没有辅助 IP 地址的情况下恢复了,.70上面的那个。所以我再次使用上述魔术命令手动添加它。

问题来了:如何设置这台机器在启动时自动添加辅助 IP 地址?

我已经提出了一些解决方案:

我已经将这个神奇的命令添加到/etc/rc.d/rc.local

# ip addr  add 65.130.27.70/27  dev eth2  broadcast 65.130.27.79
Run Code Online (Sandbox Code Playgroud)

我很确定它会在(或何时)再次重新启动时起作用。但是,我遇到了这些文档:

http://www.redhat.com/docs/manuals/linux/RHL-9-Manual/ref-guide/s1-networkscripts-interfaces.html

通过遵循带有克隆界面的底部附近的示例,我可以创建另一个文件,/etc/sysconfig/network-scripts/ifcfg-eth2-secondary并在其中放置一行:

IPADDR=65.130.27.70
Run Code Online (Sandbox Code Playgroud)

这会替换此设备上的现有 IP 地址,还是添加另一个 IP 地址?这种方法是否比上面的方法更推荐?

我为什么不自己试试这些呢?在我安装另一台防火墙机器之前,我不会弄乱生产机器。

小智 7

通常你会做的是创建一个别名,这样你就会有一个绑定到 eth2 的 IP 和一个绑定到 eth2:1 的 IP

您将这样配置启动脚本

/etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
IPADDR=65.130.27.69
ONBOOT=yes
BOOTPROTO=static
BROADCAST= ...等等等等。


/etc/sysconfig/network-scripts/ifcfg-eth2:1
DEVICE=eth2:1
IPADDR=65.130.27.70
ONBOOT=yes
BOOTPROTO=static
BROADCAST= ...等等等等。