首先需要启动iptables,在终端窗口输入如下命令(以下指令都需要在root模式下执行):

vim /etc/sysctl.conf

打开sysctl.conf文件,修改其中net.ipv4.ip_forward的值为1,保存并退出,再输入以下命令即可完成启动:

sysctl -p

接下来就可以配置NAT路由表了。路由表主要分为两部分,一是DNAT表(PREROUTING),用于修改报文的目的地址,二是SNAT表(POSTROUTING),用于修改报文的源地址。例如,现在需要在一个LINUX系统的网关上配置路由转发表,网关的一端连着电脑,另一端连着一个WIFI终端设备,网关的职责就是把从电脑端发送的报文转发到终端设备上。电脑的IP地址为192.168.30.1,终端设备的IP地址为192.168.1.1,网关的IP地址为192.168.30.130(对应电脑)和192.168.1.2(对应终端),端口为5554,使用UDP通信。要实现转发功能,就需要输入以下命令:

iptables -t nat -A PREROUTING -s 192.168.30.1 -d 192.168.30.130 -p udp --dport 5554 -j DNAT --to 192.168.1.1:5554

iptables -t nat -A POSTROUTING -s 192.168.30.1 -d 192.168.30.130 -p udp --dport 5554 -j SNAT --to 192.168.1.2:5554

上面的两条指令分别配置了DNAT表和SNAT表,这样就把从192.168.30.1:5554发送来的UDP报文转发到了192.168.1.1:5554上。注意这里修改了报文的源地址,从表面上来看,转发报文只需要修改目的地址就足够了,但WIFI终端设备也会向控制端发送一些返回信息,这些返回信息的目的地址可能就是设备接收到的报文的源地址。如果不在转发报文时修改报文的源地址,终端设备的返回信息就会发送到192.168.30.130地址上,与192.168.1.1不处于同一个网段内,显然会导致发送失败。

当然,也并不是一定要写明源地址和目的地址,比如可以把从5554端口收到的报文全部转发到192.168.1.1:5554上:

iptables -t nat -A PREROUTING -d 192.168.30.130 -p udp --dport 5554 -j DNAT --to 192.168.1.1:5554

配置好路由表之后可以输入iptables -L -t nat来检查配置,大概可以看到这样的东西:

Chain PREROUTING (policy ACCEPT)

target prot opt source destination

DNAT udp -- 192.168.30.1 192.168.30.130 udp dpt:freeciv to:192.168.1.1:5556

DNAT udp -- 192.168.1.1 192.168.1.2 udp spt:5554 to:192.168.30.1:5554

DNAT udp -- 192.168.30.1 192.168.30.130 udp dpt:5554 to:192.168.1.1:5554

Chain INPUT (policy ACCEPT)

target prot opt source destination

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

Chain POSTROUTING (policy ACCEPT)

target prot opt source destination

SNAT udp -- 192.168.30.1 192.168.30.130 udp dpt:5554 to:192.168.1.2:5554

如果配错了的话,也有删除的方法。例如下面的语句会删除POSTROUTING表的第1项:

iptables -t nat -D POSTROUTING 1

配置完毕的路由表需要保存在一个文件中,例如/etc/iptables.conf:

iptables-save /etc/iptables.conf

重启系统后之前配置的路由表会失效,需要重新加载:

iptables-restore /etc/iptables.conf

