内容目录
由于frp使用国外服务器经常被阻断,移动还限制非http流量上传速度,所以给frp套了一层伪装,但是这样会让服务器流量双倍跑
我需要的是将服务器上请求自己ip的流量直接转发给127.0.0.1,这样就不多走一遍自己的流量了。
启用内核本地回环路由
默认情况下,Linux 禁止将外部 IP 路由到本地回环地址(127.0.0.0/8),需启用 route_localnet 参数:
# 临时生效(替换 eth0 为实际网卡名,如 eth0、ens3 等)
sudo sysctl -w net.ipv4.conf.eth0.route_localnet=1
# 永久生效:写入配置文件
echo "net.ipv4.conf.eth0.route_localnet=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
步骤 2:配置 iptables 全局 DNAT 规则
2.1 处理本机发起的请求(OUTPUT 链)
当服务器 S 自身访问 88.88.88.88(替换成你的ip) 的任意端口时,直接转发到 127.0.0.1:
sudo iptables -t nat -A OUTPUT -d 88.88.88.88 -p tcp -j DNAT --to-destination 127.0.0.1
sudo iptables -t nat -A OUTPUT -d 88.88.88.88 -p udp -j DNAT --to-destination 127.0.0.1
2.2 处理外部客户端的请求(PREROUTING 链)
如果外部客户端通过公网 IP 88.88.88.88 访问服务器 S 的任意端口,也需转发到本地:
sudo iptables -t nat -A PREROUTING -d 88.88.88.88 -p tcp -j DNAT --to-destination 127.0.0.1
sudo iptables -t nat -A PREROUTING -d 88.88.88.88 -p udp -j DNAT --to-destination 127.0.0.1
参数说明:
-d 88.88.88.88: 匹配目标 IP 为 88.88.88.88 的流量。
-p tcp/-p udp: 匹配 TCP/UDP 协议(若需支持所有协议,可省略 -p 参数,但不推荐)。
-j DNAT –to-destination 127.0.0.1: 将目标地址改为本地回环。
步骤 3:允许回环接口的流量
确保本地回环接口的流量被防火墙放行:
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT
步骤 4:保存 iptables 规则
避免重启后规则丢失:
# Debian/Ubuntu(安装 iptables-persistent)
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
# CentOS/RHEL
sudo service iptables save