PPTP:在启动时启用 ppp0 接口?

PPTP:在启动时启用 ppp0 接口?

总结我能否确保 PPTP ppp0 接口始终可用,以便 nginx 和其他服务可以绑定到其 IP 地址?

我在 Ubuntu 12.04 上有一个 nginx 服务器,托管一些公共网站。此服务器还充当 PPTP VPN,配置如下:

localip 10.76.44.1
remoteip 10.76.44.100-110

我正在安装一个新服务,代理在 nginx 后面,我想限制 VPN 上客户端的访问。我想我可以告诉服务器监听端口localip

server {
    listen 10.76.44.1:80;
    ...
}

当我最初测试它时,它工作正常,但是当我在活动的 PPTP 连接之外重新启动 nginx 服务时,ppp0 接口不可用,并且 nginx 无法绑定到 IP 地址:

nginx: [emerg] bind() to 10.76.44.1:80 failed (99: Cannot assign requested address)
nginx: configuration file /etc/nginx/nginx.conf test failed

在这个特定情况下,我可以使用 nginxdeny指令以我想要的方式限制访问,但对于我安装的其他服务,情况可能并非如此。有没有办法在启动时启动这个 ppp0 接口,以便 nginx 可以使用它?我是否需要另一种解决方法,例如绑定到仅限内部使用的 IP,以及为 VPN 客户端添加转发规则

答案1

假设您正在运行 Linux,您可以将 ppp 接口作为系统配置的一部分。这样它将在启动时启用。请参阅: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-networkscripts-control.html https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_ppp_connection

您只需要将您的 PPTP 软件连接到接口启动/关闭阶段。

我想到另一个解决方案是编辑 Nginx 初始化脚本,这样它只会在启动之前启用接口,并在服务停止时禁用它。

答案2

除了评论和答案之外,我还将描述解决您的问题/疑问的另一种方法:

不确定您正在运行什么操作系统,因为您没有说明这一点,但如果是某种 Linux 版本:允许进程绑定/侦听“非本地”IP。要执行此操作:

echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

如果你想要让它持久,也就是“重启后”仍然有效,那么你必须把它放在“某个地方”。对于基于 Debian 的发行版,例如 /etc/sysctl.conf:在里面,放入一行

net.ipv4.ip_nonlocal_bind = 1

并执行sysctl -p或重新启动。

相关内容