PHP速学视频免费教程(入门到精通)
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
实现端口转发的核心是开启ip转发、配置dnat规则和放行forward链。1. 临时或永久开启ip转发:执行sysctl -w net.ipv4.ip_forward=1或修改/etc/sysctl.conf并运行sysctl -p;2. 配置dnat规则:使用iptables -t nat -a prerouting -p tcp --dport 2222 -j dnat --to-destination 192.168.1.100:22将外部请求转发到内网服务;3. 可选配置snat/masquerade:若目标主机不在直连网段,需添加postrouting规则确保回包正确;4. 放行forward链:通过iptables -a forward -p tcp -d 192.168.1.100 --dport 22 -j accept允许转发流量;5. 保存规则:根据系统使用service iptables save或iptables-save > /etc/iptables/rules.v4防止重启丢失;6. 验证配置:使用iptables -t nat -l -n -v查看nat规则,tcpdump抓包确认连通性,确保三项关键配置完整生效。
实现端口转发的核心是使用
iptables的
NAT(网络地址转换)表,特别是
PREROUTING链中的
DNAT规则,将进入的数据包的目标地址和端口进行修改,从而实现外部访问内部服务的目的。
下面以常见的 Linux 系统为例,介绍如何配置
iptables实现端口转发。
在进行 NAT 转发前,必须先启用系统的 IP 转发功能,否则数据包无法跨网络接口转发。
# 临时开启(重启后失效) echo 1 > /proc/sys/net/ipv4/ip_forward # 或使用 sysctl 命令 sysctl -w net.ipv4.ip_forward=1
若要永久生效,修改
/etc/sysctl.conf文件:
net.ipv4.ip_forward = 1
然后执行:
sysctl -p
假设你的服务器有公网 IP,想把外部访问本机的 2222 端口 转发到内网另一台机器
192.168.1.100的 22 端口(SSH 服务),可以使用如下
iptables命令:
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.100:22
说明:
-t nat:操作
NAT表
-A PREROUTING:在数据包进入时进行目标地址转换
-p tcp:指定协议为 TCP
--dport 2222:外部访问的端口
-j DNAT:执行目标地址转换
--to-destination 192.168.1.100:22:转发到的目标 IP 和端口
如果目标主机不在本机直连网段,或需要通过本机作为网关访问外网,还需配置源地址转换(SNAT),确保返回的数据包能正确回到客户端。
例如,使用 MASQUERADE(适用于动态 IP):
iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 22 -j MASQUERADE
或者使用 SNAT(固定出口 IP):
iptables -t nat -A POSTROUTING -d 192.168.1.100 -p tcp --dport 22 -j SNAT --to-source 本机内网IP
注意:如果转发目标在同一个局域网,且路由可达,有时可以省略 SNAT。
NAT 只负责地址转换,实际数据包是否能通过,还受
filter表的
FORWARD链控制。需确保允许转发流量:
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 22 -j ACCEPT
如果需要更宽松策略(测试环境可用):
iptables -P FORWARD DROP # 默认策略(谨慎设置) # 然后显式放行需要的流量 iptables -I FORWARD -d 192.168.1.100 -p tcp --dport 22 -j ACCEPT iptables -I FORWARD -s 192.168.1.100 -p tcp --sport 22 -j ACCEPT
不同发行版保存方式不同:
CentOS/RHEL:
service iptables save # 或 iptables-save > /etc/iptables/rules.v4
Ubuntu/Debian:
iptables-save > /etc/iptables/rules.v4
安装
iptables-persistent包可自动加载。
查看 NAT 规则:
iptables -t nat -L -n -v
查看 filter 表 FORWARD 链:
iptables -L FORWARD -n -v
抓包验证:
tcpdump -i eth0 port 2222 tcpdump -i internal_interface host 192.168.1.100
# 开启转发 sysctl -w net.ipv4.ip_forward=1 # 端口转发规则 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.50:80 # 源地址伪装 iptables -t nat -A POSTROUTING -j MASQUERADE # 允许 FORWARD 流量 iptables -A FORWARD -d 192.168.1.50 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 192.168.1.50 -p tcp --sport 80 -j ACCEPT
基本上就这些。关键点是:开启转发 + DNAT + FORWARD 放行,三者缺一不可。规则写完建议测试连通性并检查日志。
已抢7589个
抢已抢97573个
抢已抢15264个
抢已抢54015个
抢已抢198463个
抢已抢88405个
抢