![允许 IP 数据包通过路由器从 LAN 转发到调制解调器](https://linux22.com/image/27452/%E5%85%81%E8%AE%B8%20IP%20%E6%95%B0%E6%8D%AE%E5%8C%85%E9%80%9A%E8%BF%87%E8%B7%AF%E7%94%B1%E5%99%A8%E4%BB%8E%20LAN%20%E8%BD%AC%E5%8F%91%E5%88%B0%E8%B0%83%E5%88%B6%E8%A7%A3%E8%B0%83%E5%99%A8.png)
简而言之:我希望能够通过路由器从我的电脑远程登录到我的调制解调器。
上有一个简单的家用路由器192.168.33.1
。它正在运行 OpenWrt。它定义了以下接口:
br-lan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan1 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan2 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan3 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lan4 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
lo Link encap:Local Loopback
pppoe-wan Link encap:Point-to-Point Protocol
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
我认为这里只有一两个相关:
root@TIBERIUS: ~ > ifconfig wan
wan Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2295 errors:0 dropped:1 overruns:0 frame:0
TX packets:2740 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:270389 (264.0 KiB) TX bytes:245297 (239.5 KiB)
root@TIBERIUS: ~ > ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:23:CD:20:C3:B0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6252 errors:0 dropped:0 overruns:83 frame:0
TX packets:4725 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:863045 (842.8 KiB) TX bytes:667374 (651.7 KiB)
Interrupt:4
没有分配给它的 IP 地址。但pppoe-wan
确实如此。这就是这个盒子上互联网接入的方式,通过 PPPoE。
DSL 调制解调器连接到路由器的 WAN 端口。外壳上贴有这样的标签。 (我不明白为什么同时有eth0
和wan
。)它有一个内置的 IP 地址192.168.1.1
。可以通过telnet进行审计。
这样做的第一步是在路由器盒上设置一个接口以通过它到达调制解调器。
root@TIBERIUS: ~ > ifconfig eth0 192.168.1.220
root@TIBERIUS: ~ > ping 192.168.1.1 -I eth0
PING 192.168.1.1 (192.168.1.1): 56 data bytes
^C
这添加了一条路由,但是不起作用,甚至没有添加交换机-I
。一定是接口错误。 (我不知道eth0
这个盒子上对应的是什么。也许是 LAN 部分,而不是 WAN 部分?)无论如何,我然后重置网络设置 ( /etc/init.d/network restart
) 并重复 的过程wan
,这确实有效:
root@TIBERIUS: ~ > ifconfig wan 192.168.1.222
root@TIBERIUS: ~ > ping 192.168.1.1 -I wan
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=1.205 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.496 ms
审计通过telnet
也有效。
现在我还想通过 LAN 上的 PC 进行工作。我的电脑已打开192.168.33.152
。尝试telnet
从 PC 连接调制解调器会导致“连接被拒绝”。我也无法 ping 调制解调器(“Antwort von 192.168.33.1:Zielport nicht erreichbar。”=“目标端口无法访问”)。
根据我对网络上各种文档和图形模式的了解iptables
,从 LAN 到调制解调器的数据包将进入PREROUTING
路由器上的链(不需要目标 NAT),然后在路由(希望)FORWARDING
链之后,然后(希望)链POSTROUTING
(需要源 NAT)。
然而,我不知道如何将其与 OpenWrt 预定义的各种链相适应。其中有几个nat
:
root@TIBERIUS: ~ > iptables -S -t nat
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N nat_reflection_in
-N nat_reflection_out
-N postrouting_rule
-N prerouting_lan
-N prerouting_rule
-N prerouting_wan
-N zone_lan_nat
-N zone_lan_prerouting
-N zone_wan_nat
-N zone_wan_prerouting
-A PREROUTING -j prerouting_rule
-A PREROUTING -i br-lan -j zone_lan_prerouting
-A PREROUTING -i pppoe-wan -j zone_wan_prerouting
-A POSTROUTING -j postrouting_rule
-A POSTROUTING -o br-lan -j zone_lan_nat
-A POSTROUTING -o pppoe-wan -j zone_wan_nat
-A postrouting_rule -j nat_reflection_out
-A prerouting_rule -j nat_reflection_in
-A zone_lan_prerouting -j prerouting_lan
-A zone_wan_nat ! -d 192.168.1.0/24 -j MASQUERADE
-A zone_wan_prerouting -j prerouting_wan
还有更多内容filter
:
root@TIBERIUS: ~ > iptables -S -t filter
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N forward
-N forwarding_lan
-N forwarding_rule
-N forwarding_wan
-N input
-N input_lan
-N input_rule
-N input_wan
-N nat_reflection_fwd
-N output
-N output_rule
-N reject
-N syn_flood
-N zone_lan
-N zone_lan_ACCEPT
-N zone_lan_DROP
-N zone_lan_REJECT
-N zone_lan_forward
-N zone_wan
-N zone_wan_ACCEPT
-N zone_wan_DROP
-N zone_wan_REJECT
-N zone_wan_forward
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j syn_flood
-A INPUT -j input_rule
-A INPUT -j input
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j forwarding_rule
-A FORWARD -j forward
-A FORWARD -j reject
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -j output_rule
-A OUTPUT -j output
-A forward -i br-lan -j zone_lan_forward
-A forward -i pppoe-wan -j zone_wan_forward
-A forwarding_rule -j nat_reflection_fwd
-A input -i br-lan -j zone_lan
-A input -i pppoe-wan -j zone_wan
-A output -j zone_wan_ACCEPT
-A output -j zone_lan_ACCEPT
-A reject -p tcp -j REJECT --reject-with tcp-reset
-A reject -j REJECT --reject-with icmp-port-unreachable
-A syn_flood -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m limit --limit 25/sec --limit-burst 50 -j RETURN
-A syn_flood -j DROP
-A zone_lan -j input_lan
-A zone_lan -j zone_lan_ACCEPT
-A zone_lan_ACCEPT -o br-lan -j ACCEPT
-A zone_lan_ACCEPT -i br-lan -j ACCEPT
-A zone_lan_DROP -o br-lan -j DROP
-A zone_lan_DROP -i br-lan -j DROP
-A zone_lan_REJECT -o br-lan -j reject
-A zone_lan_REJECT -i br-lan -j reject
-A zone_lan_forward -j zone_wan_ACCEPT
-A zone_lan_forward -j forwarding_lan
-A zone_lan_forward -j zone_lan_REJECT
-A zone_wan -p udp -m udp --dport 68 -j ACCEPT
-A zone_wan -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A zone_wan -j input_wan
-A zone_wan -j zone_wan_REJECT
-A zone_wan_ACCEPT -o pppoe-wan -j ACCEPT
-A zone_wan_ACCEPT -i pppoe-wan -j ACCEPT
-A zone_wan_DROP -o pppoe-wan -j DROP
-A zone_wan_DROP -i pppoe-wan -j DROP
-A zone_wan_REJECT -o pppoe-wan -j reject
-A zone_wan_REJECT -i pppoe-wan -j reject
-A zone_wan_forward -j forwarding_wan
-A zone_wan_forward -j zone_wan_REJECT
我如何将我的规则归档到这组链中?
(我很高兴在这里问这个问题,因为另一位用户同样对 OpenWrt 中的默认链集感到困惑.)
答案1
通常,我希望您有 VLAN。这些通常都分配给 eth0,名称如 eth0.0 和 eth0.1。从那里开始将是一个好的开始。
您所有的 LAN 访问都可能位于 br_lan(可能是 eth0.0)上。如果不使用pppoe
,则将通过其他 VLAN(可能是 eth0.1)访问 WAN。不同硬件上的 VLAN 分配可能不同。
在我使用过的系统上pppoe
,无法直接访问路由器。我不相信它有我可以使用的 IP 地址。如果您的 PC 直接连接到调制解调器,是否可以远程登录到调制解调器?