tencent cloud

Virtual Private Cloud

Notas de versão e anúncios
Notas de versão
Announcements
Introdução do produto
Visão geral
Vantagens
Casos de uso
Conceitos
Limite de cota
Início rápido
Planejamento de rede
Conexões do VPC
Criação de uma VPC IPv4
Guia de operação
Topologia de rede
Virtual Private Cloud (VPC)
Sub-redes
Tabelas de rotas
IP elástico
HAVIPs
Pacote de largura de banda
Conexão de rede
Gerenciamento de segurança
Ferramentas de diagnóstico
Monitoramento e alarmes
Tutoriais Práticas
Migração da rede clássica para o VPC
Configuração de um CVM de gateway público
Criação de cluster principal/secundário de alta disponibilidade usando HAVIP + Keepalived
Comunicação principal/secundária de nuvem híbrida (DC e VPN)
Comunicação principal/secundária de nuvem híbrida (CCN e VPN)
Perguntas frequentes
Geral
Conexão
Segurança
Fale conosco
Glossário
DocumentaçãoVirtual Private CloudTutoriais PráticasConfiguração de um CVM de gateway público

Configuração de um CVM de gateway público

PDF
Modo Foco
Tamanho da Fonte
Última atualização: 2024-01-24 17:44:05
Atenção:
A partir de 6 de dezembro de 2019, o Tencent Cloud não oferece mais suporte à configuração de um CVM como o gateway público na página de aquisição do CVM. Se for necessário configurar um gateway, siga as instruções abaixo.

Visão geral

Você pode acessar a internet usando um CVM de gateway público com um IP público ou EIP quando alguns de seus CVMs baseados no VPC não possuem IPs públicos. O CVM de gateway público converte o IP de origem do tráfego de saída. Quando outros CVMs acessarem a internet por meio do gateway público CVM, os IPs de origem serão convertidos em IPs públicos do CVM de gateway público. Consulte a figura abaixo.


Pré-requisitos

Você está logado no console do CVM.
O CVM de gateway público e os CVMs que precisam acessar a internet pelo CVM de gateway público devem estar localizados em sub-redes diferentes porque o CVM de gateway público só consegue encaminhar solicitações de outras sub-redes.
O CVM de gateway público deve ser do Linux. Os CVMs do Windows não funcionarão.

Instruções

Etapa 1: vincule um EIP (opcional)

Nota:
Pule esta etapa se o CVM de gateway público já tiver um endereço IP público.
1. Faça login no console do CVM e selecione EIP na barra lateral esquerda.
2. Localize o EIP para vincular a instância, selecione More (Mais) > Bind (Vincular) na coluna Operation (Operação).

3. Na janela pop-up, selecione um CVM a ser configurado e vincule-o ao EIP.


Etapa 2: configure uma tabela de rotas para a sub-rede do gateway

Atenção:
A sub-rede do gateway e outras sub-redes não podem compartilhar a mesma tabela de rotas. É necessário criar uma tabela de rotas separada para a sub-rede do gateway.
2. Associe a tabela de rotas com a sub-rede onde o CVM de gateway público está localizado.


Etapa 3: configure uma tabela de rotas para outras sub-redes

Essa tabela de rotas direciona todo o tráfego dos CVMs sem um IP público para o gateway público, para que eles também possam acessar as redes públicas. Adicione as seguintes políticas de roteamento à tabela de rotas:
Destination (Destino): o IP público que você deseja acessar.
Next hop type (Tipo de próximo salto): CVM.
Next hop (Próximo salto): o IP privado da instância do CVM ao qual o EIP foi vinculado na Etapa 1. Para obter mais informações, consulte Gerenciamento de tabela de rotas.


Etapa 4: configure o gateway público

