Proxmox VE 默认端口在防火墙里关闭,使用端口转发临时使用

iptables -t nat -I PREROUTING -p tcp --dport 10086 -j REDIRECT --to-ports 8006

使用完成以后,把端口转发语句关闭

iptables -t nat -D PREROUTING -p tcp --dport 10086 -j REDIRECT --to-ports 8006

某段端口给给分配 某NAT小鸡使用。

iptables -t nat -A PREROUTING -p tcp -m multiport --dport 11100:11199  -j DNAT --to-destination 10.10.10.111

登陆NAT小鸡,只要执行端口转发,而不需要修改网络服务的配置文件

iptables -t nat -A PREROUTING -p tcp --dport 11188 -j REDIRECT --to-ports 80

PVE NAT 批量端口转发设置脚本,使用命令 nat.sh $(lxc-ls) 自动调用 lxc容器id

# Usage: bash nat.sh $(lxc-ls)

# 小鸡的端口转发规则    ssh 22  http 80      10<N>00 : 10<N>99
# ID对应IP  101:         10122    10180        10100 : 10199
#-------------------------------------------------------------#
input_id()
{
  id=101
  echo -e "测试默认ID: 33[41;37m ${id} 33[0m 可以修改设置其他ID; "
  read -p "请输入NAT小鸡的ID号(按回车不修改): " -t 30 new
  if [[ ! -z "${new}" ]]; then
      id="${new}"
  fi
  nat_port
  iptables -t nat -nvL PREROUTING
  echo -e ":: PVE NAT 批量端口转发设置脚本: 33[41;37m bash nat.sh $(lxc-ls) 33[0m
使用参考: https://lyvba.com/index.php/archives/714/"
}
# 以id为ip设置端口转发
nat_port()
{
    iptables -t nat -I PREROUTING -p tcp -m tcp --dport ${id}22  -j DNAT --to-destination 10.10.10.${id}:22
    iptables -t nat -A PREROUTING -p tcp -m multiport --dport ${id}00:${id}99  -j DNAT --to-destination 10.10.10.${id}
}

# 手工输入id,input_id调用nat端口转发
if [ $# -eq 0 ];
  then
  input_id
  exit
fi

# 遍历参数 批量设置 nat端口转发
for arg in $*
do
  id=$arg
  nat_port
done

# 查看 nat PREROUTING 端口映射规则
iptables -t nat -nvL PREROUTING

# 清空 nat PREROUTING 端口映射规则
# iptables -t nat -F PREROUTING
# Usage: bash nat.sh $(lxc-ls)

使用脚本后 multiport dports 11100:11199 to:10.10.10.111 ,分配100个端口给ID 111号NAT小鸡使用

  • 登陆NAT小鸡,不需要修改Nginx配置,只需要运行 iptables 把11180转发到80端口就行

    iptables -t nat -A PREROUTING -p tcp --dport 11180 -j REDIRECT --to-ports 80

理解以上简单的端口转发,再来加强学习,来学习高级点的用法

iptables端口转发 TaterLi 2019年10月21日2019年10月26日

实际上很多人都知道端口转发,但是很多都是一键脚本,实际上也没有那么麻烦,我们很简单就能做到,重点是如何理解端口转发这个概念.

转发包含了TCP转发,UDP转发,最常用的TCP转发了吧,做堡垒机,目标服务器防火墙白名单机制之类的.

转发操作全程都在自己的机器上做就行.

转发就得打开转发功能,如果包含IPv6自己改改就行.

net.ipv4.ip_forward = 1

在转发之前,我们要先说下路由,他们的路径大致是这样的.

源地址发送数据-> {PREROUTING->路由规则->POSTROUTING} ->目的地址接收到数据

另外转发是附带SNAT作用的,所以就可以转换源地址了啊.

比如下面例子:


iptables -t nat -A PREROUTING -p tcp --dport 49022 -j DNAT --to-destination 63.223.9.40:6022
iptables -t nat -A POSTROUTING -p tcp -d 63.223.9.40 --dport 6022 -j SNAT --to-source 47.56.22.202

这样你访问47.56.22.202的49022端口,就相当于透明的访问了63.223.9.40的6022端口,这里只打通了TCP传输.

但是有一点要注意,如果你的机器是内网机器,比如说阿里云ECS什么的,47.56.22.202就应该替换为你的内网IP了,比如172.31.112.205这样的,不然是到达不了的,再由各种转发器来完成各种需求.

另外,只是转发单个端口,也太浪费了,还可以做负载均衡哦.

比如这样,就均分数据包到两台后端服务器,暴露了Web端口.

iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 199.19.104.1:8080

iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode nth --every 1 --packet 0 -j DNAT --to-destination 199.19.104.2:8080


iptables -t nat -A POSTROUTING -p tcp -d 199.19.104.1 --dport 8080 -j SNAT --to-source 172.31.112.205

iptables -t nat -A POSTROUTING -p tcp -d 199.19.104.2 --dport 8080 -j SNAT --to-source 172.31.112.205

这个比较绿色环保,不用额外装软件的转发,总体来说还是不错的.

分类: Virtual 服务器

0 条评论

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注