【笔记】通过iptables实现端口转发

前言

iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。在大部分Linux发行版中,可以通过 手册页 (页面存档备份,存于互联网档案馆) 或 man iptables 获取用户手册。通常iptables需要内核模块支持才能运行,此处相应的内核模块通常是Xtables。因此,iptables操作需要超级用户权限,其可执行文件通常位于 /sbin/iptables 或 /usr/sbin/iptables 。同时,需要说明的是,以上命令通常只用于处理 IPv4 数据包;而对于 IPv6 数据包,则使用类似的 ip6tables 命令。(维基百科

端口转发

  • 访问当前主机指定端口的流量会转发到指定主机的指定端口

<port_current>:当前主机端口号
<ip_target>:目标主机IP地址
<port_target>:目标主机IP端口号

1
2
3
4
5
6
iptables -I INPUT -p tcp -m tcp --dport <port_current> -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport <port_current> -j DNAT --to-destination <ip_target>:<port_target>
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -I FORWARD -j ACCEPT
iptables -P FORWARD ACCEPT
sysctl net.ipv4.ip_forward=1

查看规则

1
iptables -L

清空规则

1
iptables -F

完成

参考文献