• 【Router】PC连接到路由LAN,但是无法获取到IP地址问题分析及解决方案


    问题描述

           PC连接到路由器LAN,正常应该可以获取到IP地址,但是查看PC端网卡信息,发现未获取到IP地址

    问题分析

           使用wireshark抓取PC端网口数据报,发现只有PC的网卡发送的discover包,路由设备未回复Offer包,登录到路由设备,使用tcpdump抓取LAN物理口数据包,发现可以抓到PC的discover包,然后,再抓取br0的数据包,发现无法抓到,PC的discover包。基于以上测试,基本确定是路由设备端未回复PC。

           首先,查看路由的DHCP Server是否正常工作,确认DHCP Server正常工作。然后,确认防火墙规则是否正常。使用iptables -S查看防火墙规则,规则列表如下

    1. / # iptables -S
    2. -P INPUT DROP
    3. -P FORWARD ACCEPT
    4. -P OUTPUT ACCEPT
    5. -A INPUT -i br0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
    6. -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    7. -A INPUT -p tcp -m tcp --dport 52881 -j REJECT --reject-with tcp-reset
    8. -A INPUT -i lo -j ACCEPT

    从以上防火墙规则可以看出,设备默认INPUT链是DROP,所以设备不会响应DHCP Discover包 ,通过分析发现,是由于系统启动过程中,防火墙规则丢失导致。默认需要增加如下规则:

    1. iptables -A INPUT -i br0 -p tcp -m multiport --dports 22,23,53,80,443-j ACCEPT
    2. iptables -A INPUT -i br0 -p udp -m multiport --dports 53,54,67 -j ACCEPT

    解决方案

    基于无法获取IP地址问题,可以通过以下方式简单修改

    方法一:修改INPUT默认规则

            iptables -P INPUT ACCEPT

    方法二:开放DHCP Server端口

         iptables  -I INPUT -i br0 -p udp  --dports 67 -j ACCEPT 

  • 相关阅读:
    比较5个点的4种分布
    关于Django
    LabVIEW生成和打印条形码
    PHP 经纬度坐标相关计算方法
    JavaWeb中的VUE快速入门
    12讲拆解量化金融时序分析,Kaggle master倾力奉献(中文翻译版)
    C++-Mongoose(1)-http-server
    Zookeeper中的ZAB协议和Leader Election算法
    IDEA实现远程Debug调试
    使用 @Transactional 时常犯的N种错误
  • 原文地址:https://blog.csdn.net/wgl307293845/article/details/126321498