(我正在编辑我自己的问题,并为发现自己处于类似位置的其他人发布答案。)
我想要一个需要在其外部接口上使用公共静态 IP 的防火墙设备,以便与 ISP 批准的 ADSL 调制解调器一起使用。(不推荐这种设置,因为 ADSL 服务和调制解调器是消费级的,但我们需要省钱。)
调制解调器可以充当路由器,这意味着它将对所有流量进行 NAT,并在其外部接口上使用服务的 1 个公共静态 IP。我们不能在此 NAT 后面使用公共子网,因为此 ADSL 服务不支持此功能。
另一种选择是该调制解调器可以充当全桥,但防火墙设备不能终止 PPP 链接。
我可以购买一个调制解调器(DrayTek Vigor 120),它具有半桥模式(DrayTek 称之为“True-DMZ”),其中调制解调器后面的一台设备被分配了 ADSL 链路的一个公共静态 IP 地址。这奏效了,但不幸的是,我们遇到了与 ADSL 线路无关的问题,并且在使用此调制解调器时无法从我们的 ISP 获得任何支持。
如何配置 Linux PC 以使其在半桥模式下终止 PPP 链路?
我在一台带有三个网卡的 PC 上使用 Debian(1 个用于管理,1 个用于连接调制解调器,1 个用于连接防火墙)。我最终得到了 eth0=管理、eth1=调制解调器、eth2=防火墙、ppp0=ADSL 服务,瞧。
将以下内容添加到 /etc/ppp/ip-up (就在“run-parts”行之前):
ifconfig ppp0一个您永远不会使用的子网中的 IP /该子网的 CIDR
ifconfig eth2 up
ifconfig eth2你的公共IP /你的公共子网
ip 路由删除默认值
ip 路由添加默认 dev ppp0
ip 路由刷新缓存
假设您的公共 IP 是 1.1.1.100/24,您的网关是 1.1.1.1(我们的 ISP 为我们分配了这样的内容;据我了解,您通常会在没有网关的情况下获得 1.1.1.100/32)。还可以说 172.16.1.0/24 是一个您永远不会在任何地方使用的网络。所以:
ifconfig ppp0 172.16.1.1/24
ifconfig eth2 up
ifconfig eth2 1.1.1.101/24
ip route delete default
ip route add default dev ppp0
ip route flush cache
Run Code Online (Sandbox Code Playgroud)
您的路线表:
请注意,您分配的是 eth2 1.1.1.101 而不是 1.1.1.100。Eth2 需要与您的公共 IP 位于同一子网,但不是公共 IP 本身。
您需要使用 ISP 使用的真实子网(例如 1.1.1.0/24)或创建一个假装子网(并使用 /30 使其尽可能小)。您将无法访问互联网上此子网中的其他 IP(通常是 ISP 的其他客户)。