阿里云 VPC 环境内网服务器访问外网

环境要求

需要在同一个 VPC 局域网的多台主机,其中至少有一台主机是可以有外网 ip 可以访问外网的

image.png
null

配置软路由器


这套网络环境最主要的解决方案就是实现一台软路由器,可以访问外网,因此有外网 ip 的代理服务器就充当了这个角色。

Linux 配置软路由:

注意以下方法均在可以访问外网的那台服务器上配置
方法 1

1. 查看外网上的转发功能的开启
没开启的话直接
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf && sysctl -p

2. 外网机上配置 iptables
iptables -t nat -A POSTROUTING -s 172.19.xx.xx/20 -o eth0 -j MASQUERADE
其中 172.19.xx.xx/20 为内网机器的 ip 段

方法 2
  1. 修改/etc/sysctl.conf文件,添加配置net.ipv4.ip_forward=1
  2. 使用sysctl -p命令重新加载配置生效
  3. cat /proc/sys/net/ipv4/ip_forward检查下配置是不是1
  4. 启用 iptables 的 SNAT 链: iptables -t nat -R POSTROUTING 1 -s 172.19.0.0/16 -j MASQUERADE(iptables 规则重启会清空,参考各个不同的 Linux 操作系统如何持久化这个规则。其中-s参数指定了 source 网段,根据 VPC 的网段配置决定,如果不加这个参数则对所有 source 均可路由,这显然对内网服务是隐患 )

可用命令

查看 nat 规则

iptables -L -t nat

删除第一条 nat 规则

iptables -t nat -D POSTROUTING 1

在 Aliyun 配置 VPC 的路由规则


打开 VPC 的控制台,找到添加路由表,添加一条0.0.0.0/0(即默认路由) 的规则:
image.png

注意在该 vpc 路由下面一定要设置为 0.0.0.0/0

在我的场景下,将默认路由指向有外网访问权限的代理服务器上即可。如果用 NAT 方案,下一条类型选成 NAT 即可。这时候打开原本不能访问外网的 windows 服务器看看,是不是能 ping 通了?

image.png

在外网环境访问内网,Linux 下同样可以用 iptables 来实现,也可使用 rinetd 这个简单的服务,参考阿里云的文档: https://help.aliyun.com/knowledge_detail/42525.html

  
    展开阅读全文