firewalld中转(转发)流量

今天做了件有意义的事儿,在腾讯云(香港)轻量云服务器(简称中转服务器A)上做了一个中转服务,把监听的某个端口(比如8080)的流量转发到国外某个VPS(此例为俄罗斯Gcorelabs家叶卡捷琳堡的VPS B)。

原因很简单,腾讯云这款服务器在香港,到大陆和境外的速度都很不错,ping到黑龙江才70ms,到叶卡捷琳堡的VPS B 120ms左右,加起来200ms左右,比直连叶卡捷琳堡的VPS B(300ms左右而且容易丢包)要快,也更加稳定。

中转之前,要先配置好境外服务器(比如这里的VPS B)的爱国上网服务,记住该服务的端口和该VPS的IP。

参考:

https://www.tkmiss.com/archives/vps_port_forward.html

首先检查防火墙伪装功能(SNAT)(这一步很重要)
# 检查是否允许伪装IP
firewall-cmd --query-masquerade
# 允许防火墙伪装IP
firewall-cmd --add-masquerade --permanent
# 禁止防火墙伪装IP
firewall-cmd --remove-masquerade --permanent
如果查询出来为no,则需要通过add添加。

设置端口转发

# 将80端口的流量转发至8080
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
# 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1
# 将80端口的流量转发至192.168.0.1的8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080
#查询所有配置
firewall-cmd --list-all
systemctl enable firewalld
systemctl start firewalld
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p firewall-cmd --permanent --add-masquerade 

# 8080可以改成其他端口 
firewall-cmd --permanent --add-port=8080/tcp 
firewall-cmd --permanent --add-port=8080/udp 

# 8080和上面保持一致,国外ip改成你国外vps的ip,443改成国外VPS上的爱国上网等软件的端口 
firewall-cmd --permanent --add-forward-port=port=8080:proto=tcp:toaddr=国外ip:toport=443 
firewall-cmd --permanent --add-forward-port=port=8080:proto=udp:toaddr=国外ip:toport=443 
firewall-cmd --reload

运行上述命令后,打开爱国上网等客户端软件,把ip和端口 改成国内vps的ip和端口号,其他配置不变,应该就能上网了。

流量转发的方式有很多种,这里用了最简单也是效率最高的firewalld。流量转发对于访问外网非常有意义,因为这里可以借助国内的NAT VPS(共享IP VPS,价格低,带宽足,到国内和国外的线路好)作为中转服务器来加速访问外网。对于我这种常年国内外跑的人来说,爱国上网是必备技能,商用的一些软件会经常down掉,尤其是六一,国庆等特殊时期。

在这里赞一下腾讯云轻量云(香港),30M uploads, 1Gbps downloads,最低配24/月,1T流量,我入手的34的那款,2T流量,内存也大些,性价比无敌。要知道,它用了非常昂贵的CN2 GIA线路,用我家的百兆带宽(下行100-150Mbps,上行30Mbps)可以跑满它的带宽,即使在晚高峰时间段。

阿里云晚高峰照样跑满30M带宽,看4K视频没有丝毫压力
Gcorelabs的VPS晚高峰直连速度很慢,但是通过腾讯轻量云中转下也能跑到10-20M带宽

发表评论

电子邮件地址不会被公开。 必填项已用*标注