Iptables 端口转发 port forward

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Iptables 端口转发 port forward相关的知识,希望对你有一定的参考价值。

参考技术A Linux 下配置iptables 实现端口转发。从网卡enp8s0 进, 从网卡enp8s0_priv_mac 出。
port 5000 -->192.168.100.1:22

ip_base="192.168.100."
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
sleep 1
ip=$(ip -f inet -o addr show enp8s0|cut -d\ -f 7 | cut -d/ -f 1 | head -n 1)
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -t nat -A POSTROUTING -o enp8s0_priv_mac -j MASQUERADE
iptables -A INPUT -i enp8s0 -j ACCEPT
iptables -A FORWARD -i enp8s0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -t nat -A PREROUTING -i enp8s0 -p tcp -d ip_base1:22"
iptables -t nat -A PREROUTING -i enp8s0 -p udp -d ip_base1:22"
iptables -t nat -A OUTPUT -o lo -p tcp -d ip_base1:22"
iptables -t nat -A OUTPUT -o lo -p udp -d ip_base1:22"

利用iptables做端口转发

#!/bin/bash

#sh forward_port.sh add/del  port
#sh forward_port.sh add  80

if [ -z  $1 ];then
  echo "参数1为空"
elif [ -z  $2 ];then
  echo "参数2为空"
fi

mode=$1
pro=tcp
#src_host=47.97.205.48
src_host=47.97.205.48
src_port=$2
Dst_Host=183.129.207.71
Dst_Port=$2

# 清空规则
function clean_rule(){
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
}
function add_rule(){
#iptables -w -t nat -A PREROUTING  -p $pro -d $src_host  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
echo "iptables -t nat -A PREROUTING  -p $pro -d $src_host  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port"
#iptables -w -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host
echo "iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host"
}

function del_rule(){
iptables -w -t nat -D PREROUTING  -p $pro -d $src_host  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port
#echo "iptables -t nat -A PREROUTING  -p $pro -d $src_host1  --dport $src_port -j DNAT --to $Dst_Host:$Dst_Port"
iptables -w -t nat -D POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host
#echo "iptables -t nat -A POSTROUTING -p $pro -d $Dst_Host --dport $Dst_Port -j SNAT --to $src_host1"
}

if [[ "$mode" == "add"  ]];then
  add_rule
elif [[ "$mode" == "del"  ]];then
  del_rule
else
  echo "参数1不正确(add/del)"
fi

iptables-save > /dev/null 


# 显示已有规则
#iptables -t nat -L -n --line-number

 

以上是关于Iptables 端口转发 port forward的主要内容,如果未能解决你的问题,请参考以下文章

iptables做端口转发

iptables 端口转发

Iptables 本机端口转发

Centos 设置iptables端口转发 “Unit iptables.service could not be found”错误

Windows端口转发(Port Forwarding in Windows)

PVSTRSTPMSTP区别