技术解析

有没有朋友会调教 Linux 网络?能否给我支个招呢?
0
2021-07-13 05:27:39
idczone
拓扑图是这样的:


中国境内服务器接受连接的虚拟网卡IP是172.16.36.1,与HK服务器链接的虚拟网卡IP是10.7.0.1
HK与中国境内服务器链接的虚拟网卡IP是10.7.0.2

左边区域是中国境内的服务器,右边区域是通往境外的,两个区域内网IP段不同。
我想实现的效果是,我通过VPN协议拨入位于中国境内的服务器,而我的数据出口最终是从HK出来的(因为企业宽带比家用宽带稳定些),而中国境内的服务器本身通信的数据不受影响,仍然从eth0走。
我现在的做法就是在HK服务器上直接对10.7.0.0/24这个网段的数据做NAT
-A POSTROUTING -s 10.7.0.0/24 -o eth0 -j MASQUERADE

然后我在中国境内服务器上做NAT
-A POSTROUTING -o tun0 -s 172.16.36.0/24 -j SNAT --to-source 10.7.0.1

结果这样上不了网,只能链接中国服务器的SSH。是不是我哪一步没做到位?大家可以给我指点下吗?
为何不在境内服务器用iptables或者haproxy之类的做转发?

haproxy是基于TCP层的,我这是IP层的数据转发,行不通
我上面写的就是iptables命令,不成功

你用的哪个vpn协议?

没做snat吧……

试试socat

我感觉协议不是很重要吧,最重要的是隧道通?或者说有关系?我也不太清楚
用户连中国服务器用PPTP,中国中转服务器连HK用的shadowvpn
socat,haproxy是基于TCP层的,我的是IP层的。

中国的像HK转发我做了SNAT啊,不通(看上面命令

看错了 是没做NAT 额 弄一下prerouting 然后用iptables -L查看一下要有对应的NAT和SNAT纪录

很久没弄网络了,具体命令记不清了。大概做法是:
在 china server 上面另加一个路由表X,并设置这个路由表的默认路由是 HK server 虚拟网卡IP。
然后 iptables 指定china 客户的连接使用路由表X。
你现在直接设置的SNAT,造成china 客户发起的请求出口地址变成了内网地址,但是IP包转发是依靠目的地址匹配路由表来走的。目的地址没有变,还是走的国内的上级网关,但是源地址是内网地址,会被上级路由器丢掉的。

http://biancheng.dnbcw.info/linux/418649.html
linux 高级路由即基于策略的路由比传统路由在功能上更强大,使用也更灵活,它不仅能够根据目的地址来转发路径而且也能够根据报文大小、应用或ip源地址来选择路由转发路径从而让系统管理员能轻松做到。

http://itoedr.blog.163.com/blog/static/12028429720135237643677
linux路由工具:iproute2/iptables(路由配置实例)

iptables mark一下,然后ip route选择出口

1. 你在中国的服务器上开 IPv4 转发了吗?
echo 1 > /proc/sys/net/ipv4/ip_forward
2. 假设中国服务器的虚拟网卡是 xxx,你应该为来自网卡 xxx 的数据指定默认路由为 10.7.0.2。
ip route add default via 10.7.0.2 dev xxx table 101
ip rule add from 172.16.36.0/24 lookup 101

ls正解,lz路由都没配,172.16.36.0/24怎么知道自己的out interface是tun0呢?

调试一下iptables呗。。你的包肯定被吃掉了
sudo iptables -L -nv

我感觉这个样子的好像不太对
如果vpn的话,你拨号上去,你的client机器和两台服务器应该处于同一内网网段192.168.122.X
这时候你的client直接用HK的机器的内网ip做代理就好了吧
HK机器上面加squid或者其他的代理。。
配路由表啥的。。很容易把网络直接配挂掉

已经看得很晕了。个人觉得要选也要选得公认的好用的文档齐全的vpn
https://www.softether.org/4-docs/1-manual/A._Examples_of_Building_VPN_Networks/10.6_Build_a_LAN-to-LAN_VPN_(Using_L3_IP_Routing)
有点像推送路由表的味道,据说openvpn很好实现。softether似乎没测试成功。

需求是:
而我的数据出口最终是从HK出来的(因为企业宽带比家用宽带稳定些),而中国境内的服务器本身通信的数据不受影响
简化来说就是HK的走HK,CN的走CN. 那你连VPN干什么?
你的描述实在有些费解.
比如你到底是谁,你在哪里?eth0是哪个?
还有Linux Server China是放在深圳湾吗?




好像是路由表的问题,我现在在看Linux的IP RULE用法,看的有点晕orz


ip rule 是用来做策略路由的。。可以根据源地址进行策略路由

以前不知道有ip rule这东西……是我想当然了

这是做跳板??

我用过一个 vpn 服务商就是这么搞, vpn 直连连阿里云,然后国外线路在阿里云上连香港,国内阿里云直接转发,速度贼快,当然按流量计费。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服