Linux中如何添加IP映射?

在Linux系统中,IP映射是一个常见需求,主要涉及静态IP地址配置、端口转发(NAT)以及本地域名解析映射,本文将详细介绍这三种常见IP映射的配置方法,包括操作步骤、命令示例及注意事项,帮助用户在不同场景下实现IP映射需求。

linux中如何添加ip映射

静态IP地址映射(网络接口配置)

静态IP映射是指为Linux服务器的网络接口(如eth0、ens33)分配固定的IP地址、子网掩码、网关和DNS服务器,确保服务器IP地址不会因DHCP租约到期而改变,这种映射方式适用于需要长期固定IP的服务器环境,如Web服务器、数据库服务器等。

基于配置文件的静态IP配置

不同Linux发行版的配置文件路径和格式略有差异,以下以CentOS/RHEL(使用NetworkManager)和Ubuntu/Debian(使用netplan)为例说明。

(1)CentOS/RHEL系统(NetworkManager)

  • 步骤1:查看网络接口名称
    执行命令ip addrnmcli connection show,获取当前活动的网络接口名称(如eth0、ens33)。

  • 步骤2:编辑网络配置文件
    进入/etc/sysconfig/network-scripts/目录,复制对应接口的配置文件(如ifcfg-eth0)并备份,然后编辑:

    cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak  
    vi /etc/sysconfig/network-scripts/ifcfg-eth0  

    配置文件内容示例如下:

    TYPE=Ethernet  
    BOOTPROTO=static  # 静态IP,禁用DHCP  
    NAME=eth0  
    DEVICE=eth0  
    ONBOOT=yes        # 开机启动网络  
    IPADDR=192.168.1.100  # 目标静态IP  
    NETMASK=255.255.255.0 # 子网掩码  
    GATEWAY=192.168.1.1   # 网关地址  
    DNS1=8.8.8.8          # DNS服务器  
    DNS2=114.114.114.114  
  • 步骤3:重启网络服务
    执行命令nmcli connection down eth0 && nmcli connection up eth0systemctl restart network,使配置生效。

(2)Ubuntu/Debian系统(netplan)

linux中如何添加ip映射

  • 步骤1:查看网络接口名称
    执行ip addr获取接口名称(如ens33)。

  • 步骤2:编辑netplan配置文件
    进入/etc/netplan/目录,找到配置文件(如01-netcfg.yaml),编辑内容:

    network:  
      version: 2  
      ethernets:  
        ens33:  
          dhcp4: no       # 禁用DHCP  
          addresses: [192.168.1.100/24]  # IP地址/子网掩码(24位掩码即255.255.255.0)  
          gateway4: 192.168.1.1          # 网关  
          nameservers:  
            addresses: [8.8.8.8, 114.114.114.114]  # DNS服务器  
  • 步骤3:应用配置
    执行netplan apply命令使配置生效,若提示错误可通过netplan --debug apply排查。

静态IP配置对比(表格)

发行版 配置文件路径 重启网络命令 关键参数说明
CentOS/RHEL /etc/sysconfig/network-scripts/ifcfg-网卡名 systemctl restart network BOOTPROTO=static, IPADDR, NETMASK, GATEWAY
Ubuntu/Debian /etc/netplan/xxx.yaml netplan apply dhcp4: no, addresses, gateway4, nameservers

端口映射(NAT转发)

端口映射是将网络数据包的目标端口或源地址进行转换,常用于内网服务器通过公网IP访问、端口转发等场景,Linux中主要通过iptables(传统防火墙)或firewalld(CentOS 7+)实现。

基于iptables的端口映射

iptables是Linux内核集成的防火墙工具,支持SNAT(源地址转换)和DNAT(目标地址转换)。

  • (1)DNAT(目标地址转换):将公网端口映射到内网服务器
    示例:将本机(公网IP 1.1.1.1)的80端口映射到内网服务器192.168.1.200的8080端口。

    # 开启内核转发功能  
    echo 1 > /proc/sys/net/ipv4/ip_forward  
    # 添加DNAT规则(PREROUTING链)  
    iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.200:8080  
    # 添加MASQUERADE规则(POSTROUTING链,使响应数据包能正确返回)  
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE  
  • (2)SNAT(源地址转换):内网通过公网IP访问外网
    示例:内网网段192.168.1.0/24通过本机公网IP1.1.1.1访问外网。

    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 1.1.1.1  
  • (3)保存iptables规则
    CentOS系统:service iptables save
    Ubuntu系统:iptables-save > /etc/iptables/rules.v4

    linux中如何添加ip映射

基于firewalld的端口映射(CentOS 7+)

firewalld是CentOS 7及以上版本默认的防火墙工具,支持富规则(Rich Rules)实现端口映射。

  • 步骤1:启用防火墙和NAT

    systemctl start firewalld  
    firewall-cmd --permanent --add-masquerade  # 开启IP伪装(相当于MASQUERADE)  
    firewall-cmd --reload  
  • 步骤2:添加端口映射规则
    示例:将本机80端口映射到内网192.168.1.200的8080端口。

    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.1.200'  
    firewall-cmd --reload  

