篇首语:本文由小编为大家整理,主要介绍了如何在Unbuntu上快速部署PPTP服务相关的知识,希望对你有一定的参考价值。
参考技术A 一、PPTP简介Apple 从其网络配置系统中删除了 macOS Sierra 中的高级 PPTP 支持。但是,PPP 内部仍然存在,包括/usr/sbin/pppd
和/etc/ppp/
。
如何以编程方式在 macOS Sierra / High Sierra 上使用剩余的内容启动 PPTP *** 连接?
【问题讨论】:
【参考方案1】:此方法创建一个 不 发送所有流量并且不 覆盖其他 DNS 提供商的 PPTP 连接,这意味着它适用于多个同时具有不同的 *** 连接DNS搜索域,并按顺序关闭它。
不发送所有流量需要您事先知道 *** 子网。如果不这样做,则必须发送所有流量(见下文),因为普通 PPP/LCP 无法告诉客户端其子网(尽管理论上 ip-up
和 ip-down
脚本可以从收到的 IP 地址中猜出它)。
将此 perl 保存为 /usr/local/bin/pptp
:
#!/usr/bin/env perlif (@ARGV) my $name = $ARGV[0]; if (length $name && -e "/etc/ppp/peers/$name") my $pid; $SIG"INT" = "IGNORE"; die "fork: $!" unless defined ($pid = fork); if ($pid) # parent $SIG"INT" = sub kill HUP => $pid; ; wait; exit; else #child $SIG"INT" = "DEFAULT"; exec "pppd", "call", $name; exit; else print "Error: PPTP name: $name\n"; else opendir my $d, "/etc/ppp/peers" or die "Cannot read /etc/ppp/peers"; while (readdir $d) print "$_\n" if !($_ eq "." || $_ eq ".."); closedir $d;
以sudo pptp AcmeOffice
运行它,其中AcmeOffice
是PPP 连接名称,然后使用单个Control-C/SIGINT 将其关闭。
在/etc/ppp/peers
中,创建PPP连接文件,本例为/etc/ppp/peers/AcmeOffice
:
plugin /System/Library/SystemConfiguration/PPPController.bundle/Contents/PlugIns/PPPDialogs.pppplugin PPTP.pppnoauth# debug redialcount 1redialtimer 5idle 1800#mru 1320mtu 1320receive-allnovj 0:0ipcp-accept-localipcp-accept-remoterefuse-paprefuse-chap#refuse-chap-md5refuse-eaphide-password#noaskpassword#mppe-stateless mppe-128 mppe-stateful require-mppe passive looplocal nodetach# defaultroute#replacedefaultroute# ms-dns 8.8.8.8# usepeerdnsnoipdefault# logfile /tmp/ppp.AcmeOffice.log ipparam AcmeOfficeremoteaddress office.acme.comuser misteracmepassword acme1234
最后 4 个选项是特定于连接的。请注意,密码以明文形式存储。推荐使用chown root:wheel
和chmod 600
。 nodetach
、ipcp-accept-local
、ipcp-accept-remote
、noipdefault
很关键。
由于我们不会成为/替换默认路由,因此您必须手动更改路由表。在/etc/ppp/ip-up
脚本中添加AcmeOffice
条目:
#!/bin/sh#params: interface-name tty-device speed local-IP-address remote-IP-address ipparamPATH=$PATH:/sbin:/usr/sbincase "$6" in AcmeOffice) route -n add -net 192.168.1.0/24 -interface "$1" ;; AcmeLab) route -n add -net 192.168.2.0/24 -interface "$1" ;; AcmeOffshore) route -n add -net 192.168.3.0/24 -interface "$1" ;; ***Book) ;; *) ;;esac
还有你的/etc/ppp/ip-down
脚本:
#!/bin/sh#params: interface-name tty-device speed local-IP-address remote-IP-address ipparamPATH=$PATH:/sbin:/usr/sbincase "$6" in AcmeOffice) route -n delete -net 192.168.1.0/24 -interface "$1" ;; AcmeLab) route -n delete -net 192.168.2.0/24 -interface "$1" ;; AcmeOffshore) route -n delete -net 192.168.3.0/24 -interface "$1" ;; ***Book) ;; *) ;;esac
如果 *** 有 DNS 搜索域(即somehost.office.acme.com
),则在/etc/resolver/
中创建一个以 DNS 后缀命名的文件,例如 /etc/resolver/office.acme.com
,内容如下:
nameserver 192.168.1.1domain office.acme.com
请注意,这需要事先知道目标域和名称服务器。理论上ip-up
& ip-down
可以按需创建和删除这个文件。
要发送所有流量(如果您不知道目标子网),请取消注释 PPP 连接文件中的 #defaultroute
并将 ip-up
和 ip-down
条目留空(例如 ***Book
示例)。要使用 *** 覆盖您的 DNS,请取消注释 usepeerdns
。
【讨论】:
以上是关于如何在Unbuntu上快速部署PPTP服务的主要内容,如果未能解决你的问题,请参考以下文章