Linux软路由部署
操作系统使用的是CentOS 7.6
落地机为阿里云东京,IP: 8.211.130.169,下面这些命令均在落地机上操作
先卸载firewalld防火墙安装iptables。由于CentOS 7自带的防火墙管理工具是firewalld,不是常用的iptables,默认也没有安装iptables-services。所以,我们需要先关掉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
所有去往互联网的流量均进行地址伪装,即源地址改为路由器地址(eth0网卡)
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
# 启动simpletun服务端(监听61891端口)
nohup ./simpletun -i tap0 -p 61891 -a -d -s &
IPLC流量转发规划: 入口端口 61891 落地IP就是阿里云东京的IP即 8.211.130.169 落地端口也是 61891
如下所示,在hmbcloud.com管理后台添加一条TCP转发规,供simpletun隧道使用
新建一个名称为Router的VMware虚拟机
网络采用桥接模式
配置好后,在网络适配器设置那里,将【复制物理网络状态】这个选中
然后,安装CentOS 7.6系统,使用的是CentOS-7-x86_64-DVD-1810.iso这个镜像。
选择,GNOME桌面
主机名设置为fanqiang
,方便识别。也可以安装好后,通过这个命令来修改
hostnamectl set-hostname fanqiang
安装好系统后,下载编译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 tap1 mode tap
ip link set tap1 up
ip addr add 192.168.50.2/24 dev tap1
然后,设置路由表,下面这个是旧的路由表。旧的默认网关为:192.168.3.1,接口为ens33。 记下来下面用到。
需要将全局流量都发往tap1网卡,经过simpletun隧道发往落地机的tap0网卡,然后经落地机的外网网卡eth0发出去,这样就要将tap0设置为虚拟机的默认路由网关。但另外,虚拟机与落地机 8.211.130.169 之间的连接必须走真实的网卡ens33。路由命令如下:
# 删除旧的默认路由
route del default gw 192.168.3.1
# 将落地机的tap0设置为虚拟机的默认路由网关
route add default gw 192.168.50.1 dev tap1
# 与IPLC流量转发入口(120.233.10.212)的连接走原先的默认路由
route add -host 120.233.10.212 gw 192.168.3.1 dev ens33
修改后的路由表如下,第1条为经tap1的默认路由,第2条为IPLC流量转发入口(120.233.10.212)特定路由,经我们的真实网卡,后面3条为各个网卡的直连路由
连接simpletun服务端,与落地机组成局域网
# 连接simpletun服务端,其中120.233.10.212为IPLC流量转发的入口IP
nohup ./simpletun -i tap1 -p 61891 -a -d -c 120.233.10.212 &
# 每隔10秒与落地机ping一次,相当于维持心跳,以免隧道通信超时
nohup ping -i 10 192.168.50.1 &
在虚拟机内,ping一下192.168.50.1,看新组成的局域网是否成功连通。
看一下IP,是否为落地机的IP
[root@fanqiang simpletun]# curl http://httpbin.org/ip
{
"origin": "8.211.130.169"
}
发出去的流量均进行地址伪装,即源地址改为路由器地址(tap1网卡)
iptables -t nat -A POSTROUTING -o tap1 -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
# 其它一些命令
nmcli con help # 帮助
nmcli con show # 查看所有无线配置列表
nmcli con delete <uuid> # 删除uuid指定的配置
然后,就可以用设备连上去这个WiFi热点,进行全局翻墙了。
附录
nm-connection-editor 一个图形化的网络管理命令
nmtui 一个文本界面的网络管理命令
# 修改WiFi热点的显示名称为FanQiang
nmcli con modify wls35u1 802-11-wireless.ssid FanQiang