我有一个看起来像这样的系统:
+----------+ +--------+ +--------+
| | | | | |
| Internet |<--->| Modem |<--->| Router |
| | | | | |
+----------+ +--------+ +--------+
^
|
v
+--------+
| |
+--------->| Switch |<--------+-------------+........ (other Cn computers)
| | | | |
| +--------+ | |
| ^ | |
| | | |
v v v v
+--------+ +--------+ +--------+ +--------+
| | | | | | | |
| A | | B | | C1 | | C2 |
| | | | | | | |
+--------+ +--------+ +--------+ +--------+
路由器的 IP 地址为 192.168.xx。
计算机 A 和 B 位于同一本地网络(192.168.xy 和 192.268.xz)。
计算机 C1 至 Cn 位于具有不同 IP 地址 (10.xyz) 的子 LAN 上。
因此,我以这样的方式设置 B,使其可以与 C1 和 Cn 通信,它也有一个 10.xyz IP 地址。
我在所有计算机上都安装了防火墙,以确保阻止不需要的流量。我不希望外部人员连接到我的服务。
A 和 B 效果很好。我可以完全访问互联网并且 NTP 工作正常等。但是,C1 到 Cn 有问题。他们没有得到外界的任何答复。如果我尝试 ping 一个公共 IP 地址,我根本得不到任何回报。不过,我可以毫无问题地 ping B。
当我执行 ping、检查 DNS、尝试连接到 Internet 上的任何内容时,我看不到 B 或 C1 到 Cn 上的防火墙阻止的任何内容。所以我认为路由器是罪魁祸首。
路由器是Netgear,防火墙已启动。我不明白的是,由于数据包是由 B 转发的,如果 B 工作(看到互联网),我会认为 C1 转发到 Cn 的数据包会像 B 数据包一样工作。我在这里有点不知所措。
以下是代表转发规则的一些条目iptables
:
这是设置的一部分nat
:
Chain POSTROUTING (policy ACCEPT 141 packets, 9904 bytes)
pkts bytes target prot opt in out source destination
857 54781 SNAT all -- * eno1 10.0.5.21 0.0.0.0/0 to:10.5.10.2
这里我有FORWARD
标准filter
:
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
29 1884 bad_tcp_packets all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- eno1 eno1 !10.0.5.1 10.0.5.16/28 state RELATED,ESTABLISHED tcp flags:!0x17/0x02
0 0 ACCEPT udp -- eno1 eno1 !10.0.5.1 10.0.5.16/28 state RELATED,ESTABLISHED udp
8 480 ACCEPT tcp -- eno1 eno1 10.0.5.16/28 0.0.0.0/0 tcp
21 1404 ACCEPT udp -- eno1 eno1 10.0.5.16/28 0.0.0.0/0 udp
这些标志意味着-syn
状态测试中哪些是多余的。我们从来都不会太谨慎...
最后,在INPUT
链中我也有RELATED,ESTABLISHED
返回的数据包不会被阻止:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
39 5428 ACCEPT tcp -- eno1 * 0.0.0.0/0 10.0.5.1 state RELATED,ESTABLISHED tcp flags:!0x17/0x02
0 0 ACCEPT tcp -- eno1 * 0.0.0.0/0 10.5.10.2 state RELATED,ESTABLISHED tcp flags:!0x17/0x02
我在另一台计算机上有一个非常相似的设置,它工作得很好,所以我真的认为它是 Netgear 路由器。任何人都知道要使其正常工作需要什么?
答案1
好的!我让它工作了。
所以...在我的另一台计算机上,主计算机(如 A)实际上在 Internet 上获得了一个静态 IP 地址。这意味着它的工作原理就像路由器一样。换句话说,任何访问该计算机的东西都可以访问互联网。
但是,在其他新设置中,计算机 A 仅位于 LAN 上,而不是直接位于 Internet 上。因此to:<ip>
需要使用该计算机的 A 地址,而不是另一个最终“丢失”在那里的本地地址。
Chain POSTROUTING (policy ACCEPT 141 packets, 9904 bytes)
pkts bytes target prot opt in out source destination
857 54781 SNAT all -- * eno1 10.0.5.21 0.0.0.0/0 to:10.5.10.2
^
this had to be A's address 192.168.x.y ---+
就是这样。一旦我切换了那个 IP 地址,它就开始像魅力一样发挥作用。