@Volt #242 你看看那篇文章呢,人家用Python都实现了单个listener监听一个网段的全端口 import socket IP_TRANSPARENT = 19 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.IPPROTO_IP, IP_TRANSPARENT, 1) s.bind(('127.0.0.1', 1234)) s.listen(32) print("[+] Bound to tcp://127.0.0.1:1234") while True: c, (r_ip, r_port) = s.accept() l_ip, l_port = c.getsockname() print("[ ] Connection from tcp://%s:%d to tcp://%s:%d" % (r_ip, r_port, l_ip, l_port)) c.send(b"hello world\n") c.close()
@fbt1234 #203 wireguard是内核态的东西,远没有用户态的灵活:)
@云上拾荒者 #241 研究了一通,端口串在go中貌似只能通过开很多listener来解决,然后通过哪个accept到了conn来获知具体的端口号
技术真牛呀
@Volt #242 你看看那篇文章呢,人家用Python都实现了单个listener监听一个网段的全端口
@Volt #242 端口串还有另外的替代方案,就是mux,一条连接支持多个流,就不用多个端口了
@云上拾荒者 #244 这项技术解释了iptables来将绑定在宿主机上的其他地址转移到了本地1234实例端口,的确可行👍。可能np项目设计思路是不借助任何外部依赖实现想要的功能吧
@Volt #246 可以把技术视野拓宽一点,你现在做的是L4的隧道,往上走可以做L7的intercepter,往下走可以做L3用来组网。
@Volt #144 怎么入门网路编程
@云上拾荒者 #247 感谢醍醐灌顶!在专业视野拓宽的同时,开发者总会面临一个大而全和小而精之间的选择
@Embroider0558 #248 按照我微薄的经验,首先从最基础的原理开始入手,接下来按照需求来进行编程实战,再从找bug的过程中学更多