iptables命令参数说明(表格)

参数/链 作用说明 示例
-t nat 指定nat表,用于地址转换 iptables -t nat -A PREROUTING...
-A 添加规则到链的末尾 iptables -A INPUT...
-p tcp/udp 指定协议(tcp/udp) iptables -p tcp --dport 80
--dport 目标端口 --dport 80
--to-destination DNAT的目标IP和端口(DNAT专用) --to-destination 192.168.1.200:8080
MASQUERADE 动态源地址转换(适用于动态公网IP) -j MASQUERADE

本地域名解析映射(hosts文件)

hosts文件是本地域名与IP地址的映射表,优先级高于DNS服务器,适用于本地测试或特定域名的快速解析。

编辑hosts文件

hosts文件路径为/etc/hosts,格式为“IP地址 域名 [别名]”。

vi /etc/hosts  
0.0.1   localhost  
192.168.1.100  testserver  # 将testserver映射到192.168.1.100  
192.168.1.200  dbserver.local  # 带别名的映射  

生效与验证

  • 保存文件后立即生效(无需重启服务)。
  • 验证命令:ping testservernslookup testserver,若返回目标IP则配置成功。

注意事项

  • hosts文件仅对当前主机生效,局域网其他设备需修改各自的hosts文件。
  • 若需长期生效,避免在DNS服务器中配置相同域名,防止冲突。

相关问答FAQs

Q1:如何验证静态IP配置是否生效?
A:可通过以下方式验证:

  1. 执行ip addr show 网卡名,检查IP地址、子网掩码是否与配置一致;
  2. 执行ping 网关地址(如ping 192.168.1.1),验证网络连通性;
  3. 执行nslookup 域名ping 域名,检查DNS解析是否正常;
  4. 若无法上网,检查/etc/resolv.conf中的DNS配置是否正确,或使用systemctl status network(CentOS)查看网络服务状态。

Q2:修改hosts文件后无法解析域名,如何排查?
A:可按以下步骤排查:

  1. 检查hosts文件格式:确保每行格式为“IP 域名”,IP和域名之间用空格或Tab分隔,避免多余字符;
  2. 检查IP地址有效性:确保目标IP地址正确,且主机可达(可通过ping IP测试);
  3. 清除DNS缓存:执行sudo systemctl flush-dns(需systemd-resolved支持)或重启nscd服务(sudo systemctl restart nscd);
  4. 检查DNS优先级:若系统配置了DNS服务器,hosts文件的优先级更高,可尝试ping -f 域名强制使用hosts解析,或临时注释掉DNS配置测试。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/35911.html

(0)
酷番叔酷番叔
上一篇 2025年10月4日 19:27
下一篇 2025年10月4日 19:42

相关推荐

  • linux如何读取文件名

    Linux 中,可用 ls 命令列出文件名,或用

    2025年8月13日
    4700
  • Linux中如何打开文件?常用命令与方法总结?

    在Linux系统中,打开文件的方式多样,既可以通过命令行工具高效处理,也能借助图形界面直观操作,无论是查看文本内容、编辑配置文件,还是处理二进制数据、压缩包,Linux都提供了对应的工具和方法,本文将详细介绍Linux中打开文件的各类场景及具体操作,帮助用户根据需求选择最合适的途径,通过命令行工具打开文件命令行……

    2025年9月21日
    5000
  • Linux系统挂起后如何恢复桌面操作、系统响应及所有正在运行的应用程序?

    Linux系统在使用过程中可能会因各种原因出现挂起现象,表现为系统无响应、鼠标键盘失灵、图形界面卡死或黑屏等情况,影响正常使用,针对不同挂起原因和场景,恢复方法也有所不同,本文将详细介绍Linux挂起后的恢复步骤、注意事项及长期预防措施,初步应急处理:快速尝试恢复当系统出现挂起时,首先应尝试温和的恢复方法,避免……

    2025年8月26日
    9400
  • Linux杀死用户线程的具体方法是什么?

    Linux中的线程分为用户线程和内核线程,用户线程由用户态程序通过pthread库创建,属于进程内的执行单元,共享进程的虚拟地址空间、文件描述符等资源,但拥有独立的执行栈和寄存器状态,杀死用户线程是常见的线程管理操作,需根据场景选择合适方法,避免资源泄漏或进程异常,以下是详细方法及注意事项,使用pthread……

    2025年9月15日
    4100
  • Linux系统下MongoDB服务如何正确启动?

    在Linux系统中启动MongoDB需要一系列步骤,涉及安装验证、配置文件检查、权限设置及启动命令执行等,以下是详细操作流程,帮助用户顺利完成MongoDB的启动并解决常见问题,安装前确认在启动MongoDB前,需确保系统已正确安装MongoDB,不同Linux发行版的安装命令不同:基于Debian/Ubunt……

    2025年8月28日
    5600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信