- Вопрос или проблема
- Ответ или решение
- Настройка NAT-шлюза на CentOS 7 для обеспечения доступа к интернету для частного сервера
- 1. Начальная проверка настроек сети
- 2. Включение пересылки пакетов
- 3. Настройка NAT
- 4. Проверка конфигурации фаервола
- 5. Проверка конфигурации сервера 02
- 6. Тестирование выхода в интернет
- Заключение
Вопрос или проблема
У меня есть следующая диаграмма системы: Интернет –> сервер шлюза NAT (сервер 01) –> сервер приложения (сервер 02). Сервер шлюза NAT может получать доступ к интернету. Сервер 01 и сервер 02 могут пинговать друг друга. Оба сервера работают на CentOS 7.9. Я хочу, чтобы сервер 02 в частной подсети имел доступ к интернету через сервер шлюза NAT 01. Проблема, с которой я сталкиваюсь, заключается в том, что сервер 02 не может получить доступ к интернету. Можете помочь мне с причиной и конфигурационным решением в данном случае?
Сервер 01: IP: 192.168.100.100/24, GW: 192.168.100.254
Сервер 02: IP: 192.168.110.101/24, GW: 192.168.110.254
[centos@nat-gateway-server-01 ~]$ ip route
default via 192.168.100.254 dev eth0 proto static metric 100
192.168.100.0/24 dev eth0 proto kernel scope link src 192.168.100.100 metric 100
[centos@nat-gateway-server-01 ~]$ sudo firewall-cmd –list-all
public (активен)
target: default
icmp-block-inversion: нет
interfaces: eth0
sources:
services: dhcpv6-client dns http https ssh
ports:
protocols:
masquerade: да
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.110.0/24" accept
[centos@nat-gateway-server-01 ~]$ sestatus
Статус SELinux: отключен
[centos@nat-gateway-server-01 ~]$ ping 192.168.110.101
PING 192.168.110.101 (192.168.110.101) 56(84) bytes of data.
64 bytes from 192.168.110.101: icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from 192.168.110.101: icmp_seq=2 ttl=63 time=0.123 ms
— 192.168.110.101 ping statistics —
4 пакета передано, 4 получено, 0% потерь пакетов, время 3000ms
rtt min/avg/max/mdev = 0.056/0.101/0.158/0.042 ms
[centos@nat-gateway-server-01 ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=110 time=11.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=110 time=11.5 ms
— 8.8.8.8 ping statistics —
2 пакета передано, 2 получено, 0% потерь пакетов, время 1001ms
rtt min/avg/max/mdev = 11.584/11.596/11.608/0.012 ms
[centos@app-server-02 ~]$ ip route
default via 192.168.110.254 dev eth0 proto static metric 100
192.16.110.0/24 dev eth0 proto kernel scope link src 192.168.110.101 metric 100
[centos@app-server-02 ~]$ ping 192.168.100.100
PING 192.168.100.100 (192.168.100.100) 56(84) bytes of data.
64 bytes from 192.168.100.100: icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from 192.168.100.100: icmp_seq=2 ttl=63 time=0.123 ms
— 192.168.100.100 ping statistics —
4 пакета передано, 4 получено, 0% потерь пакетов, время 3000ms
rtt min/avg/max/mdev = 0.056/0.101/0.158/0.042 ms
[centos@app-server-02 ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
— 8.8.8.8 ping statistics —
4 пакета передано, 0 получено, 100% потерь пакетов, время 2999ms
[centos@app-server-02 ~]$ sudo firewall-cmd –list-all
public (активен)
target: default
icmp-block-inversion: нет
interfaces: eth0
sources: 192.168.100.100
services: dhcpv6-client dns http https ssh
ports:
protocols:
masquerade: да
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="192.168.100.0/24" accept
[centos@app-server-02 ~]$ sestatus
Статус SELinux: отключен
Ответ или решение
Настройка NAT-шлюза на CentOS 7 для обеспечения доступа к интернету для частного сервера
Если ваш частный сервер (сервер 02) не может получить доступ к интернету через NAT-шлюз (сервер 01), вы можете столкнуться с рядом проблем. Давайте разберемся, как правильно настроить NAT-шлюз на CentOS 7 и выяснить, какие шаги необходимо предпринять, чтобы обеспечить вашему серверу доступ к интернету.
1. Начальная проверка настроек сети
Согласно вашему описанию, у вас есть следующие сетевые настройки:
-
Сервер 01 (NAT-шлюз):
- IP-адрес: 192.168.100.100/24
- Шлюз: 192.168.100.254
-
Сервер 02 (приложенческий сервер):
- IP-адрес: 192.168.110.101/24
- Шлюз: 192.168.110.254
Сервер 01 имеет доступ к интернету, так как вы можете пинговать адреса, такие как 8.8.8.8. Между серверами 01 и 02 связь установлена, так как пинг проходит успешно. Однако сервер 02 не может выполнить запросы к интернету. Проблема, скорее всего, связана с настройками маршрутизации и NAT.
2. Включение пересылки пакетов
Проверьте, включена ли пересылка пакетов на сервере 01. Для этого выполните следующую команду:
echo 1 > /proc/sys/net/ipv4/ip_forward
Чтобы сделать это изменение постоянным после перезагрузки, вам нужно отредактировать файл /etc/sysctl.conf
и убедиться, что строка net.ipv4.ip_forward = 1
не закомментирована. После внесения изменений выполните команду:
sysctl -p
3. Настройка NAT
Убедитесь, что NAT правильно настроен на сервере 01. Для этого вам нужно использовать iptables
. Выполните следующие команды:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
В этих командах:
eth0
должен быть интерфейсом, подключенным к интернету.eth1
должен быть интерфейсом, подключенным к вашему частному сетевому сегменту с сервером 02.
Чтобы сохранить правила iptables
, используйте команду:
service iptables save
4. Проверка конфигурации фаервола
Проверьте настройки фаервола с помощью команды:
sudo firewall-cmd --list-all
Убедитесь, что в правилах фаервола включено masquerade
и добавьте правила для разрешения трафика от сети 192.168.110.0/24. Пример команды:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.110.0/24" accept'
firewall-cmd --reload
5. Проверка конфигурации сервера 02
Убедитесь, что маршруты на сервере 02 настроены корректно. Проверьте, что маршрут по умолчанию указывает на шлюз сервера 01 (192.168.110.254). Если маршруты настроены правильно, выполните команды:
ip route
ping 192.168.100.100
Убедитесь, что ваш сервер 02 использует правильный шлюз для доступа в интернет.
6. Тестирование выхода в интернет
Теперь попробуйте выполнить запрос на публичный IP-адрес с сервера 02:
ping 8.8.8.8
Если пинг проходит успешно, то NAT-шлюз сконфигурирован правильно и сервер 02 теперь может выходить в интернет.
Заключение
Если все шаги были выполнены корректно, и проблема сохраняется, проверьте дополнительные настройки, такие как маршрутизация на вашем внешнем маршрутизаторе или интернет-шлюзе. Настройка NAT может потребовать дополнительной диагностики в зависимости от инфраструктуры вашей сети.