在Debian系统中,使用iptables进行端口转发(也称为端口映射)可以通过以下步骤实现。端口转发允许你将一个网络端口的流量重定向到另一个端口或另一台机器上。
启用IP转发
首先,确保你的系统允许IP转发。编辑/etc/sysctl.conf文件,找到并取消注释以下行:
net.ipv4.ip_forward=1
然后应用更改:
sudo sysctl -p
配置iptables规则 假设你想将外部端口8080的流量转发到内部IP地址192.168.1.100的端口80。
PREROUTING规则:将外部流量重定向到内部目标。
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
POSTROUTING规则:修改数据包的源地址,使其看起来像是来自路由器本身。
sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE
INPUT规则:允许转发到本地端口的流量。
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
保存iptables规则
默认情况下,iptables规则在系统重启后会丢失。你可以使用iptables-persistent包来保存规则。
安装iptables-persistent:
sudo apt-get update
sudo apt-get install iptables-persistent
在安装过程中,系统会提示你是否保存当前的iptables规则。选择“是”。
假设你想将外部端口8080的HTTP流量转发到内部服务器192.168.1.100的端口80,可以按照以下步骤操作:
启用IP转发:
sudo sysctl -w net.ipv4.ip_forward=1
配置iptables规则:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j MASQUERADE
sudo iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
保存规则:
sudo netfilter-persistent save
sudo netfilter-persistent reload
完成这些步骤后,外部访问your-server-ip:8080的流量将被转发到192.168.1.100:80。