云主机无公网ip无nat网关上网方法
使用iptables上网
# 需要上网的ecs需要和有外网的ecs在同一个可用区同一个安全组下(就是所有端口全开)
# 有外网的ecs
iptables -F #清理防火墙规则,根据情况使用
# 192.168.0.158 是有外网ip的ecs的内网地址
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.158 #地址转换
iptables -t nat --list
# 有外网的ecs
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf
ip route add default via 192.168.0.1
# 需要上网的ecs
route delete default
# 192.168.0.158 是有外网ip的ecs的内网地址
route add default gw 192.168.0.158
# 或者
ip route add default via 192.168.0.158
# 测试
ping 114.114.114.114
ping www.baidu.com
#=================其他操作======================
# 查看路由
ip r
# 默认的路由
default via 192.168.0.1 dev eth0 proto dhcp metric 100
# 如果默认被删除
ip route add default via 192.168.0.1 dev eth0 proto dhcp metric 100
# 显示num
iptables -t nat --list --line-number
# 删除一条nat规则
iptables -t nat -D POSTROUTING 5
使用firewalld上网
通过firewall的操作iptables,会和docker冲突,docker也会操作iptables,装有docker的用上面的
## 有上网的ecs
[root@ecs-9967 ~]# systemctl start firewalld
# 把在使用端口开放出去
[root@ecs-9967 ~]# firewall-cmd --add-port=8090/tcp --add-port=8200/tcp --add-port=9000/tcp --add-port=80/tcp --add-port=8081/tcp --per
success
[root@ecs-9967 ~]#
[root@ecs-9967 ~]# firewall-cmd --add-port=8090/tcp --add-port=8200/tcp --add-port=9000/tcp --add-port=80/tcp --add-port=8081/tcp
[root@ecs-9967 ~]# firewall-cmd --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client ssh
ports: 8090/tcp 8200/tcp 9000/tcp 80/tcp 8081/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@ecs-9967 ~]# firewall-cmd --add-masquerade
success
[root@ecs-9967 ~]# firewall-cmd --add-masquerade --per
success
[root@ecs-9967 ~]# systemctl enable firewalld
## 需要上网的ecs
ip route add default via 192.168.0.158

浙公网安备 33010602011771号