与 VirtualBox 客户机的 PPP 连接

与 VirtualBox 客户机的 PPP 连接

为了测试某些软件,我尝试在 Ubuntu 18.04 主机和在 VirtualBox 中运行的 Ubuntu 16.04 客户机之间建立 PPP 连接。到目前为止,我已经尝试过:

  • 在主机上创建虚拟串行设备,socat PTY,link=/dev/ttyS14 PTY,link=/dev/ttyS15然后将 virtualbox 连接COM1/dev/ttyS14作为主机设备 - 但 VirtualBox 抱怨它无法在端口上设置选项(在这种情况下,/dev/ttyS14是指向 的链接/dev/pts/1)。
  • 将 VirtualBox 配置COM1为主机管道/tmp/vbox-serial。但pppd不知道命令行选项/tmp/vbox-serial是串行端口。
  • 创建一个虚拟串行设备并将其链接到一个套接字,socat PTY,link=/dev/ttyS14 PIPE:/tmp/vbox-serial并配置 VirtualBox以使用主机管道选项将其COM1端口连接到现有套接字,但这会导致VM 启动(并且VirtualBox 以组成员用户的身份运行)。/tmp/vbox-serialVERR_NET_CONNECTION_REFUSED/tmp/vbox-serialprw-rw-r-- 1 root ttytty

有人能指出正确的组合以便 VirtualBox 和 pppd 可以通信吗?

答案1

我最终通过 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

VM 现在应该能够通过 PPP 链路将流量路由到互联网(假设您的主机可以通过 访问互联网eth0)。

相关内容