以下是在家庭网络中配置Linux DHCP与NAT的步骤,假设使用双网卡(eth0连接外网,eth1连接内网):
sudo apt update && sudo apt install isc-dhcp-serversudo yum install dhcp编辑配置文件 /etc/dhcp/dhcpd.conf,添加以下内容:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200; # IP地址池
option routers 192.168.1.1; # 网关(Linux内网IP)
option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS服务器
}
range定义分配的IP范围,routers指向Linux的LAN口IP,需与内网接口IP一致。编辑 /etc/default/isc-dhcp-server(Debian/Ubuntu)或 /etc/sysconfig/dhcpd(CentOS/RHEL),设置:
INTERFACESv4="eth1" # 仅监听内网接口
sudo systemctl start isc-dhcp-server # Debian/Ubuntu
sudo systemctl start dhcpd # CentOS/RHEL
sudo systemctl enable isc-dhcp-server # 开机自启
编辑 /etc/sysctl.conf,取消注释或添加:
net.ipv4.ip_forward=1
生效配置:
sudo sysctl -p
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEsudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT # 允许内网到外网
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT # 允许已建立的连接返回
sudo iptables-save > /etc/iptables/rules.v4sudo service iptables save 或 iptables-save > /etc/sysconfig/iptablesipconfig(Windows)或 ifconfig(Linux/macOS)查看是否获取到IP(应在192.168.1.100-200范围内),且网关为192.168.1.1。ping 8.8.8.8 或访问网页,确认可正常访问互联网。sudo iptables -t nat -L -n -v,确认POSTROUTING链中有MASQUERADE规则。eth0/eth1替换为实际接口名(如wlan0),可通过 ip addr 查看。ufw或firewalld,需额外放行DHCP(UDP 67/68)和NAT规则。eth0配置PPPoE客户端(如pppoeconf),并调整NAT规则的目标接口为拨号接口。参考来源:[1,2,3,5,6,7,8,9,10,13,15]