iptables 跨网段转发

网络结构如下

网络拓扑图

需求

PC 只能访问到 Linux,需要 Linux 转发数据包,使得 PC 可以访问到路由器。

使用 iptables 转发

iptables -t nat -I PREROUTING -p tcp --dport 10000 -j DNAT --to-destination 192.168.0.1:80
iptables -t nat -I POSTROUTING -p tcp -d 192.168.0.1 --dport 80 -j SNAT --to-source 192.168.0.20

这样当 PC 访问 192.168.194.20:10000 时,实际就可访问到路由器(192.168.0.1)了。

命令的解释如下:

  1. 当发起到 Linux 的连接请求时,数据包从 192.168.194.10 发出,到达 Linux 主机 192.168.194.20,经过 Linux 时将数据包重新构造,把数据包的目的地址由 192.168.194.20 改为 192.168.0.1。
  2. 经过第一步处理的数据包进入 192.168.194.20,数据包从 192.168.0.20 发向 192.168.0.1 时,将数据包的源地址 192.168.194.11 改为192.168.0.20。
  3. 路由器接收到请求数据包之后响应,响应数据包从 192.168.0.1 发送到 192.168.0.20,在接收到源地址为 192.168.0.1 的数据包时,将其目的地址 192.168.0.20 改为 192.168.194.11。
  4. 数据包第三步处理后流向 192.168.194.20,当数据包流出 192.168.194.20 时,将其源地址 192.168.0.1 改为 192.168.194.20。

其他 iptables 命令

显示规则:iptables -t nat -L PREROUTING --line-numbers
删除规则:iptables -t nat -D PREROUTING 1(规则序号)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章