利用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
可以上网了
浙公网安备 33010602011771号