linux 5556端口,在Linux系统下通过配置iptables实现自动转发报文相关推荐

  1. Linux系统下怎样配置多个Tomcat

    Linux系统下怎样配置多个Tomcat同时运行呢,首先修改变量为第一个tomcat,然后修改第二个tomcat启动的脚本 1.修改环境变量 # vi /etc/profile ####### 工程1 ...

  2. Linux系统下安装配置 Nginx 超详细图文教程

    Linux系统下安装配置 Nginx 详细教程介绍 一.下载 Nginx 安装包 打开Nginx官网 :http://nginx.org/en/download.html 然后我们找到一个版本,把鼠标 ...

  3. Linux、Mac、windows 系统下 配置Python虚拟环境 virtualenvwrapper教程,workon切换环境, 非常简单方便

    前言 开发及测试过程中每个环境都有各自的作用,避免破坏其他环境所以建议每个项目新建一个虚拟环境,经过对比最终我选择了virtualenvwrapper来作为我开发中虚拟环境管理工具,接下来一起来看一下 ...

  4. linux 蓝牙 profile,Linux_Linux系统下蓝牙立体声配置A2DP profile,系统配置:Linux debian 2.6.22.6 #7 - phpStudy...

    Linux系统下蓝牙立体声配置A2DP profile 系统配置:Linux debian 2.6.22.6 #7 Mon Sep 3 10:46:00 CST 2007 ppc GNU/Linux ...

  5. 保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建

    保姆级教程:Linux(Ubuntu 18.04)下VSCode配置与嵌入式开发平台X2000_Halley5调试环境搭建 写在前面 配置VSCode的编译环境 配置VSCode的gdb调试环境 配置 ...

  6. linux开启端口,linux配置端口,Linux关闭端口

    linux开启端口,linux配置端口,Linux关闭端口 开启端口 1.直接用命令开启端口开放端口命令----保存-----重启服务-------查看端口是否开放/sbin/iptables -I ...

  7. mysql 手动配置服务器_Win7系统下手动配置Apache+PHP+MySQL环境WEB服务器 -电脑资料...

    本来想学学php,于是就想搭建web服务器和sql环境,结果浪费掉了不少时间, 大致的总结下,也算是长个记性. 使用的安装包分别是httpd-2.2.22-win32-x86-no_ssl .msi, ...

  8. xp系统的无线配置服务器,xp系统下使用无线提示无线自动配置服务没有运行如何解决...

    越来越多的用户都喜欢使用无线方式来上网,然而有xp系统用户在使用无线的时候,却提示无线自动配置服务没有运行,要怎么解决这样的问题呢,现在为大家带来xp系统下使用无线提示无线自动配置服务没有运行的详细解 ...

  9. windows7系统适合哪个python_Python3.6.4在Windows7系统下安装配置教程

    Python3.64在Windows7系统下安装配置教程 工具/原料 Windows7系统 python3.6.4版本 方法/步骤 1 双击应用程序打开如图所示的界面这里是应用程序向导界面 这里建议勾 ...

最新文章

  1. php和java的语法区别_PHP 和 Java 的主要区别有哪些?
  2. python 文件操作的模块_Python之文件操作修改模块
  3. nyoj1057寻找最大数3
  4. 《极乐迪斯科》:醉鬼神探的深邃人生
  5. 案例讲清如何构建“What-if分析”,教你轻松玩转动态参数
  6. Data Lake Analytics-数据分析时代迎来新变革
  7. 我10年来的学习和生活
  8. 图像处理相关知识(不断更新)
  9. VS2012手动关联xaml与CS文件
  10. lombok工具中@Data注解问题
  11. 机器学习模型在线校验交互示例
  12. C# 特性(Attribute)之Flag特性
  13. iOS之有用的分类(UsefulCategory)
  14. 为什么非零实对称矩阵一定是正定矩阵
  15. 深入浅出mysql_深入浅出MySQL读书笔记(一)
  16. 「雕爷学编程」Arduino动手做(37)——MQ-3酒精传感器
  17. 史上最简单的openshift免费空间上传代码教程!没有之一!
  18. 淘宝评论数据抓取简记
  19. 使用微信PC端的截图dll库实现微信截图功能(C++ Builder实现)
  20. Laravel Excel(maatwebsite/excel )导入

热门文章

  1. linux桌面lxde 安装_Ubuntu 18.04下安装Lxde轻量桌面系统和VNC服务器
  2. tensorrt优化笔记
  3. mxnet参数初始化,查看
  4. Pytorch 计算参数量与计算量Flops
  5. vs的资源管理器中一次性添加整个文件夹
  6. has invalid type class 'numpy.ndarray', must be a string or Tensor
  7. OPENCV3读取avi,解决返回NULL问题
  8. TNS-12560: TNS: 协议适配器错误 Oracle11g 创建数据库中问题处理(必须运行Netca以配置监听程序)
  9. Opencv常见用法和常见错误(一)
  10. PMP-【第12章 项目采购管理】-2021-2-17(252页-274页)