windows 自带端口转发 centos 7 端口转发 ubuntu也能用 端口转发并限制连接ip

149 篇文章 4 订阅

2024年4月25日 星期四 更新
firewalld 端口转发并限制连接ip

CUSTOMPORT=$(netstat -tlpn | grep 0.0.0.0.*ssh | cut -d: -f2 | cut -f1 -d\ )
SOURCE_IP=1.2.3.4
firewall-cmd --zone=public --permanent --query-masquerade
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --zone=public --permanent --add-rich-rule="rule family=\"ipv4\" source address=\"${SOURCE_IP}\" forward-port port=\"22\" protocol=\"tcp\" to-port=\"${CUSTOMPORT}\""
firewall-cmd --reload

重点是下面这一句

# 添加规则
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.17.16.17 forward-port port=3102 protocol=tcp to-port=3389 to-addr=192.168.56.102'

# 删除规则
firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address=10.17.16.17 forward-port port=3102 protocol=tcp to-port=3389 to-addr=192.168.56.102'

参考
https://serverfault.com/questions/756138/how-to-port-forward-with-firewalld-depending-on-source-ip

如果 ubuntu 上没有 firewall-cmd 就安装一个,卸载原有的 uwf 防火墙管理工具
卸载 uwf

sudo apt remove ufw

安装 firewalld

sudo apt update
sudo apt install firewalld
# 启动
sudo systemctl start firewalld
# 设置开机自启动
sudo systemctl enable firewalld
# 永久放开 80 端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重启防火墙生效
firewall-cmd --reload

如果此时放开的端口不起作用,设置一下 iptables
允许所有流量通过

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X

设置默认策略为所有流量通过

sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT

保存规则

sudo iptables-save > /etc/sysconfig/iptables

重启服务

sudo systemctl restart iptables

查看规则

sudo iptables -L -v -n

firewall 常用操作

状态:# systemctl status firewalld 或者 firewall-cmd --state(查看防火墙开启关闭状态)
启动:# systemctl start  firewalld
停止:# systemctl stop firewalld
自启动:# systemctl enable firewalld (可让防火墙开机自启动,防火墙默认开机不启动的,需手动启动)
禁用:# systemctl disable firewalld

允许数据包转发

首先开启IP转发功能,默认是关闭的。
临时修改:

echo 1 >/proc/sys/net/ipv4/ip_forward
修改过后就马上生效,但如果系统重启后则又恢复为默认值0。

永久修改:
# 找到下面的值并将0改成1
vi /etc/sysctl.conf
# sysctl -p(使之立即生效)
net.ipv4.ip_forward = 1

在这里插入图片描述

端口转发命令

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 --permanent    # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1 --permanent    # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080 --permanent     # 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=port=58888:proto=tcp:toaddr=47.97.184.137:toport=80 --permanent # 将58888端口的流量转发至47.97.184.137的80端口
要删除之前设置的转发规则,把以上命令中的--add-forward-port改为--remove-forward-port运行一次即可。
firewall-cmd --permanent --zone=public --remove-forward-port=port=58888:proto=tcp:toaddr=47.97.184.137:toport=8888
firewall-cmd --reload
firewall-cmd --list-all #查询所有配置

参考
https://www.fzxm.cn/help/20210419213836001.html

使用Portproxy模式下的Netsh命令即能实现Windows系统中的端口转发,转发命令如下:

netsh interface portproxy add v4tov4 listenaddress=[localaddress] listenport=[localport] connectaddress=[destaddress]

listenaddress – 等待连接的本地ip地址
listenport – 本地监听的TCP端口(待转发)
connectaddress – 被转发端口的本地或者远程主机的ip地址
connectport – 被转发的端口

举个例子,服务器内网IP是172.16.0.4,需要将8080端口转发到国外服务器104.104.104.104的9999端口,那么命令如下:

netsh interface portproxy add v4tov4  listenaddress=172.16.0.4 listenport=8080 connectaddress=104.104.104.104 connectport=9999

上面这条命令有时不起作用,需要改为 0.0.0.0

netsh interface portproxy add v4tov4  listenaddress=0.0.0.0 listenport=8080 connectaddress=104.104.104.104 connectport=9999

下面的命令是用来展示系统中的所有转发规则:

netsh interface  portproxy show  v4tov4

删除刚才创建的那个转发的命令:

netsh interface  portproxy delete v4tov4 listenaddress=172.16.0.4 listenport=8080

该命令的常用参数如下:

netstat -ano | find listenport 查看是否启动成功
netsh interface portproxy show all 显示系统中的转发规则列表
netsh interface portproxy dump 查看portproxy设置
netsh interface portproxy delete v4tov4 listenport=localport listenaddress=localaddress
netsh interface portproxy reset 清除所有端口转发规则

参考
https://kekxv.github.io/2021/08/07/Port%20forwarding%20that%20comes%20with%20Windows/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值