云主机无公网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
posted @ 2021-12-07 15:22  1769987233  阅读(256)  评论(0)    收藏  举报