1. Faça login no CVM de gateway público e execute as etapas abaixo para habilitar o encaminhamento de rede e o proxy NAT.
1.1 Execute o seguinte comando para criar o script vpcGateway.sh em usr/local/sbin.
vim /usr/local/sbin/vpcGateway.sh
1.2 Pressione i para alternar ao modo de edição e adicione o seguinte código no script.
#!/bin/bash
echo "----------------------------------------------------"
echo " `date`"
echo "(1)ip_forward config......"
file="/etc/sysctl.conf"
grep -i "^net\\.ipv4\\.ip_forward.*" $file &>/dev/null && sed -i \\
's/net\\.ipv4\\.ip_forward.*/net\\.ipv4\\.ip_forward = 1/' $file || \\
echo "net.ipv4.ip_forward = 1" >> $file
echo 1 >/proc/sys/net/ipv4/ip_forward
[ `cat /proc/sys/net/ipv4/ip_forward` -eq 1 ] && echo "-->ip_forward:Success" || \\
echo "-->ip_forward:Fail"
echo "(2)Iptables set......"
iptables -t nat -A POSTROUTING -j MASQUERADE && echo "-->nat:Success" || echo "-->nat:Fail"
iptables -t mangle -A POSTROUTING -p tcp -j TCPOPTSTRIP --strip-options timestamp && \\
echo "-->mangle:Success" || echo "-->mangle:Fail"
echo "(3)nf_conntrack config......"
echo 262144 > /sys/module/nf_conntrack/parameters/hashsize
[ `cat /sys/module/nf_conntrack/parameters/hashsize` -eq 262144 ] && \\
echo "-->hashsize:Success" || echo "-->hashsize:Fail"
echo 1048576 > /proc/sys/net/netfilter/nf_conntrack_max
[ `cat /proc/sys/net/netfilter/nf_conntrack_max` -eq 1048576 ] && \\
echo "-->nf_conntrack_max:Success" || echo "-->nf_conntrack_max:Fail"
echo 10800 >/proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established \\
[ `cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established` -eq 10800 ] \\
&& echo "-->nf_conntrack_tcp_timeout_established:Success" || \\
echo "-->nf_conntrack_tcp_timeout_established:Fail"
1.3 Pressione Esc e digite :wq para salvar e fechar o arquivo.
1.4 Execute o seguinte comando para definir a permissão do script.
chmod +x /usr/local/sbin/vpcGateway.sh
echo "/usr/local/sbin/vpcGateway.sh >/tmp/vpcGateway.log 2>&1" >> /etc/rc.local
2. Defina o RPS do gateway público.
2.1 Execute o seguinte comando para criar o script set_rps.sh em usr/local/sbin.
vim /usr/local/sbin/set_rps.sh
2.2 Pressione i para alternar ao modo de edição e adicione o seguinte código no script.
# !/bin/bash
echo "--------------------------------------------"
date
mask=0
i=0
total_nic_queues=0
get_all_mask() {
local cpu_nums=$1
if [ $cpu_nums -gt 32 ]; then
mask_tail=""
mask_low32="ffffffff"
idx=$((cpu_nums / 32))
cpu_reset=$((cpu_nums - idx * 32))
if [ $cpu_reset -eq 0 ]; then
mask=$mask_low32
for ((i = 2; i <= idx; i++)); do
mask="$mask,$mask_low32"
done
else
for ((i = 1; i <= idx; i++)); do
mask_tail="$mask_tail,$mask_low32"
done
mask_head_num=$((2 ** cpu_reset - 1))
mask=$(printf "%x%s" $mask_head_num $mask_tail)
fi
else
mask_num=$((2 ** cpu_nums - 1))
mask=$(printf "%x" $mask_num)
fi
echo $mask
}
set_rps() {
if ! command -v ethtool &>/dev/null; then
source /etc/profile
fi
ethtool=$(which ethtool)
cpu_nums=$(cat /proc/cpuinfo | grep processor | wc -l)
if [ $cpu_nums -eq 0 ]; then
exit 0
fi
mask=$(get_all_mask $cpu_nums)
echo "cpu number:$cpu_nums mask:0x$mask"
ethSet=$(ls -d /sys/class/net/eth*)
for entry in $ethSet; do
eth=$(basename $entry)
nic_queues=$(ls -l /sys/class/net/$eth/queues/ | grep rx- | wc -l)
if (($nic_queues == 0)); then
continue
fi
cat /proc/interrupts | grep "LiquidIO.*rxtx" &>/dev/null
if [ $? -ne 0 ]; then # not smartnic
#multi queue don't set rps
max_combined=$(
$ethtool -l $eth 2>/dev/null | grep -i "combined" | head -n 1 | awk '{print $2}'
)
#if ethtool -l $eth goes wrong.
[[ ! "$max_combined" =~ ^[0-9]+$ ]] && max_combined=1
if [ ${max_combined} -ge ${cpu_nums} ]; then
echo "$eth has equally nic queue as cpu, don't set rps for it..."
continue
fi
else
echo "$eth is smartnic, set rps for it..."
fi
echo "eth:$eth queues:$nic_queues"
total_nic_queues=$(($total_nic_queues + $nic_queues))
i=0
while (($i < $nic_queues)); do
echo $mask >/sys/class/net/$eth/queues/rx-$i/rps_cpus
echo 4096 >/sys/class/net/$eth/queues/rx-$i/rps_flow_cnt
i=$(($i + 1))
done
done
flow_entries=$((total_nic_queues * 4096))
echo "total_nic_queues:$total_nic_queues flow_entries:$flow_entries"
echo $flow_entries >/proc/sys/net/core/rps_sock_flow_entries
}
set_rps
2.3 Pressione Esc e digite :wq para salvar e fechar o arquivo.
2.4 Execute o seguinte comando para definir a permissão do script.
chmod +x /usr/local/sbin/set_rps.sh
echo "/usr/local/sbin/set_rps.sh >/tmp/setRps.log 2>&1" >> /etc/rc.local
chmod +x /etc/rc.d/rc.local
3. Reinicie o CVM de gateway público para aplicar as configurações. Depois, teste se um CVM sem um IP público consegue acessar a internet pelo CVM de gateway público.

Ajuda e Suporte

Esta página foi útil?

comentários