Идеи:
1 )Пусть pon
создаст устройство в пространстве имен по умолчанию, а затем переместит его в physical
. Скриптируйте процесс.
2)pon
— это просто скрипт, если вы на него посмотрите, он вызывает pppd
. Скопируйте скрипт, измените его так, чтобы он использовал netns exec
для вызова pppd
. Посмотрите, решит ли это проблему. Как сказал Хауке, вам нужно устройство PPPoE в пространстве имен. Пара veth может быть необходимой, а может и не быть, в зависимости от того, что вы хотите делать с пространством имен.
Редактировать
Я не знаю вашей точной настройки (все файлы конфигурации ppp и pppoe отсутствуют в описании ), поэтому я попробовал упрощенную настройку, которая соединяет два пространства имен через PPPoE. Как и ожидалось, запуск pppd
в пространстве имен приводит к появлению устройства ppp0
в этом пространстве имен, поэтому я действительно не знаю, что пошло не так в вашей конфигурации.
Проверьте следующее (от имени пользователя root):
ip netns add ns1
ip netns add ns2
ip link add veth1 type veth peer name veth2
ip link set veth1 addr 52:54:00:00:00:01
ip link set veth2 addr 52:54:00:00:00:02
ip link set veth1 netns ns1
ip link set veth2 netns ns2
ip -n ns1 link set lo up
ip -n ns1 link set veth1 up
ip -n ns2 link set lo up
ip -n ns2 link set veth2 up
ip netns exec ns1 pppd pty '/usr/sbin/pppoe -I veth1 -e 1:52:54:00:00:00:02 -m 1412' noaccomp nopcomp asyncmap 000a0008 noauth nocrtscts xonxoff local maxfail 0 192.168.36.1:192.168.36.2
ip netns exec ns2 pppd pty '/usr/sbin/pppoe -I veth2 -e 1:52:54:00:00:00:01 -m 1412' noaccomp nopcomp asyncmap 000a0008 noauth nocrtscts xonxoff local maxfail 0 192.168.36.2:192.168.36.1
Теперь запустите два xterms
в пространстве имен как пользователь username
, чтобы вы могли посмотреть конфигурацию, протестировать с помощью ping
и т. д. (Мне нравится иметь цветной фон для этого, чтобы я знал, что есть что):
ip netns exec ns1 su -c "xterm -bg yellow &" username
ip netns exec ns2 su -c "xterm -bg lime &" username
Если это работает, что-то в способе, которым ваши сценарии PPPoE -настраивают вещи, мешает. Если это не работает, что-то еще не так.
Do we have an equivalent in archlinux?
Нет, вам нужно передать опцию --noconfirm
в pacman
.
is really annoying when the script has 20 different lines
В скриптах мне нравится "маскировать" команду функцией:
pacman() {
command pacman --noconfirm "$@"
}
pacman -S something
# really runs pacman --noconfirm -S something