Ubuntu 服务器配置转发网络访问

配置文档:Ubuntu 服务器转发网络访问

一、网络拓扑

以以下网络拓扑为示例

  • Ubuntu 服务器(两个网卡)
    • eth1 = 10.66.71.222 (接入内网)
    • eno1 = 192.168.2.100 (直连相机)
  • 相机ip
    • 192.168.2.1
  • Windows 客户端ip
    • 10.66.71.205 (接入内网)
  • 目标
    Windows 能直接访问相机 (ping 192.168.2.1)。

二、Ubuntu 配置步骤

1. 确认网卡

bash 复制代码
ip addr
ip route

确认:

  • eth1 → 10.66.71.222/24
  • eno1 → 192.168.2.100/24

2. 开启 IPv4 转发

bash 复制代码
# 临时生效
sudo sysctl -w net.ipv4.ip_forward=1

# 永久生效
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

验证:

bash 复制代码
sysctl net.ipv4.ip_forward   # 输出为 1 即可

3. 配置 iptables 转发与 NAT

执行以下脚本:

bash 复制代码
#!/usr/bin/env bash
set -euxo pipefail

WAN_IF=eth1          # 内网网卡
LAN_IF=eno1          # 相机网卡
WIN_NET=10.66.71.0/24
CAM_NET=192.168.2.0/24

# 确保 IP 转发
sudo sysctl -w net.ipv4.ip_forward=1

# 允许内外转发
sudo iptables -C FORWARD -i $WAN_IF -o $LAN_IF -s $WIN_NET -d $CAM_NET -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT 2>/dev/null \
  || sudo iptables -A FORWARD -i $WAN_IF -o $LAN_IF -s $WIN_NET -d $CAM_NET -m conntrack --ctstate NEW,ESTABLISHED,RELATED -j ACCEPT

sudo iptables -C FORWARD -i $LAN_IF -o $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 2>/dev/null \
  || sudo iptables -A FORWARD -i $LAN_IF -o $WAN_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# NAT 转发
sudo iptables -t nat -C POSTROUTING -s $WIN_NET -d $CAM_NET -o $LAN_IF -j MASQUERADE 2>/dev/null \
  || sudo iptables -t nat -A POSTROUTING -s $WIN_NET -d $CAM_NET -o $LAN_IF -j MASQUERADE

查看规则:

bash 复制代码
sudo iptables -S FORWARD

bash 复制代码
sudo iptables -t nat -S

4. 持久化规则

bash 复制代码
sudo apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y iptables-persistent
sudo netfilter-persistent save

规则会保存到 /etc/iptables/rules.v4,重启不会丢失。


三、Windows 配置

1. 删除错误的直连路由(如果存在)

如果网卡上绑定了 192.168.2.x 地址,请移除:

cmd 复制代码
#示例
netsh interface ip delete address "以太网" 192.168.2.205

2. 添加静态路由

在管理员 CMD 执行:

cmd 复制代码
route -p add 192.168.2.0 mask 255.255.255.0 10.66.71.222 metric 1

验证:

cmd 复制代码
route print 192.168.2.0

四、测试流程

A. Ubuntu ↔ 相机

bash 复制代码
ping -c 3 192.168.2.1
arp -n | grep 192.168.2.1
sudo tcpdump -i eno1 -n icmp

B. Windows ↔ Ubuntu

cmd 复制代码
ping 10.66.71.222
tracert 10.66.71.222

C. Windows ↔ 相机

cmd 复制代码
tracert 192.168.2.1   # 第一跳应为 10.66.71.222
ping 192.168.2.1

Ubuntu 抓包观察:

bash 复制代码
sudo tcpdump -i eth1 -n icmp and host 192.168.2.1
sudo tcpdump -i eno1 -n icmp and host 192.168.2.1

五、常见问题排查

  1. Windows 绑定了 192.168.2.x → 必须删除,否则路由冲突。

  2. UFW 防火墙阻止转发 → 修改 /etc/default/ufw/etc/ufw/before.rules,允许 NAT + FORWARD。

  3. 接口名错误 → 用 ip addr 确认。

  4. 相机未响应 → 检查相机是否禁 ICMP,可改用 curlffplay 测试 HTTP/RTSP。

  5. rp_filter 拦截 → 可宽松模式:

    bash 复制代码
    sudo sysctl -w net.ipv4.conf.all.rp_filter=2
    sudo sysctl -w net.ipv4.conf.default.rp_filter=2
相关推荐
4A广告文案4 小时前
名创优品在成都开了家“乐园”,顺便造了个新IP
网络·网络协议·tcp/ip
Fnetlink15 小时前
Fnet 云网安 260904
网络·人工智能·安全·web安全·网络安全
乌恩大侠5 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
天远数科5 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
Mr.朱鹏5 小时前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud6 小时前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
志栋智能6 小时前
安全超自动化如何支持大规模安全运营?
网络·安全·自动化
星恒讯工业路由器6 小时前
农村宽带覆盖难?无线专网方案正在改写“最后一公里”规则
网络·物联网·网桥·无线网桥·农村宽带覆盖·无线专网·户外网络
tang777897 小时前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
yuewell_ai7 小时前
机器人调度通讯怎么设计才不会被网络抖动瘫痪
网络·机器人·php