我正在尝试在我的网络上启动一个小盒子。我刚刚刷新了固件,它应该会默认启动192.168.1.1
。我的路由器是 DSL 调制解调器192.168.0.1
;它通常使用 的网络掩码255.255.255.0
,所以我无法与新盒子通信。
我通过 telnet 进入路由器,并使用ifconfig
将网络掩码更改为255.255.0.0
,但仍然无法 ping 192.168.1.1
。(显然我现在应该使用ip
,但我知道ifconfig
这样做更好。)
我想也许是iptables
妨碍了我,所以我尝试了这个:
iptables -F; iptables -X; iptables -t nat -F; iptables -t nat -X; iptables -t mangle -F; iptables -t mangle -X; iptables -P INPUT ACCEPT; iptables -P OUTPUT ACCEPT; iptables -P FORWARD ACCEPT
果然现在我看到了:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
对我来说这看起来不错,但当我尝试时仍然ping 192.168.1.1
没有得到回复。
但如果我在跑步时这样做# tcpdump -n -i br0 -v host 192.168.1.1
,我会看到以下内容:
tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 68 bytes
15:09:21.057458 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto ICMP (1), length 84)
192.168.0.1 > 192.168.1.1: ICMP echo request, id 26859, seq 1, length 64
15:09:25.036912 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.1.1 tell 192.168.0.1, length 28
15:09:25.037321 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.1.1 is-at 00:18:39:2c:9c:30, length 46
该arp
回复的 MAC 地址与我的新盒子相匹配!那么为什么我的数据包无法到达那里并返回呢?
# ip route show
205.171.X.X via 72.160.X.1 dev ppp0
72.160.X.X dev ppp0 proto kernel scope link src 72.160.X.X
205.141.X.X via 72.160.X.1 dev ppp0
192.168.0.0/16 dev br0 proto kernel scope link src 192.168.0.1
default via 72.160.X.1 dev ppp0
我很确定这是路由器的问题,而不是目标盒的问题。会是什么问题?
答案1
@kasperd 是对的 - 目标盒子的网络掩码是255.255.255.0
。我可以通过提供br0
一个新的 IP 地址进行通信:
# ip addr add 192.168.1.2/24 dev br0
# ip addr show br0
8: br0: <BROADCAST,MULTICAST,ALLMULTI,UP,LOWER_UP> mtu 1500 qdisc noqueue
link/ether 10:7b:ef:92:ca:af brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global br0
inet 192.168.1.2/24 scope global br0
# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=31.187 ms