UDP转发常用于DNS、游戏语音等场景。相比TCP,配置稍微特殊一点,但也不复杂。
一、开启IP转发(1条命令)
bash
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf && sysctl -p
二、添加UDP转发规则(2条iptables)
假设要把外网的UDP 53端口(DNS)转发到内网 192.168.1.100:53:
bash
# 1. 改目标地址(DNAT)
iptables -t nat -A PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.100:53
# 2. 改源地址(SNAT),让响应能回来
iptables -t nat -A POSTROUTING -p udp -d 192.168.1.100 --dport 53 -j MASQUERADE
# 3. 放行转发(可选,如果默认FORWARD是DROP则需要)
iptables -A FORWARD -p udp --dport 53 -j ACCEPT
三、保存规则(防止重启丢失)
bash
# Ubuntu/Debian
apt install iptables-persistent && iptables-save > /etc/iptables/rules.v4
# CentOS
service iptables save
一键脚本(复制粘贴即可)
bash
#!/bin/bash
# 用法:./udp_forward.sh 本地端口 目标IP 目标端口
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p udp --dport $1 -j DNAT --to-destination $2:$3
iptables -t nat -A POSTROUTING -p udp -d $2 --dport $3 -j MASQUERADE
iptables -A FORWARD -p udp --dport $3 -j ACCEPT
echo "UDP转发已配置:端口$1 → $2:$3"
不想敲命令?用图形化工具
如果你更喜欢可视化界面管理转发规则,可以试试这款工具:80km无痕网关
支持UDP/TCP转发,Web界面操作,几分钟就能配好。
验证是否生效
bash
# 查看规则
iptables -t nat -L -n -v | grep udp
# 抓包测试(在服务器上)
tcpdump -i eth0 -n udp port 53
搞定!UDP转发就这么简单。
上一篇:Dirty Frag漏洞链曝光:几乎影响所有主流Linux发行版
下一篇:雄安威赛博申请Linux系统多网口名称固定顺序实现方法专利,避免因驱动加载顺序变化、硬件枚举顺序变化造成的网口名称错乱问题