Я пытаюсь объединить Руководство Скотта Лоу по созданию пространства имен с участием этот ответ о пересылке трафика между двумя интерфейсами.
У меня есть этот сценарий, который запускается при каждой перезагрузке с использованием директивы cron @reboot: (я использую сценарий, потому что ни одна из этих команд, похоже, не сохраняется после перезагрузки.)
# Setup VPN
ip netns add vpnspace
ip link add vpnopen type veth peer name vpnbind
ip link set vpnopen netns vpnspace
ip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
Когда я запускаю скрипт вручную, используя sudo
, выполняется нормально. Однако, когда скрипт запускается cron, четвертая строка, ip netns exec vpnspace ifconfig vpnopen 10.0.0.1/24 up
, не выполняется. Почему это происходит? Как мне заставить его выполнить?
TL; DR: ifconfig vpnopen 10.0.0.1/24 up
не выполняется при вызове cron внутри пространства имен
=============
Разъяснения:
@reboot /home/ubuntu/startupscripts/rootscripts.sh
sudo ip netns exec vpnspace ifconfig
в терминале, чтобы проверить, был ли введен IP-адрес, терминал возвращает пустой вывод. Я попытался записать вывод, добавив >>rootscripts.log
, но ничего не регистрируется и сообщение об ошибке не возвращается.Команды cron обычно выполняются с PATH по умолчанию. Хотя ip обычно находится в / bin, ifconfig чаще всего находится в / sbin. . . поэтому попробуйте поместить / sbin / ifconfig в свою командную строку.