V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
liuchen9586
V2EX  ›  Linux

有没有朋友会调教 Linux 网络?能否给我支个招呢?

  •  
  •   liuchen9586 · 2015-03-07 19:30:01 +08:00 · 5475 次点击
    这是一个创建于 3579 天前的主题,其中的信息可能已经有所发展或是发生改变。
    拓扑图是这样的:

    
    中国境内服务器接受连接的虚拟网卡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。是不是我哪一步没做到位?大家可以给我指点下吗?
    21 条回复    2015-09-11 23:38:08 +08:00
    soiidseg
        1
    soiidseg  
       2015-03-07 20:35:58 +08:00
    为何不在境内服务器用iptables或者haproxy之类的做转发?
    liuchen9586
        2
    liuchen9586  
    OP
       2015-03-07 20:37:54 +08:00
    @soiidseg haproxy是基于TCP层的,我这是IP层的数据转发,行不通
    我上面写的就是iptables命令,不成功
    soiidseg
        3
    soiidseg  
       2015-03-07 20:42:04 +08:00
    @liuchen9586 你用的哪个vpn协议?
    twl007
        4
    twl007  
       2015-03-07 20:43:08 +08:00 via iPhone
    没做snat吧……
    ipconfiger
        5
    ipconfiger  
       2015-03-07 20:43:44 +08:00
    试试socat
    liuchen9586
        6
    liuchen9586  
    OP
       2015-03-07 21:13:16 +08:00
    @soiidseg 我感觉协议不是很重要吧,最重要的是隧道通?或者说有关系?我也不太清楚
    用户连中国服务器用PPTP,中国中转服务器连HK用的shadowvpn

    @ipconfiger socat,haproxy是基于TCP层的,我的是IP层的。


    @twl007 中国的像HK转发我做了SNAT啊,不通(看上面命令
    twl007
        7
    twl007  
       2015-03-07 21:22:56 +08:00 via iPhone
    @liuchen9586 看错了 是没做NAT 额 弄一下prerouting 然后用iptables -L查看一下要有对应的NAT和SNAT纪录
    gamexg
        8
    gamexg  
       2015-03-07 21:32:19 +08:00   ❤️ 2
    很久没弄网络了,具体命令记不清了。大概做法是:
    在 china server 上面另加一个路由表X,并设置这个路由表的默认路由是 HK server 虚拟网卡IP。
    然后 iptables 指定china 客户的连接使用路由表X。

    你现在直接设置的SNAT,造成china 客户发起的请求出口地址变成了内网地址,但是IP包转发是依靠目的地址匹配路由表来走的。目的地址没有变,还是走的国内的上级网关,但是源地址是内网地址,会被上级路由器丢掉的。
    gamexg
        9
    gamexg  
       2015-03-07 21:38:56 +08:00   ❤️ 2
    http://biancheng.dnbcw.info/linux/418649.html
    linux 高级路由即基于策略的路由比传统路由在功能上更强大,使用也更灵活,它不仅能够根据目的地址来转发路径而且也能够根据报文大小、应用或ip源地址来选择路由转发路径从而让系统管理员能轻松做到。


    http://itoedr.blog.163.com/blog/static/12028429720135237643677
    linux路由工具:iproute2/iptables(路由配置实例)
    ryd994
        10
    ryd994  
       2015-03-08 00:30:35 +08:00 via Android
    iptables mark一下,然后ip route选择出口
    zk8802
        11
    zk8802  
       2015-03-08 10:50:52 +08:00
    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
    JackWindows
        12
    JackWindows  
       2015-03-08 11:01:53 +08:00 via iPad
    ls正解,lz路由都没配,172.16.36.0/24怎么知道自己的out interface是tun0呢?
    lujiajing1126
        13
    lujiajing1126  
       2015-03-08 11:35:02 +08:00
    调试一下iptables呗。。你的包肯定被吃掉了
    sudo iptables -L -nv
    lujiajing1126
        14
    lujiajing1126  
       2015-03-08 11:46:28 +08:00
    我感觉这个样子的好像不太对
    如果vpn的话,你拨号上去,你的client机器和两台服务器应该处于同一内网网段192.168.122.X
    这时候你的client直接用HK的机器的内网ip做代理就好了吧
    HK机器上面加squid或者其他的代理。。
    配路由表啥的。。很容易把网络直接配挂掉
    datocp
        15
    datocp  
       2015-03-08 13:26:54 +08:00
    已经看得很晕了。个人觉得要选也要选得公认的好用的文档齐全的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似乎没测试成功。
    xylophone21
        16
    xylophone21  
       2015-03-08 18:28:27 +08:00
    需求是:
    而我的数据出口最终是从HK出来的(因为企业宽带比家用宽带稳定些),而中国境内的服务器本身通信的数据不受影响

    简化来说就是HK的走HK,CN的走CN. 那你连VPN干什么?

    你的描述实在有些费解.
    比如你到底是谁,你在哪里?eth0是哪个?

    还有Linux Server China是放在深圳湾吗?
    liuchen9586
        17
    liuchen9586  
    OP
       2015-03-08 19:03:12 +08:00
    @zk8802
    @datocp
    @lujiajing1126
    @JackWindows 好像是路由表的问题,我现在在看Linux的IP RULE用法,看的有点晕orz
    lujiajing1126
        18
    lujiajing1126  
       2015-03-08 20:10:11 +08:00
    @liuchen9586
    ip rule 是用来做策略路由的。。可以根据源地址进行策略路由
    liuchen9586
        19
    liuchen9586  
    OP
       2015-03-08 20:15:48 +08:00
    @lujiajing1126 以前不知道有ip rule这东西……是我想当然了
    rwzsycwan
        20
    rwzsycwan  
       2015-03-09 13:02:42 +08:00
    这是做跳板??
    ultimate010
        21
    ultimate010  
       2015-09-11 23:38:08 +08:00
    我用过一个 vpn 服务商就是这么搞, vpn 直连连阿里云,然后国外线路在阿里云上连香港,国内阿里云直接转发,速度贼快,当然按流量计费。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5880 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:55 · PVG 09:55 · LAX 17:55 · JFK 20:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.