一直以来对Firewall感觉都不太好,因为小白时期让这东西没少折腾,但是近期发现Firewall的功能还是非常强大,有很多可以学习的东西。
Firewall端口转发:
对于端口转发这个需求,需要这样操作操:
1.首先放行端口,如果你有宝塔可以直接放,跳过这一步:
firewall-cmd --add-port=8800/tcp --permanent
firewall-cmd --add-port=8800/udp --permanent
2.开启一个意义不明的功能(伪装功能?),没它你不能端口转发:
firewall-cmd --add-masquerade --permanent
3.添加规则(这两个规则的意思是,将本机8800端口的UDP和TCP数据转发到1.1.1.1的9090上):
firewall-cmd --add-forward-port=port=8800:proto=udp:toaddr=1.1.1.1:toport=9090 --permanent
firewall-cmd --add-forward-port=port=8800:proto=tcp:toaddr=1.1.1.1:toport=9090 --permanent
4.重载规则,使其生效:
firewall-cmd --reload
5.如果你想要删除一个规则,相当于把add换成了romove,之后重载规则才生效:
firewall-cmd --remove-forward-port=port=8800:proto=udp:toaddr=1.1.1.1:toport=9090--permanent
6.一些常用的工具性命令
查看已有规则:firewall-cmd --list-all
查看开放端口:firewall-cmd --list-ports
还有一种带有zone的用法,我不太了解,先记录下吧:
firewall-cmd --permanent --zone=public --add-forward-port=port=533:proto=tcp:toport=3306:toaddr=1.1.1.1
firewall-cmd --permanent --zone=public --add-forward-port=port=533:proto=tcp:toport=3306:toaddr=1.1.1.1
最后,如果你始终不能转发成功,检查下这里
vi /etc/sysctl.conf
然后添加
net.ipv4.ip_forward = 1
保存后,使用sysctl -p使其生效。
如果后期想修改,但是觉得命令麻烦,可以直接访问/etc/firewalld/zones/public.xml修改,然后重启
firewall-cmd --complete-reload
Dokodemo door(任意门)转发
Dokodemo door是属于一个入站数据协议,因为是属于应用层,所以可以享受BBR这些的加持,速度上会好些。
一般用法来说,是放在V2ray的配置文件里的inbounds内,直接整个放入,可以放入多个()
{ "protocol": "dokodemo-door", "port": 11111,#中转机的端口 "settings": { "address": "1.1.1.1", #目标机IP地址 "port": 22222, #目标机的端口 "network": "tcp,udp" } },
配置好后,你访问中转机IP:11111,数据就会被转发到1.1.1.1:22222
端口转发效率很低,远不如 Nginx Stream 转发
Nginx Stream还没试过
之前用过frp,体感下来和这个firewall这个效率差不多,不过firewall总体省事一点