阿里云没公网ip怎么用

一、利用squid代理上网

#查看装了没有
rpm -qa|grep squid
#没有的话装一个
yum -y install squid
#设置开机启动
chkconfig --level 35 squid on 
#如果是centos7的话是
systemctl enable squid.service

然后vim /etc/squid/squid.conf修改配置

http_port 3128      //设置监听的IP与端口号
cache_mem 64 MB      //额外提供给squid使用的内存,squid的内存总占用为 X * 10+15+“cache_mem”,其中X为squid的cache占用的容量(以GB为单位),
              //比如下面的cache大小是100M,即0.1GB,则内存总占用为0.1*10+15+64=80M,推荐大小为物理内存的1/3-1/2或更多。
maximum_object_size 4 MB   //设置squid磁盘缓存最大文件,超过4M的文件不保存到硬盘
minimum_object_size 0 KB   //设置squid磁盘缓存最小文件
maximum_object_size_in_memory 4096 KB   //设置squid内存缓存最大文件,超过4M的文件不保存到内存
cache_dir ufs /var/spool/squid 100 16 256   //定义squid的cache存放路径 、cache目录容量(单位M)、一级缓存目录数量、二级缓存目录数量
logformat combined %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}&gt;h" %Ss:%Sh        //log文件日志格式
access_log /var/log/squid/access.log combined  //log文件存放路径和日志格式
cache_log /var/log/squid/cache.log   //设置缓存日志
logfile_rotate 60   //log轮循 60天
cache_swap_high 95  //cache目录使用量大于95%时,开始清理旧的cache
cache_swap_low 90   //cache目录清理到90%时停止。
acl localnet src 192.168.1.0/24  //定义本地网段
http_access allow localnet  //允许本地网段使用
http_access deny all  //拒绝所有
visible_hostname squid.david.dev  //主机名
cache_mgr [email protected]  //管理员邮箱

不过有些不需要配置,用默认的就可以

http_port 3128
cache_mem 64 MB
maximum_object_size 4 MB
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log
acl localnet src 10.0.0.0/8
http_access allow localnet
http_access deny all
visible_hostname squid.taotie.dev
cache_mgr [email protected]

其中比较重要的是,这里要修改成自己的内网客户机的ip,我是两个ip 则是xxx.xxx.xxx.xx-xxx.xxx.xxx.xxx 掩码就不填了,反正他自己能算出来,关键我填8和24都报了警告 汗

#src表示客户端ip  10.0.0.0是ip  8是掩码位数
acl localnet src 10.0.0.0/8

然后初始化

#初始化
squid –z
#启动
service squid start
#centos 7启动
systemctl start squid.service
systemctl status squid.service

应该是没有问题了,此时登录没有内网的服务器,配置浏览器代理,看能不能上网。

不过阿里云还挺方便的,没有外网ip的服务器也能yum install一些常用软件,所以上面这个其实看个人,也就windows的可以玩玩。

二、搭建ssh转发

#-L 把监听到的本地 转发 给目标机器
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
#-R 把远程的 转发给 自己
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
#-C:压缩数据传输。
#-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。
#-N :不执行脚本或命令,通常与-f连用。
#-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。 -L 本地端口:目标IP:目标端口
#-T 不分配 TTY 只做代理用 -q 安静模式,不输出 错误/警告 信息

把有公网ip的机器再开个端口,例如8022,这个端口收到的ssh,直接转发给没有公网ip的机器。在有公网的机器上执行,下面的命令。 之所以写127.0.0.1是因为自己8022收到的都转发给别人的22端口.

ssh -CfNg -L 8022:127.0.0.1:22 xxx.xx.xx.xxx(没公网ip的机器的内网ip)

这个时候,使用公网ip地址,root用户 8022端口登陆,实际上就登录到了没有公网ip的机器上了。

三、VPC网络代理上网

在有公网ip的机器上做snat代理(这个应该是只有vpc网络才可以用的,经典网络不行,弹性公网应该也可以)

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf

#或者直接修改/etc/sysctl.conf
net.ipv4.ip_forward=1

#然后刷新使其生效
sysctl -p

#centos防火墙是firewalld,但是我要用Iptables
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld

#centos 6
yum install -y iptables
#centos 7
yum install -y iptables-services

#先容许所有规则
iptables -P INPUT ACCEPT
#添加一条规则,接收内网的访问  172.16.3.0/24为vpc网段
iptables -A FORWARD -d 172.16.3.0/24 -j ACCEPT
#添加nat规则 两个地址分别是vpc网段、有公网ip的服务器
iptables -t nat -I POSTROUTING -s 172.16.3.0/24 -j SNAT --to-source 172.16.3.99

#查看规则 /etc/sysconfig/iptables
iptables -L -n

#启动防火墙
systemctl start iptables
#设置为开机启动
systemctl enable iptables

还有最后一部,跑到阿里云控制台,到vpc网络中,选择路由器,添加一条规则,0,0,0,0/0 下一跳为有公网的ecs实例。

然后另外两台没有公网ip的机器,现在也可以上网了。当然从外网连不进去,但是可以做服务器,往外推送消息了

猜你喜欢

转载自my.oschina.net/u/1047640/blog/1608761