Для тестирования некоторого программного обеспечения я пытаюсь установить PPP-соединение между хостом Ubuntu 18.04 и гостем Ubuntu 16.04, работающим в VirtualBox. Пока что я пробовал:

  • Создание виртуальных последовательных устройств на хосте с помощью socat PTY,link=/dev/ttyS14 PTY,link=/dev/ttyS15 и последующим подключением COM1 виртуальной коробки к /dev/ttyS14 в качестве хост-устройства, но VirtualBox жалуется, что не может устанавливать параметры на порту (в этом случае /dev/ttyS14 является ссылкой на /dev/pts/1).
  • Конфигурирование COM1 VirtualBox в качестве канала хоста для /tmp/vbox-serial . Но pppd не знает, что параметр командной строки /tmp/vbox-serial является последовательным портом.
  • Создание виртуального последовательного устройства и связывание его с сокетом с помощью socat PTY,link=/dev/ttyS14 PIPE:/tmp/vbox-serial и настройка VirtualBox для подключения его порта COM1 к существующему сокету на /tmp/vbox-serial с помощью опция host pipe, но это приводит к VERR_NET_CONNECTION_REFUSED при запуске виртуальной машины (/tmp/vbox-serial имеет значение prw-rw-r-- 1 root tty а VirtualBox работает как пользователь, который является членом группы tty).

Кто-нибудь может указать мне правильную комбинацию, чтобы VirtualBox и pppd могли общаться?

1 ответ1

0

В конце концов я получил что-то, работающее над TCP. На хосте:

sudo socat PTY,link=/dev/ttyS14 TCP4-LISTEN:1236
sudo pppd /dev/ttyS14 4000000 192.168.1.1:192.168.1.2 asyncmap 0 proxyarp lock crtscts modem nodetach noauth

Настройте порт COM1 гостя следующим образом:* Режим TCP * Подключение к существующему каналу / сокету * Путь / Адрес 127.0.0.1:1236

Тогда в гостях:

sudo pppd /dev/ttyS0 4000000 asyncmap 0 lock crtscts modem nodetach noauth

Предполагая, что связь установлена, тогда настройте NAT на хосте:

sudo iptables -A FORWARD -o eth0 -i ppp0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

И настройте маршрутизацию в гостевой системе:

sudo ip route add default dev ppp0 metric 50

Виртуальная машина должна теперь иметь возможность направлять трафик через канал PPP к Интернету (при условии, что у вашего хоста есть рабочий доступ в Интернет через eth0).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .