Linux的双网口(内网+外网)的IP报文转发

文章讲述了如何在PC1和PC2不在同一网段的情况下,通过Linux设备作为中转,利用iptables配置IP转发和DNAT规则,实现在两个主机间双向TCP报文的直接转发。

一、背景:

        PC1的主机与PC2的主机不是同一个网段,中间经过一个双网口Linux设备中转,以实现PC1和PC2的数据报文交互。

二、实物:

        PC1主机的IP地址:192.178.111.111
        PC2主机的IP地址: 192.168.130.32

        板卡net0的IP地址:192.178.111.31
        板卡net1的IP地址:192.168.130.31

        PC1主机连接板卡net0网口,PC2主机连接板卡net1网口。

        实现功能:PC1发出的192.178.111.31.200的tcp报文,直接转发给PC2,端口号不变。
        PC2发出的192.168.130.31.200的tcp报文,直接转发给PC1,端口号不变。

三、实施:

        sysctl -w net.ipv4.ip_forward=1
        iptables -t nat -I PREROUTING -d 192.178.111.31 -p tcp --dport 200 -jDNAT --to-destination                 192.168.130.32:200
        iptables -t nat -I PREROUTING -d 192.168.130.31 -p tcp --dport 200 -jDNAT --to-destination                 192.178.111.111:200
        iptables -A FORWARD -p tcp --dport 200 -d 192.168.130.32 -j ACCEPT
        iptables -A FORWARD -p tcp --dport 200 -d 192.178.111.111 -j ACCEPT

<think> 我们正在为Linux 3588设备配置网络,该设备有两个网络接口: - 4G模块(假设接口名为ppp0或wwan0)用于连接外网 - 网口(假设接口名为eth0)用于连接内网 目标配置: 1. 4G接口通过移动网络访问互联网(外网) 2. 网口连接内网,配置固定内网IP(如192.168.1.100/24) 3. 路由表设置:访问互联网的流量走4G接口,访问内网的流量走eth0接口 步骤: 1. 配置内网接口(eth0)的静态IP 2. 确保4G接口已正常拨号并获得外网IP(通常由pppd或NetworkManager自动配置) 3. 配置路由表,使默认路由走4G接口,内网路由走eth0接口 注意:由于4G接口通常是PPP拨号(如ppp0),其默认路由会自动添加。我们需要确保内网路由不被覆盖,并调整默认路由的优先级。 以下为详细步骤: </think> ### Linux 3588设备4G外网+网口内网的配置方法 (基于CentOS/RHEL系演示,其他发行版配置文件路径可能不同) #### 1. **配置内网网口(eth0)** 编辑内网网卡配置文件: ```bash sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 ``` 配置内容示例: ```properties DEVICE=eth0 TYPE=Ethernet BOOTPROTO=static # 静态IP ONBOOT=yes # 开机自启 IPADDR=192.168.1.100 # 内网IP(根据实际修改) NETMASK=255.255.255.0 # 子网掩码 GATEWAY= # 留空!避免覆盖默认路由 DNS1= # 留空!使用外网DNS NAME="Internal LAN" ZONE=internal # 防火墙区域[^4] ``` > 关键点:**不设置GATEWAY**,防止覆盖4G的默认路由[^3] #### 2. **配置外网4G模块(通常自动生成)** 4G模块(如ppp0/wwan0)通常由ModemManager自动配置,验证连接: ```bash nmcli connection show # 查看4G连接名称 nmcli con up <4G连接名> # 手动激活 ``` #### 3. **路由表配置(核心步骤)** 添加永久静态路由,创建路由配置文件: ```bash sudo vi /etc/sysconfig/network-scripts/route-eth0 ``` 内容示例: ```properties # 格式:目标网络/掩码 via 下一跳 dev 接口 192.168.1.0/24 dev eth0 # 内网网段直连 ``` > 📌 系统会自动添加4G的默认路由(`default dev ppp0`) #### 4. **验证配置效果** ```bash # 重启网络 sudo systemctl restart NetworkManager # 检查路由表 ip route show # 预期输出类似: default dev ppp0 scope link # 4G的默认路由 192.168.1.0/24 dev eth0 proto static # 内网路由 10.0.0.0/8 dev eth0 metric 100 # 其他内网路由(可选添加) ``` #### 5. **防火墙配置** 开放内网访问: ```bash sudo firewall-cmd --permanent --zone=internal --add-interface=eth0 # 绑定区域[^4] sudo firewall-cmd --reload ``` #### 6. **故障排查技巧** - **路由优先级问题**: 若默认路由未走4G,手动删除错误路由: ```bash sudo ip route del default via 192.168.1.1 # 删除错误网关 sudo ip route add default dev ppp0 # 添加4G默认路由 ``` - **网关冲突**: 调整路由度量值(metric),使4G优先级更高: ```bash sudo nmcli con mod <4G连接名> ipv4.route-metric 50 # 4G优先级高 sudo nmcli con mod eth0 ipv4.route-metric 100 # 内网优先级低 ``` > ⚠️ **注意事项**: > 1. 4G接口名需通过 `ip link` 确认(常见名:ppp0, wwan0, cdc-wdm0) > 2. 内网网段(如192.168.1.0/24)需按实际网络修改 > 3. 永久路由需写入配置文件,`ip route add` 命令重启失效 --- ### 📚 补充知识 #### **路由表配置原理** - **默认路由**:目标为 `0.0.0.0/0` ,匹配所有非本地流量 - **策略路由**:通过度量值(metric)控制优先级,值越小优先级越高 - **子网划分**:内网常用 `/24`(256地址),4G常用 `/30`(2可用地址) #### **配置前后对比** | 配置项 | 配置前 | 配置后 | |---------------|------------------------|--------------------------| | **内网接口** | 可能无IP或DHCP获取 | 固定静态IP(无网关) | | **外网接口** | 可能未激活 | 自动拨号+默认路由 | | **路由表** | 单一路由 | 默认路由(4G)+内网直连路由 | | **防火墙** | 默认public区域 | 内网绑定internal区域 | ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值