我刚刚从 ISP 那里获得了一个新安装,用于我正在开展的一个项目,其中我使用自己的路由器通过 PPPoE 连接到 ISP。我的路由器(Ubuntu 16.04)有两个以太网适配器 - 一个运行 PPPoE 连接到 ISP,另一个为我的本地 LAN 提供 192.168.0.0。该 LAN 上的适配器是 192.168.0.1。
我设法让 PPPoE 启动并运行,并使 DHCP 和 DNS 正常工作。此时一切正常。此时我可以使用 ISP 给我的静态 IP 远程 ssh 进入此框。
最后一步是让 NAT 工作。一旦我启动并运行 NAT,我就无法再使用我的静态 IP 从互联网 ssh 进入。如果我刷新我的 iptables,那么一切都会好起来(但当然我会失去 NAT)。当我重新加载表时,我会失去 ssh。
在 NAT 运行的情况下,其他一切都很好 - 路由器后面的机器可以访问远程网站,也可以通过 SSH 连接到远程站点。唯一有问题的是我远程通过 SSH 连接到路由器的能力。
现在,我意识到我可能不想长期远程 ssh 连接,但我的问题是如何解决这个问题,而不是如何“不这样做”。首先,我想了解发生了什么,其次,在短期内,当我在玩和实验时,我希望能够从互联网 ssh 进入这个路由器。
我了解 NAT 背后的基本原理及其作用,但由于我是 NAT 新手,我不太了解表格如何让它完成需要完成的工作。所以我也希望有人能帮助我 - 里面只有几行需要解释。我希望有人至少能看看我的 iptables 并找出我需要添加或删除什么来解决问题,如果他们能帮助我理解原因就更好了。
以下是我从 iptables-save 获得的信息:
*filter
:INPUT ACCEPT [437:32936]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1025:121653]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i ppp0 -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i ppp0 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i enp1s0 -o ppp0 -j ACCEPT
-A FORWARD -i ppp0 -o enp1s0 -j REJECT --reject-with icmp-port-unreachable
COMMIT
*nat
:PREROUTING ACCEPT [664:132498]
:INPUT ACCEPT [227:18335]
:OUTPUT ACCEPT [410:31400]
:POSTROUTING ACCEPT [7:522]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
*mangle
:PREROUTING ACCEPT [53197:28014137]
:INPUT ACCEPT [1215:191342]
:FORWARD ACCEPT [51916:27803280]
:OUTPUT ACCEPT [1027:122421]
:POSTROUTING ACCEPT [52950:27926212]
COMMIT
[123456:987654] 符号是什么意思?
这就是整个故事。提前谢谢大家。
—gt—
答案1
关于符号,来自手册页:<chain-name> <chain-policy> [<packet-counter>:<byte-counter>]
是规范 - 第一个数字是按照默认链策略处理的数据包数量,第二个数字是所有数据包的总字节数。
关于您无法访问 SSH 的问题,那是因为您没有从外部为 SSH 端口和服务指定 ACCEPT 规则,并且对所有新流量都有默认的 REJECT 规则。
您需要在通过 PPPoE 的入站 SSH 上制定一个 ALLOW 规则 --A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT
在 REJECT 规则之前,指定“对于通过ppp0
接口进入系统的端口 22 上的新的 TCP 连接,允许该连接。