![Debian 路由器:允许来自内联网的传入流量](https://linux22.com/image/1402543/Debian%20%E8%B7%AF%E7%94%B1%E5%99%A8%EF%BC%9A%E5%85%81%E8%AE%B8%E6%9D%A5%E8%87%AA%E5%86%85%E8%81%94%E7%BD%91%E7%9A%84%E4%BC%A0%E5%85%A5%E6%B5%81%E9%87%8F.png)
我有学校网络10.0.0.0/8
我在 eth0 上运行了 debian,并在 eth1 上运行了本地网络,并分配了静态 IP10.122.72.2
网关10.122.72.1
10.122.2.0/24
问题是我可以访问其他网络,例如,10.122.1.0/24
但我无法从外部访问我的本地网络,例如,ping 10.122.2.1
从10.122.1.0/24
网络
tracert 10.122.1.1
从我的本地网络告诉我数据包是如何路由的10.122.2.1 -> 10.122.72.1 -> 10.122.1.1
并tracert 10.122.2.1
从10.122.1.0/24
网络给我10.122.1.1 -> 10.122.254.9 -> request timed out
sudo route -n
给我这个:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.122.72.1 0.0.0.0 UG 0 0 0 eth0
10.122.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.122.72.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
这是我的/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 10.122.72.2
netmask 255.255.255.0
network 10.122.72.0
broadcast 10.122.72.255
gateway 10.122.72.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 202.46.129.2
auto eth1
iface eth1 inet static
address 10.122.2.1
netmask 255.255.255.0
network 10.122.2.0
broadcast 10.122.2.255
这是我的防火墙规则
outif="eth0"
lanif="eth1"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -t nat -A POSTROUTING -o $lanif -j MASQUERADE
iptables -t nat -A POSTROUTING -o $outif -j MASQUERADE
我怎样才能使外部可以访问我的本地网络?
提前致谢
答案1
这里的问题不是您的路由器(至少现在还不是)。
您运行的结果tracert
显示10.122.254.9
似乎不知道下一步该将数据包路由到哪里。您需要配置学校网络中的其他路由器以路由10.122.2.0/24
到您的路由器。
一旦完成后,您甚至可以从路由器中删除 NAT。
根据您给出的两个tracert
结果,您的网络似乎是这样的:
IP 路由逐跳进行。当您尝试将数据包发送到 时10.122.2.1
,有两种可能性:
- 您与以下设备位于同一子网
10.122.2.1
:您只需找出其第 2 层地址并将数据包发送给它。 - 您位于不同的子网中。您查找路由表以找到子网中可让您更接近的路由器
10.122.2.1
,找到其第 2 层地址并向其发送数据包。然后,他按照您执行的相同步骤进行操作。
在您的情况下,当您在网络上时10.122.1.0/24
,如果上面给出的表示是正确的,您可以向学校控制的路由器 1 和 2 发送消息(2 是默认网关,当您不知道将其发送给谁时)。
由于您不在10.122.2.0/24
网络上,并且不知道将其发送给谁,因此您将它发送到默认网关,10.122.1.1
即学校控制的路由器 2。它不在同一个子网上10.122.2.1
,也没有特殊条目,因此将它发送到它的默认网关,,10.122.254.9
而默认网关又可能尝试将其发送到互联网,此时它会被丢弃,因为它10.122.2.1
在私有 IP 范围内。
如果您在10.122.72.0/24
网络上,您可以添加一个条目来告诉您的计算机可以10.122.2.0/24
通过 访问10.122.72.2
,但由于您在另一个子网上,您需要告诉学校控制的路由器可以10.122.2.0/24
通过 访问10.122.72.2
。在这种情况下,这意味着使用直接条目更新学校控制路由器 1,以便您的网络可以通过您的 Debian 计算机访问,并使用直接条目更新学校控制路由器 2,以便您的网络可以通过学校控制路由器 1 访问。
如果不控制学校路由器,你就无法做到这一点。你能做的最好的事情就是在你的 Debian 机器上设置一个 VPN 服务器,然后10.122.2.0/24
使用 VPN 连接将流量隧道传输到那里。