站点图标 moneyslow.com

tinc实现国内服务器通过国外服务器访问外网

tinc国内服务器访问国外

tinc国内服务器访问国外

本文操作的vps是美国的buyvm.net购买的,特点就是不限带宽,不限流量,要干啥你可以猜到,购买链接

有两个服务器:
国外服务器A,外网地址:111.111.111.111
国内服务器B,外网地址:222.222.222.222
实现:A和B用tinc打通,B通过A访问国外
tinc的网络,给服务器A配的地址:10.0.0.254,给服务器B配的地址:10.0.0.1

安装(在两个机器上同样的步骤):
apt-get install tinc -y
自己起网络名称:ziyou
mkdir -p /etc/tinc/ziyou/hosts
密钥一路回车:tincd -n ziyou -K

---------------- 国外服务器A操作 ----------------

目录结构
.
├── ziyou
│   ├── hosts
│   │   ├── guonei
│   │   └── guowai
│   ├── rsa_key.priv
│   ├── tinc.conf
│   ├── tinc-down
│   └── tinc-up
└── nets.boot
root@hk:/etc/tinc# cat nets.boot 
ziyou

root@hk:/etc/tinc/ziyou# cat tinc.conf 
Name = guowai
Interface = ziyou
AddressFamily = ipv4

root@hk:/etc/tinc/ziyou# cat tinc-up 
#!/bin/sh
ifconfig $INTERFACE 10.0.0.254 netmask 255.255.0.0

root@hk:/etc/tinc/ziyou# cat tinc-down 
#!/bin/sh
ip link set $INTERFACE down

给执行权限:
chmod 755 /etc/tinc/ziyou/tinc-*


root@hk:/etc/tinc/ziyou/hosts# cat guonei 
Subnet = 10.0.0.1/32
Address = 222.222.222.222

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

root@hk:/etc/tinc/ziyou/hosts# cat guowai 
Subnet = 0.0.0.0/0
Address = 111.111.111.111

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----


启动tinc服务:
systemctl start tinc@ziyou

需要将所有的流量出去的时候,源地址都要snat为本机公网地址,手动执行:
iptables -t nat -A POSTROUTING -j MASQUERADE

---------------- 以下为国内服务器B操作 ----------------

此时已经安装完tinc,目录结构如下:
root@VM-0-14-ubuntu:/etc/tinc# tree .
.
├── ziyou
│   ├── hosts
│   │   ├── guonei
│   │   └── guowai
│   ├── rsa_key.priv
│   ├── tinc.conf
│   ├── tinc-down
│   └── tinc-up
└── nets.boot

2 directories, 7 files

root@VM-0-14-ubuntu:/etc/tinc# cat nets.boot 
ziyou

root@VM-0-14-ubuntu:/etc/tinc/ziyou# cat tinc.conf 
Name = guonei
Interface = ziyou
AddressFamily = ipv4
ConnectTo = guowai

root@VM-0-14-ubuntu:/etc/tinc/ziyou# cat tinc-up 
#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.0.0

root@VM-0-14-ubuntu:/etc/tinc/ziyou# cat tinc-down 
#!/bin/sh
ip link set $INTERFACE down

给执行权限:
chmod 755 /etc/tinc/ziyou/tinc-*

root@VM-0-14-ubuntu:/etc/tinc/ziyou/hosts# cat guonei 
Subnet = 10.0.0.1/32
Address = 222.222.222.222

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

root@VM-0-14-ubuntu:/etc/tinc/ziyou/hosts# cat guowai 
Subnet = 0.0.0.0/0
Address = 111.111.111.111

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----

启动服务:
systemctl start tinc@ziyou
能ping通 10.0.0.254 ,说明tinc就打通了。

在国内服务器B上添加路由,先简单实现去国外 ifconfig.me 这个网站

要实现这个功能,就3点注意:
1、在hosts目录下,国外机器描述文件(/etc/tinc/ziyou/hosts/guowai)中,要有 Subnet = 0.0.0.0/0
2、国外服务器A开启snat:iptables -t nat -A POSTROUTING -j MASQUERADE
3、注意国外服务器A的/etc/sysctl.conf 文件,要有net.ipv4.ip_forward=1

先小测一下,在国内服务器B上进行:
1、 hosts绑定:
34.117.118.44 ifconfig.me
2、加路由
ip route add 34.117.0.0/16 via 10.0.0.254 dev ziyou
3、root@VM-0-14-ubuntu:/etc/tinc/ziyou# curl ifconfig.me
111.111.111.111
确定返回的是国外的服务器的ip地址,说明B通过A上网了。

接下来,就是在B上实现分流,去国外的走tinc线路,待续。。。

退出移动版