伟明部落格

Linux软路由(阿里云香港版)

--发布于 2022-04-02 14:30:18

落地机为阿里云香港 8.210.252.214 跳板机为阿里云深圳 120.25.1.215 落地机与跳板机之间的隧道连接用加密版的simpletun,位于~/simpletun-crypt 跳板机与软路由之间用不加密的隧道,即原版的simpletun,位置~/simpletun 家里路由出口的公网IP地址为 120.239.197.209

以下步骤在阿里云香港(8.210.252.214)上操作

# 先卸载firewalld防火墙安装iptables
systemctl stop firewalld
systemctl disable firewalld 
yum -y install iptables-services
systemctl enable iptables.service

# 开启路由转发功能
vim /etc/sysctl.conf 
# 设置如下字段的值为1
net.ipv4.ip_forward = 1
# 使设置生效
sysctl -p
# 再查看一下,确保net.ipv4.ip_forward的值为1
[root@iZj6c262htpobd1pfkqlqgZ ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

# 出去的流量进行伪装
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 保存并重启iptables
service iptables save
service iptables restart

# 创建tap网卡
ip tuntap add dev tap0 mode tap
ip link set tap0 up
ip addr add 192.168.50.1/24 dev tap0

# 下载加密版的源码
git clone https://gitee.com/twant/simpletun.git
mv simpletun simpletun-crypt # 重命名目录,用于区分加密版与非加密版
cd simpletun-crypt
make.sh # 编译

# 生成用于加密隧道两方通信的密钥map.bin
[root@iZj6c262htpobd1pfkqlqgZ simpletun-crypt]# gcc genmap.c -o genmap  # 编译生成工具
[root@iZj6c262htpobd1pfkqlqgZ simpletun-crypt]# ./genmap # 生成map.bin

mkdir -p /data/logs # 建立日志目录用于输出simpletun日志
chmod 777 /data/logs
md5sum map.bin # 校验落地机map.bin加密文件的md5值
# 在3389端口上创建以太网隧道,注意:这个simpletun是添加了加密功能的
nohup ./simpletun -i tap0 -p 3389 -a -d -s &

查看家里路由出口的公网IP为多少,是120.239.197.209,记下来

以下步骤在阿里云深圳(120.25.1.215)上操作

# 先安装好所需的软件
yum -y install gcc
yum -y install bind-utils
yum -y install bzip2
yum -y install git

# 先卸载firewalld防火墙安装iptables
systemctl stop firewalld
systemctl disable firewalld 
yum -y install iptables-services
systemctl enable iptables.service

# 开启路由转发功能
vim /etc/sysctl.conf 
# 设置如下字段的值为1
net.ipv4.ip_forward = 1
# 使设置生效
sysctl -p
# 再查看一下,确保net.ipv4.ip_forward的值为1
[root@iZj6c262htpobd1pfkqlqgZ ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

# 添加与阿里云香港相连的tap网卡
ip tuntap add dev tap1 mode tap
ip link set tap1 up
ip addr add 192.168.50.2/24 dev tap1

# 添加与软路由相连的tap网卡
ip tuntap add dev tap2 mode tap
ip link set tap2 up
ip addr add 192.168.51.1/24 dev tap2

# 经tap1出去的流量进行伪装
iptables -t nat -A POSTROUTING -o tap1 -j MASQUERADE

# 保存并重启iptables
service iptables save
service iptables restart

# 下载加密版的源码
git clone https://gitee.com/twant/simpletun.git
mv simpletun simpletun-crypt # 重命名目录,用于区分加密版与非加密版
cd simpletun-crypt
make.sh # 编译

# 从落地机复制加密隧道通信的密钥map.bin
scp root@8.210.252.214:/root/simpletun-crypt/map.bin .
md5sum map.bin # 校验map.bin加密文件是否与落地机相同

mkdir -p /data/logs # 建立日志目录用于输出simpletun日志
chmod 777 /data/logs

# 下载原版的源码,并编译
cd ~
wget --no-check-certificate https://zhouweiming.cn/files/simpletun.tar.bz2
tar xvf simpletun.tar.bz2
cd simpletun # 切换到~/simpletun目录
gcc simpletun.c -o simpletun

# 39.100.155.73为跳板机,给跳板机添加主机路由,留个后路
route add -host 39.100.155.73 gw 172.25.111.253 dev eth0
# 建立隧道的连接走原先的默认路由
route add -host 8.210.252.214 gw 172.25.111.253 dev eth0
# 与家里的本地路由隧道通信走原先的默认路由
route add -host 120.239.197.209 gw 172.25.111.253 dev eth0 
route del default gw 172.25.111.253 
route add default gw 192.168.50.1 dev tap1 

# 连接阿里云香港上的3389端口上创建以太网隧道,注意:这个simpletun是添加了加密功能的
cd ~/simpletun-crypt
nohup ./simpletun -i tap1 -p 3389 -a -d -c 8.210.252.214 &

ping一下落地机,看是否ping得通

# 看出口地址是否为落地机的IP地址 
[root@iZwz9bb1tttdsmhn8zf74yZ simpletun-crypt]# curl http://httpbin.org/ip
{
  "origin": "8.210.252.214"
}

# 每隔10秒与跳板机ping一次,相当于维持心跳,以免隧道通信超时
mkdir ~/ping # 建立专门的目录,以便于nohup输出
cd ~/ping
nohup ping -i 10 192.168.50.1 &

# 在3390端口上创建以太网隧道,注意:这个是正常版本的simpletun
cd ~/simpletun
nohup ./simpletun -i tap2 -p 3390 -a -d -s &

以下步骤在VMware虚拟机上操作

新建一个名称为RouterHK的VMware虚拟机

网络采用桥接模式

配置好后,在网络适配器设置那里,将【复制物理网络状态】这个选中

然后,安装CentOS 7.6系统,使用的是CentOS-7-x86_64-DVD-1810.iso这个镜像。

选择,GNOME桌面

主机名设置为fanqiang,方便识别。也可以安装好后,通过这个命令来修改

hostnamectl set-hostname fanqiang

安装需要的软件

yum -y install gcc
yum -y install telnet

# 下载原版的源码,并编译
cd ~
wget --no-check-certificate https://zhouweiming.cn/files/simpletun.tar.bz2
tar xvf simpletun.tar.bz2
cd simpletun # 切换到~/simpletun目录
gcc simpletun.c -o simpletun

然后,同样,在虚拟机上卸载firewalld,安装iptables

systemctl stop firewalld
systemctl disable firewalld 

yum -y install iptables-services
systemctl enable iptables.service

在虚拟机上开启路由转发功能

vim /etc/sysctl.conf 
# 设置如下字段的值为1
net.ipv4.ip_forward = 1

使设置生效
sysctl -p
再查看一下,确保net.ipv4.ip_forward的值为1
[root@fanqiang ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

编辑/etc/resolv.conf,添加域名解析服务器8.8.8.8

nameserver 8.8.8.8

在虚拟机上,添加tap网卡

ip tuntap add dev tap3 mode tap
ip link set tap3 up
ip addr add 192.168.51.2/24 dev tap3

然后,设置路由表,下面这个是旧的路由表。旧的默认网关为:192.168.3.1,接口为ens33。 记下来下面用到。

需要将全局流量都发往tap3网卡,经过simpletun隧道发往跳板机的tap2网卡,然后经跳板机的隧道网卡tap1发出去给落地机的隧道网卡tap0,落地机再经外网网卡发往互联网。这样就要将tap2设置为虚拟机的默认路由网关。但另外,虚拟机与跳板机 120.25.1.215 之间的隧道连接必须走真实的网卡ens33。路由命令如下:

# 删除旧的默认路由
route del default gw 192.168.3.1  
# 将跳板机的tap2设置为虚拟机的默认路由网关
route add default gw 192.168.51.1 dev tap3 
# 与跳板机  120.25.1.215 之间的隧道连接走原先的默认路由
route add -host 120.25.1.215 gw 192.168.3.1 dev ens33

修改后的路由表如下,第1条为经tap3的默认路由,第2条为 虚拟机与跳板机 120.25.1.215 之间的隧道连接特定路由,经我们的真实网卡,后面3条为各个网卡的直连路由

连接simpletun服务端,与落地机组成局域网

# 连接simpletun服务端,其中120.25.1.215为跳板机的IP
cd ~/simpletun
nohup ./simpletun -i tap3 -p 3390 -a -d -c 120.25.1.215 &

在虚拟机内,ping一下192.168.51.1,看新组成的局域网是否成功连通。

# 每隔10秒与跳板机ping一次,相当于维持心跳,以免隧道通信超时
mkdir ~/ping # 建立专门的目录,以便于nohup输出
cd ~/ping
nohup ping -i 10 192.168.51.1 &

看一下IP,是否为落地机的IP

[root@fanqiang simpletun]# curl http://httpbin.org/ip
{
  "origin": "8.210.252.214"
}

发出去的流量均进行地址伪装,即源地址改为路由器地址(tap1网卡)

iptables -t nat -A POSTROUTING -o tap3 -j MASQUERADE

service iptables save
service iptables restart

将无线网卡插入电脑的USB接口,然后挂载到虚拟机上 Ralink 802.11 n WLAN这个是刚插入的无线网卡,选择【连接(断开与 主机 的连接)】

然后在虚拟机上,运行ifconig命令,发现多了一张名为wls35u1的网卡

使用nmcli设置网卡,并开启

# 这里,网卡的名称为wls35u1,将热点的名称设置为FanQiang,将密码设置为502502502,将ip地址设置为192.168.18.1/24

nmcli con add type wifi ifname wls35u1 mode ap con-name wls35u1 802-11-wireless.ssid FanQiang
nmcli con modify wls35u1 802-11-wireless.band bg connection.autoconnect yes 802-11-wireless-security.key-mgmt wpa-psk
nmcli con modify wls35u1 802-11-wireless-security.psk 502502502 ipv4.addr 192.168.18.1/24 ipv4.method shared

# 后面每次启动,只执行这句命令即可,不用重复设置上面3个命令
nmcli con up wls35u1

然后,就可以用设备连上去这个WiFi热点,进行全局翻墙了。

--更新于 2023-03-09 10:51:41