如何在Ubuntu热点中共享sshuttle连接?
嘿,我完全懂你作为Ubuntu网络新手的迷茫,想要把sshuttle的代理连接共享给热点设备确实得调整几个关键设置,你之前试的那条iptables命令其实是删除规则(-D是删除操作),而且接口也没选对,咱们一步步来搞定:
首先确保你的Ubuntu热点已经正常开启,同时sshuttle已经成功启动。比如你可以用这条命令启动sshuttle(替换成你的服务器账号和地址):
sshuttle -r your-username@your-server-ip --dns 0/0
加上--dns是为了让热点设备的DNS请求也通过sshuttle转发,避免DNS泄露哦。接下来开启IP转发功能,Ubuntu默认是关闭的,这是共享网络必须的一步:
临时生效执行:sudo sysctl -w net.ipv4.ip_forward=1
如果想重启后依然生效,编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行sudo sysctl -p让配置生效。然后添加正确的iptables规则,这里要注意:sshuttle会创建一个虚拟接口(通常是
tun0,你可以用ip link show命令确认),咱们需要把热点设备的流量伪装后通过这个虚拟接口转发,而不是你的物理无线网卡:sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
这里-A是添加规则的意思,和你之前用的-D(删除)正好相反。最后可以检查下iptables规则是否生效,执行
sudo iptables -t nat -L -n,看看POSTROUTING链里有没有刚才添加的针对tun0的MASQUERADE规则。
做完这些,连接到你Ubuntu热点的设备应该就能通过sshuttle的连接上网啦,如果还是有问题,可以重启下sshuttle和热点再试试。
备注:内容来源于stack exchange,提问作者a.sadegh63

