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

首先需要启动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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值