Как заставить внутреннюю часть сети правильно видеть сервер? Внутри сети foobar.net не резолвится

Это изменит IP-адрес, связанный с хостом c, на 1.2.3.4:

.
$ sed 's/^ip/\nip/' file | perl -00pe 'if(/\nhost=c\n/){s/ip=\S+/ip=1.2.3.4/} s/\n\n/\n/' 
ip=x.x.x.a
mask=255.0.0.0
host=a
ip=x.x.x.b
mask=255.0.0.0
host=b
ip=1.2.3.4
mask=255.0.0.0
host=c
ip=x.x.x.x
blahblah
mask=255.0.0.0
host=d

Пояснение:

  • sed 's/^ip/\nip/' file:добавьте дополнительную новую строку(\n)к каждой строке, начинающейся с ip. Я думаю, что это может работать не со всеми реализациями sed, поэтому, если ваша не поддерживает это, замените команду sedна perl -pe 's/^ip/\nip/'. Это нужно для того, чтобы использовать «режим абзаца» Perl (, показанный ниже ).

  • perl -00pe:-00заставляет Perl работать в «режиме абзаца», где «строка» определяется двумя последовательными символами новой строки. Это позволяет нам рассматривать каждый блок хоста как одну «линию». -peозначает «печатать каждую строку после применения к ней сценария, заданного -e».

  • if(/\nhost=c\n/){s/ip=\S+/ip=1.2.3.4/}:если эта «строка» (раздел )соответствует новой строке, за которой следует строка host=c, а затем еще одна новая строка, то замените ip=и 1 или более не -пробельных символов(\S+)после нее с ip=1.2.3.4.

  • s/\n\n/\n/замените каждую пару новых строк одной новой строкой, чтобы вернуть исходный формат файла.

Если вы хотите изменить файл на месте, вы можете использовать:

tmp=$(mktemp); sed 's/^ip/\nip/' file > $tmp; 
perl -00pe 'if(/\nhost=c\n/){s/ip=\S+/ip=1.2.3.4/} s/\n\n/\n/' $tmp > file
0
28.02.2021, 22:29
1 ответ
  1. Если ваш маршрутизатор позволяет настраивать внутренние записи DNS, используйте эту опцию
  2. Если ваш маршрутизатор поддерживает шпильку NAT , вы сможете просто сослаться на foobar.net. Это приведет к внешнему IP-адресу, который ваш маршрутизатор может затем сопоставить с внутренним сервером
  3. .
  4. В противном случае вам потребуется настроить внутренний DNS-сервер, чтобы ваши внутренние устройства использовали его для разрешения имен. Это потребует некоторой поддержки со стороны вашего маршрутизатора, так что, когда он раздает IP-адреса через DHCP, он добровольно заявляет, что DNS-сервер находится «там →», а не является DNS-сервером по умолчанию
  5. .
  6. Если ничего не помогает, получите другой маршрутизатор или устройство, поддерживающее маршрутизацию (, например. DDWRT или другую систему на базе Linux -)и либо полностью замените маршрутизатор, предоставленный вашим провайдером -, либо поместите этот дополнительный маршрутизатор между маршрутизатором, предоставленным провайдером -, и остальной частью вашей сети. (Сюда входит отключение или отказ от использования WiFi на маршрутизаторе -, предоставленном поставщиком услуг Интернета. )Настройте элементы #1 или #3 на этом лучшем маршрутизаторе и оставьте устройство, предоставленное провайдером -, просто в качестве тупой конечной точки
0
18.03.2021, 22:28

Теги

Похожие вопросы