tencent cloud

Cloud Virtual Machine

Dinâmicas e anúncios
Dinâmica do produto
Dinâmica de atualização de imagem pública
Anúncio do produto
Introdução do produto
Visão geral da Cloud Virtual Machine
Vantagens do produto
Conceitos básicos
Regiões e zonas
Tutorial
Service Regions and Service Providers
Cobrança do produto
Visão geral de cobrança
Modo de cobrança
Item de cobrança
Converter modo de cobrança
Aquisição de instâncias
Descrição de cobrança de ajustes de configuração
Descrição de cobrança em atraso
Guia de início rápido
Comprar instância Linux personalizada
Comprar instância Windows personalizada
Guia do usuário
Visão geral do guia de operação
Visão geral dos limites de uso
Instância
Instância spot
Instância reservada
Imagem
Armazenamento
Backup e recuperação
Rede
Segurança
Senhas/chaves secretas
Gerenciamento de operação e manutenção
Migrar o servidor
Migração online
Consultoria de migração
Solução de falhas
Falhas relacionados ao login em instâncias Windows
Falhas relacionados ao login em instâncias Linux
Outras falhas relacionadas ao login em instâncias
Falha na execução de instância
Falha de memória em instâncias Linux
Falha de rede
Tutorial prático
Recomendações de seleção da CVM
Configurar o ambiente
Configurar o site
Configurar o aplicativo
Configurar a página visual
Carregar arquivos locais para a CVM
Teste de desempenho de rede
Outros tutoriais práticos
Segurança e conformidade
Gerenciamento de acesso
Rede
Perguntas frequentes
Regiões e zonas
Sobre o faturamento
Instância
Armazenamento
Imagem
Migração de servidor
Rede
Segurança
Operação/manutenção e monitoramento
Gerenciamento de acesso
Serviço NTP
Cenário de aplicação
Agreements
CVM Service Level Agreements
Red Hat Enterprise Linux Image Service Agreement
Public IP Service Level Agreement
Glossário

Configurar gateway público

PDF
Modo Foco
Tamanho da Fonte
Última atualização: 2024-01-23 17:41:32
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