0%

使用firewall-cmd 进行流量中转

起因

最近在看firewall-cmd 方面的知识,所以这篇文章算的上一个小的实验,练习以下自己学的东西,没什么技术含量(我是菜鸡…)。

准备

1
2
3
4
Os: centos7
soft: firewall-cmd
user: root
vmware15 centos7(实际上可以替换为国内中转机器)

开始吧

准备工作:
一般来说,我们的Centos7 都会默认安装 firewall-cmd ,下列命令查看是否安装

1
2
firewall-cmd --version
# 0.6.3

咩有返回版本信息,说明咩有安装,我们安装即可(这个是命令行版本的firewall )

1
yum install firewalld -y

开启防火墙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
systemctl status firewalld.service 
# 返回信息中有 active 表明firewall 已运行,如果没有,请看接下来的操作
Active: active (running) since Mon 2019-10-14 16:48:34 CST; 6h ago

# 开机启动防火墙
systemctl enable firewalld

# 开启防火墙
# 默认开了ssh的服务,不用担心 firewall会阻断ssh连接
systemctl start firewalld
开启流量转发
# firewall 的默认区域是 public,可以查看firewall的激活区域
firewall-cmd --get-active-zones
public
interfaces: ens33

开启ip伪装,名字好怪

1
2
firewall-cmd --permanent --zone=public --add-masquerade 
# success

开启流量转发

1
2
3
4
5
6
7
8
firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=1080:toaddr=1.1.1.1
success
# 注意替换为自己的配置
# port: 代表你国内的机器的port
# proto: 代表你要转发的协议,一般都是tcp
# toport: 代表你要连接的国外vps
# toaddr: 代表你vps的ip
# --permanent 为永久配置,必须加上

彻底重启fireall,让我们的设置生效

1
2
firewall-cmd --complete-reload 
# success

查看我们的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: yes
forward-ports: port=22:proto=tcp:toport=1080:toaddr=1.1.1.1 # 可以看到这里已经生效了
source-ports:
icmp-blocks:
rich rules:

配置本地的科学服务端

只需要把原来的vps的ip替换为国内服务器的ip,并且端口设置为我们国内服务器的端口即可。

多说一句,像阿里云这种,我们还需要在控制面版放行我们刚才设置的国内服务器的端口