iptables/nftables/socat/Linux EasyConnect

iptables

在这里插入图片描述
netfilter-HOWTO这篇文章很好地说明了到底何时该DNAT,何时该SNAT,大致是:

SNAT 需要在nat表的POSTROUTING链里面做,DNAT需要在nat表的PREROUTING链里面做。文章里面有具体的例子。最好结合上面的图来看更加清晰。‘

sudo iptables -t nat -A PREROUTING --protocol tcp --dport 8000 -j DNAT --to-destination 192.168.104.222
sudo iptables -t nat -A POSTROUTING --protocol tcp --dport 8000 -j SNAT	--to-source 192.168.104.222

其实在那个链里面做都无所谓,最主要的是要符合当时的情况。看本机处理这个包的流向再来编写命令是最好的(主要就是上面的图要对照来看)

nftables

这个应该是iptables的补充,nftables配置文件里面的语法比iptables要好读很多。
RedHat nftables

socat

这个工具可以用作应用层的端口转发,跟ssh -L -R这两个差不多。

socat TCP-LISTEN:8000,fork TCP:192.168.104.222:8000

这条命令相当于在本地的8000端口起一个监听socket,之后访问localhost的8000端口就相当于访问192.168.104.222的8000端口。如果希望穿透到 192.168.104.0/24网段的机器上,在192.168.104.222这台机器上还需要起一个socat,比如穿透到192.168.104.133这台机器上的2345端口

socat TCP-LISTEN:8000,fork TCP:192.168.104.133:2345

在这里插入图片描述
最后就可以有这个效果:访问103.22这台机器的8000端口,可以代理到104.133的2345端口。前提是192.168.103.22这台机器跟192.168.104.222这台机器互通,或者能访问到192.168.104.222的8000端口。

RedHat Socat

Linux EasyConnect

这里有一个Linux 的EasyConnect项目,但是需要EasyConnect的服务器支持Linux版本。使用Linux会方便调试网络问题,并且在使用上面更稳定一些。
Docker EasyConnect

其实使用Linux EasyConnect会有很多的坑:

  1. EasyConnect客户端的问题:在项目里面的README里面有相关的坑记录。
  2. systemd service 默认忽略SIGPIPE
    文章1
    文章2
    文章3

上面所有的东西就是为了连上一个Linux VPN 踩的这么些坑,使用的工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值