我需要允许外部客户端更改运行程序的 Linux 机器的 IP(C++)。我已经知道如何列出所有本地接口和分配给它们的当前 IP。我也知道如何以编程方式更改上述 IP。
我需要知道的是如何使这种更改永久化,因此,如果机器重新启动,它会保持相同的网络配置。最好的方法是什么?手动解析 /etc/network/interfaces?调用一些linux命令?
编辑:我正在使用 Debian。
谢谢!
我需要允许外部客户端更改运行程序的 Linux 机器的 IP(C++)。我已经知道如何列出所有本地接口和分配给它们的当前 IP。我也知道如何以编程方式更改上述 IP。
我需要知道的是如何使这种更改永久化,因此,如果机器重新启动,它会保持相同的网络配置。最好的方法是什么?手动解析 /etc/network/interfaces?调用一些linux命令?
编辑:我正在使用 Debian。
谢谢!
是的,操纵/etc/network/interfaces
是实现这一目标的方法(只需存储备份以防万一出现问题)。
另外,如果接口是由网络管理器管理的(服务器很少出现这种情况,但发生在桌面上),我认为您可以通过 dbus 调用来操作它。
顺便说一句,你应该提到分发,而不是语言——如果你没有提到文件,就不可能猜到 ;-)
要使更改永久生效,您必须在/etc/network/interfaces
DNS 服务器 (resolv.conf) 中写入网络配置。
http://wiki.debian.org/NetworkConfiguration
如果您不想每次都解析接口,可以将 IP 和网络保存在配置文件中以恢复它。然后你只需要重写“/etc/network/interfaces”。
更改网络接口配置后,您必须重新启动网络堆栈(特定于发行版)。
重启接口auto
:
$ /etc/init.d/networking restart
重启其他接口:
$ ifup [iface]
您可以在脚本中调用ifconfig
和路由commands
,或者更好,您可以编辑您提到的文件,具体取决于您的 Linux 发行版。