1.
准备与前置检查
- 确认服务商提供的信息:公网IP或IP段(/32、/29等)、网关(有时为“对端网关”)、子网掩码、是否需要MAC绑定或ARP公告。
- 获取登录控制台(IPMI/控制面板)以防配置导致网络中断需要本地控制。
- 确认操作系统(Ubuntu/Debian/CentOS)版本,记录当前网络配置备份:sudo cp /etc/network/interfaces /root/interfaces.bak 或 cp /etc/netplan/*.yaml /root/。
2.
网卡命名与基础配置
- 用 ip link show 确认主网卡名称(例如 eth0、ens3)。
- 暂停 NetworkManager(视发行版):sudo systemctl stop NetworkManager && sudo systemctl disable NetworkManager(如使用静态配置)。
- 若使用 cloud-init 或 netplan,请编辑 /etc/netplan/*.yaml(Ubuntu 18.04+):示例:network: ethernets: ens3: addresses: [主IP/掩码] gateway4: 提供商网关 nameservers: addresses: [8.8.8.8] 然后 sudo netplan apply。
3.
单个/32或/32样式IP的路由处理(常见于原生IP)
- 原理:/32不携带广播,通常需在主机上添加一条将该IP指向上游网关的路由或将网关置为下一跳。
- 示例命令(临时生效):sudo ip addr add 1.2.3.4/32 dev ens3 && sudo ip route add 1.2.3.4/32 via 5.6.7.1 dev ens3。
- 永久生效(CentOS):在 /etc/sysconfig/network-scripts/ifcfg-ens3 添加 IPADDR1 和 PREFIX1 或创建 ifcfg-ens3:0;在 Ubuntu 使用 netplan 的 addresses 和 routes 配置。
4.
ARP与代理ARP(Proxy ARP)处理
- 问题:上游交换机期望在物理连接处看到IP的ARP,若不回应会无法到达。
- 检查ARP:sudo tcpdump -n -i ens3 arp 或 arp -n。
- 如需启用代理ARP:echo 1 | sudo tee /proc/sys/net/ipv4/conf/ens3/proxy_arp;永久:在 /etc/sysctl.conf 添加 net.ipv4.conf.ens3.proxy_arp=1 并 sysctl -p。
5.
常见Linux配置示例:Ubuntu(Netplan)与CentOS(ifcfg)
- Ubuntu(netplan)示例:/etc/netplan/01-netcfg.yaml 内容:network: version: 2 ethernets: ens3: dhcp4: no addresses: [5.6.7.10/32] routes: - to: 5.6.7.10/32 via: 5.6.7.1 nameservers: addresses: [8.8.8.8] 然后 sudo netplan apply。
- CentOS示例:/etc/sysconfig/network-scripts/ifcfg-eth0 内容:DEVICE=eth0 ONBOOT=yes BOOTPROTO=none IPADDR=5.6.7.10 NETMASK=255.255.255.255 GATEWAY=5.6.7.1,然后 ifdown eth0 && ifup eth0。
6.
防火墙与内核参数调整
- 关闭或调整防火墙测试连通性:sudo iptables -F 或暂时关闭 firewalld systemctl stop firewalld。
- 若做路由/NAT:启用内核转发 echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward 并在 /etc/sysctl.conf 设置 net.ipv4.ip_forward=1。
- 注意反向路径过滤 rp_filter:sudo sysctl -w net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0,以免被丢弃。
7.
测试步骤(逐步验证)
- ARP:sudo tcpdump -n -i ens3 arp 看对端是否发请求及本机是否回应。
- 连通性:ping -I 5.6.7.10 8.8.8.8(从指定源IP发起)及 traceroute -s 5.6.7.10 8.8.8.8。
- 抓包:sudo tcpdump -n -i ens3 host 目标IP 或 tcpdump -nnei ens3 icmp 查看 ICMP 流量。
8.
自动化与脚本化示例
- 简单脚本(临时部署):#!/bin/bash IP=5.6.7.10 GW=5.6.7.1 DEV=ens3 ip addr add ${IP}/32 dev ${DEV} || true ip route replace ${IP}/32 via ${GW} dev ${DEV} || true echo 1 > /proc/sys/net/ipv4/conf/${DEV}/proxy_arp。
- 把脚本放 /usr/local/bin/并加入 systemd 服务确保重启后恢复。
9.
常见故障与逐项排查
- 无法ping通:检查本机路由(ip route)、ARP表(ip neigh)、网关可达性(ping 网关)。
- 对端不发包/ARP消失:确认服务商是否在其侧做了黑洞、需要MAC白名单或绑定。联系供应商核实。
- 端口或服务无法外网访问:检查防火墙、SELinux、服务监听地址是否绑定到正确IP(ss -lntp,检查0.0.0.0或指定IP)。
10.
问题:为什么我配置了/32地址却无法被外网访问?
- 回答请看下一段。
11.
回答:常见原因与解决办法
- 原因包括未添加到正确接口、缺少到提供商网关的路由、ARP请求未被主机响应或上游交换机未转发。解决:确认 ip addr/ip route、开启 proxy_arp(若需要)、检查 rp_filter 与防火墙、并联系服务商确认是否需MAC或网段绑定。
12.
问题:部署完成后如何验证是真正的“原生IP”(非NAT)?
- 回答请看下一段。
13.
回答:检验原生IP的方法
- 在外网另一节点 traceroute 到该IP 看第一跳是否来自提供商直连,或从本机用 tcpdump 抓包确认外部ICMP/ARP直接到达而非经过NAT节点;另外通过服务商控制台确认是否被标注为“直连公网IP”。
14.
问题:部署过程中遇到ARP频繁变化或丢包,该如何定位?
- 回答请看下一段。
15.
回答:ARP诊断与常用命令
- 用 tcpdump -nnei ens3 arp 捕获 ARP 流量;用 arp -n 或 ip neigh 查看表项;尝试 arping -I ens3 -c 5 提示设备是否能回应;如发现上游不发ARP或发但被丢弃,需联系提供商,或启用 proxy_arp/调整路由并核验交换机MAC白名单设置。
来源:越南服务器原生ip部署流程与常见问题解决为运维人员提供参考