伟明部落格

Linux软路由部署

--发布于 2022-03-31 15:08:55

操作系统使用的是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
--更新于 2023-03-09 10:51:41