Я пытаюсь объединить руководство Скотта Лоу по созданию пространства имен с этим ответом о пересылке трафика между двумя интерфейсы .
У меня есть этот сценарий, который запускается при каждой перезагрузке с использованием директивы 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 в командной строке.