Мне нужно разрешить внешнему клиенту изменять IP-адрес компьютера с Linux, на котором запущена программа (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.