我已经使用 Slackware Host 中的 libvirt 成功模拟了两个虚拟机(Windows 2000 是客户端,CentOS 8 是服务器)之间与 Windows 客户端(Windows 2000)的直接串行连接。
现在我想使用 kppp 和相同的 CentOS 8 服务器模拟与 Linux 客户端(Mandriva Linux)的旧 PPP 连接。我没有 56k 调制解调器,但我知道有一个模拟调制解调器的项目,叫做传输控制服务器,在 Windows 上无法工作,因为串行端口被 tcpser 程序占用,因此我使用 Mandriva,在 Mandriva 上我运行 tcpser 程序:
tcpser -d /dev/ttyS0 -n"010010101"
在 Centos 上我运行 tcpser 程序
tcpser -d /dev/ttyS0 -n"010010102"
使用 kppp 并执行“调制解调器询问”报告一切正常(我正在使用 Centos 上的 minicom 检查)..但结果字符串都是空的。
当我尝试从 Mandriva 连接到号码时,调制解调器卡在初始化字符串处,正如您从此 minicom 输出中看到的那样,并且不会创建连接:
OK
OK
+++ATH
OK
OK
ATZ
两个虚拟机通过伪串行(套接字)直接连接,一个是绑定,另一个是连接。这些是机器串行的 XML。
曼德里瓦
<serial type="unix">
<source mode="connect" path="/tmp/ppp.sock"/>
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
<alias name="serial0"/>
</serial>
CentOS
<serial type="unix">
<source mode="bind" path="/tmp/ppp.sock"/>
<target type="isa-serial" port="0">
<model name="isa-serial"/>
</target>
<alias name="serial0"/>
</serial>
更新 1:有些进展,tcpser 只是从串行到 TCP 应用程序建立了一个“桥梁”,在我的例子中,不可能从串行到 mgetty 建立桥梁(不是 TCP,它使用串行线),但可以从串行到 telnet 建立桥梁:
tcpser -d /dev/ttyS1 -s 38400 -l 7 -tsSiI -i "s0=1" -n"010010102=centos.domain.private:23"
我已经尝试从 Windows 客户端使用超级终端并且运行良好,我可以以旧的好的 ptsn-modem 方式登录。
不幸的是,在 Mandriva 和 Windows 客户端中,PPP 连接都失败,并出现“环回错误”、“检测到环回”错误 17
PSL 我知道 Windows 2000、Mandriva Linux 不受支持并且存在安全风险,但只是在测试。
答案1
使用这个非常好的解决方案“如何”博客文章,我只改变了PPP的一些选项以使用pap验证。
我曾尝试从 Windows 和 Mandriva 进行连接,并且工作正常,使用假密码或空密码拒绝登录(PPP 的登录选项)一个好的“加分项”是将真正的串行调制解调器连接到假的“tnt”线路,只是为了听到连接握手的悦耳声音。
/etc/ppp/options
lock
auth
login
/etc/ppp/options.tnt3
asyncmap 0
crtscts
local
silent
192.168.100.1:192.168.100.100
require-pap
115200
/etc/ppp/pap-secrets
# Secrets for authentication using PAP
#
# client server secret IP addresses
* * "" 192.168.1.100
最后,我用这些简单的参数启动 PPP 守护进程
pppd /dev/tnt3 nodetach persist