background image
怎么配置无公网 IP 地址的云主机访问 Internet?
抛开云主机环境来说,通常一个办公网络内所有的主机都没有公网 IP 地址,但他们都能通
过具有 IP 地址的路由器(网关)设备访问 Internet,此设备只需要具备 NAT 和转发功能即
可。具有这样功能的设备当然可以用某台计算机代替。
下面是一个最简单的模型:
主机 A(服务端):
网卡 1:内网 IP 地址 1
网卡 2:公网 IP 地址 3 或者能访问 Internet 的某个 IP 地址 3
主机 B(客户端):
网卡 1:内网 IP 地址 2
主机 B 想通过主机 A 访问 Internet,只需要主机 B 指定主机 A 为网关,主机 A 能够将来自
主机 B 的包伪装成主机 A 上的网卡 2 上的 IP 即可(sNAT)。
因此云主机环境也是一样,只要保证两个云主机间内网是连通的,另一台云主机能访问
Internet 即可。如果某两个云主机内网不通,但可以通过 vpn 连通,也可以实现。
(一)下面是两个主机间通过内网 IP 直接连接模拟访问 Internet 的例子。
主机 A(服务端):
网卡 1:10.20.0.128(eth0,无 Internet 访问)
网卡 2:192.168.1.52(eth1,Internet 访问)
主机 B(客户端):
网卡 1:10.20.0.129(eth0,无 Internet 访问)
主机 A 操作:
开启 iptables 转发功能:
1
2
3
sysctl -w net.ipv4.conf.default.accept_source_route=1
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w net.ipv4.ip_forward=1
配置 iptables NAT 规则:
1
2
modprobe iptable_nat
iptables -t nat -A POSTROUTING -s 10.20.0.0/24 -o eth1 -j MASQUERA
DE
删除 iptables 拒绝转发规则:
1
iptables -D FORWARD -j REJECT --reject-with icmp-host-prohibited
主机 B 操作:
将默认网关配置成主机 A 的网卡 1 地址:
1
route add -host 10.20.0.128/32 dev eth0