隧道动态UDP端口范围

时间:2016-09-13 19:04:57

标签: linux networking ssh proxy udp

通常我更喜欢自己找一个解决方案,但遗憾的是这次没有太好用,所以我在这里问。

我正在尝试处理通常的家庭网络上的服务器(而不是没有屏幕和debian最小的计算机)。问题是ISP正在耗尽ipv4地址,因此 决定使用ipv6而不是双栈精简来访问互联网的ipv4端。这意味着无法从外部通过ipv4地址访问计算机 但是能够连接到ipv4计算机。

我确实有一个仍然只使用ipv4的vserver(debian),所以我的计划是将它用作某种中继或porxy。问题是,我无法使用iptables配置NAT 因为服务器提供程序已从内核中删除该模块。

我的第一次尝试是使用这样的SSH隧道:

ssh -f user@vserver -R 2222:localhost:22 -N

这允许我通过SSH访问CLI,现在侦听端口2222。

下一步是打开第二个SSH隧道,并使用socat:

通过该隧道隧道传输UDP流量
homeserver:~# socat tcp4-listen:${tcpport of second tunnel},reuseaddr,fork udp:localhost:${udpport to forward traffic from}

vserver:~# socat -T15 udp4-recvfrom:${udpport to forward traffic to},reuseaddr,fork tcp:localhost:${tcpport of second tunnel}

这确实有效,但是一旦客户端应用程序尝试连接到UDP端口,服务器应用程序就会尝试在动态不同的新端口上继续通信 港口范围(Ephemeral Port Range我认为)。当然,一个随机端口没有被转发,因为socat没有收听。

第二次尝试还涉及一个SSH隧道,这次只是一个动态隧道(基本上是一个socks代理)。 我试图设置一个虚拟网络设备来通过socks代理路由所有流量:

(如badvpn-tun2socks手册页所述)

homeserver:~# openvpn --mktun --dev tun0 --user <someuser> #create tun0 device
homeserver:~# ifconfig tun0 10.0.0.1 netmask 255.255.255.0 #configure it
homeserver:~# route add <IP_vserver> gw <IP_of_original_gateway> metric  #Route all traffic through tun0
homeserver:~# route add default gw 10.0.0.2 metric 6             #exept the ones to the vserver
homeserver:~# badvpn-tun2socks --tundev tun0 --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:1080 \ 
          --udpgw-remote-server-addr 127.0.0.1:7300

这需要SSH socks-proxies,因为需要单独处理upd。

在vserver方面,这些也需要处理:

vserver:~# badvpn-udpgw --listen-addr 127.0.0.1:7300

两者之间的连接成功,但这次完全无法访问主服务器。 (在我看来,vserver不知道如何处理数据包)

我希望对我的任何一次尝试都有一个简单的解决方法。但是现在看来, 我认为我的整个方法存在根本缺陷,我开始没有想法了。

任何帮助将不胜感激,提前致谢!

0 个答案:

没有答案