在Debian系统中,可以使用 iptables 或 firewalld 来实现端口转发。以下是两种方法的详细步骤:
firewalld 的端口转发firewalld 是一个动态管理防火墙的工具,适用于CentOS 7及Debian系统。以下是使用 firewalld 进行端口转发的步骤:
安装 firewalld(如果尚未安装):
sudo apt-get update
sudo apt-get install firewalld
启动并启用 firewalld 服务:
sudo systemctl start firewalld
sudo systemctl enable firewalld
开启内核转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
编辑 firewalld 配置文件:
打开 /etc/firewalld/zones/public.xml 文件,并添加以下内容:
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port="10-65000"/>
<port protocol="udp" port="10-65000"/>
<masquerade/>
<forward-port to-addr="远程IP" to-port="远程端口" protocol="tcp" port="本地端口"/>
<forward-port to-addr="远程IP" to-port="远程端口" protocol="udp" port="本地端口"/>
</zone>
重启 firewalld 服务以应用更改:
sudo systemctl restart firewalld
iptables 的端口转发iptables 是一个强大的防火墙工具,适用于Debian和Ubuntu系统。以下是使用 iptables 进行端口转发的步骤:
安装 iptables(如果尚未安装):
sudo apt-get update
sudo apt-get install iptables
启动并启用 iptables 服务:
sudo systemctl start iptables
sudo systemctl enable iptables
清空所有防火墙规则:
sudo iptables -F
sudo iptables -X
开启内核转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
或者编辑 /etc/sysctl.conf 文件,取消以下行的注释:
net.ipv4.ip_forward=1
然后运行以下命令使更改生效:
sudo sysctl -p
添加 iptables 规则:
将本地端口8080转发到远程服务器的80端口:
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 远程服务器IP:80
为了确保数据包在本地和远程服务器之间正确传输,需要添加一个 iptables 规则,将源地址伪装为本地服务器的地址:
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
保存 iptables 规则:
sudo sh -c "iptables-save > /etc/iptables/rules.v4"
重启 iptables 服务以应用更改:
sudo systemctl restart netfilter-persistent