利用ssh, 让不能上外网的服务器连上外网

本文要解决: "内网服务器" 上外网的的问题

情况描述如下:

在内网环境, 有台Linux服务器(命名为: SERVER), 被网络管理员禁止上外网了.

本文提供一个方法, 可以让这台服务器(SERVER)上外网

 

第一,准备另外一台可以上网的Linux服务器(CLIENT)

1, 需要有root权限

2, 可以连接 ssh root@SERVER

3, 需要创建 tun 设备

执行如下脚本

 1 # 需要一个tun设备, 这里命名为 tun0, 可以自己修改
 2 ip tuntap add tun0 mode tun
 3 # 这个tun0 的ip地址, 可以自己修改
 4 ifconfig tun0 172.16.99.2 netmask 255.255.255.252
 5 
 6 echo 1 > /proc/sys/net/ipv4/ip_forward
 7 
 8 modprobe iptable_nat
 9 iptables -F INPUT
10 iptables -F FORWARD
11 iptables -F POSTROUTING -t nat
12 # 默认把 nat 给flush了, 可以修改
13 iptables -t nat -F
14 iptables -P FORWARD ACCEPT
15 # ens33 是本机网卡, 可以修改
16 iptables -A FORWARD -i tun0 -o ens33 -m state  --state RELATED,ESTABLISHED -j ACCEPT
17 iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE

 

第二, 在服务器(SERVER)

执行如下脚本

 1 # 需要tun设备
 2 ip tuntap add tun0 mode tun
 3 # tun0 的ip
 4 ifconfig tun0 172.16.99.1 netmask 255.255.255.252
 5 
 6 for ((ip1=0;ip1<256;ip1++)) {
 7 # 注意不要覆盖本地路由
 8         [ "$ip1" = "192" ] && continue
 9         [ "$ip1" = "172" ] && continue
10 # 添加其他路由
11         route add -net $ip1.0.0.0 netmask 255.0.0.0 dev tun0 gw 172.16.99.2
12 }

 

第三, 在CLIENT

做 ssh 连接

1 # 注意, 解释下w0:0
2 # 第1个 0 是 CLIENT 的tun0 的意思
3 # 第2个 0 是 SERVER 的tun0 的意思
4 # 注意自己修改
5 
6 ssh root@SERVER -w0:0

 

第四, 在SERVER

可以上网了

 

posted @ 2021-09-26 16:41  肚饿  阅读(794)  评论(0)    收藏  举报