Сетевые настройки · 7 min read · Oct 28, 2025
NAT Gateway, Iptables, Port Forwarding, DNS And DHCP Setup - Ubuntu 8.10 Server
NAT Gateway, Iptables, Port Forwarding, DNS And DHCP Setup - Ubuntu 8.10 Server
Итак, вы слишком бедны, чтобы позволить себе еще один дорогой маршрутизатор и хотите сделать все сами. Вы нашли правильный учебник! Этот учебник покажет вам, как настроить маршрутизатор Ubuntu 8.10 с NAT, переадресацией портов, DNS-сервером и DHCP-сервером.
Почему Ubuntu, вы спрашиваете?
Ubuntu не только отличная операционная система, но и очень гибкая и мощная, чтобы вы могли быстро начать работу! Примечание: Пожалуйста, перезагрузите компьютер после каждого шага. Это обеспечит правильную работу всего.
Некоторые из основных вещей, которые нам понадобятся…
DHCP – dhcp3-server
DNS – bind9
iptables – включен /w ubuntu
Первое, что нужно сделать
Вам понадобятся 2 сетевых карты. Возьмите свою первую сетевую карту и подключите к ней ваше WAN-соединение. Вы должны знать, какая это сетевая карта, eth0, eth1 и т.д. Если вы не знаете, что это, пробуйте на ощупь, мой друг.
Скажем так, что ваша WAN-карта будет eth0 ( если это eth1, просто сделайте все то же самое, но настройте конфигурацию соответственно). Мы хотим найти файл /etc/network/interfaces. Откройте файл с помощью VI, например
sudo vi /etc/network/interfacesВы должны увидеть в файле ( если у вас еще ничего не настроено):
# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации смотрите interfaces(5).
# Циклический сетевой интерфейс
auto lo
iface lo inet loopback
Мы собираемся добавить это в файл. Кстати, если вы не знаете, как использовать VI, используйте nano или изучите VI.
auto eth0
iface eth0 inet dhcp
Код auto eth0 говорит eth0 запускаться при загрузке, аналогично выполнению
sudo ifconfig eth0 upКод iface eth0 inet dhcp говорит интерфейсу eth0 искать DHCP-сервер и получать от него информацию. Это важно, если вы подключены к кабельному модему, так как вам нужно получить публичный IP от вашего провайдера.
Следующий шаг — настроить вашу сетевую карту eth1. Это будет ваша “LAN” карта.
Если вы помните, наша конфигурация /etc/network/interfaces выглядела так
# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации смотрите interfaces(5).
# Циклический сетевой интерфейс
auto lo
iface lo inet loopback
# Основной сетевой интерфейс
auto eth0
iface eth0 inet dhcpМы снова откроем файл interfaces с помощью VI и добавим несколько строк:
sudo vi /etc/network/interfacesДобавьте эти строки в конец файла.
auto eth1
iface eth1 inet static
address 172.17.207.121
netmask 255.255.255.0
broadcast 172.17.207.255
network 172.17.207.0
Это просто дает вам статический IP-адрес для вашего сервера на вашей LAN-карте.
Ваш файл теперь должен выглядеть так.
# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации смотрите interfaces(5).
# Циклический сетевой интерфейс
auto lo
iface lo inet loopback
# Основной сетевой интерфейс
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 172.17.207.121
netmask 255.255.255.0
broadcast 172.17.207.255
network 172.17.207.0
Теперь, прежде чем мы забудем, давайте отредактируем ваш файл /etc/hosts.
sudo vi /etc/hostsСделайте файл похожим на мой, хотя если вы назовете свой сервер userve или myserver, вы можете изменить его.
Также обратите внимание на доменное имя asus.local, лучше использовать свое, например mydomain.local, но вы можете использовать то, что у меня, для учебных целей.
Мы используем .local, потому что это легко запомнить и это не публично, поэтому мы не будем мешать ничему.
127.0.0.1 localhost server.localhost
172.17.207.121 server.asus.local server asus.localТеперь, когда мы настроили наши интерфейсы, мы собираемся установить и настроить DHCP-сервер. Чтобы установить DHCP-сервер, выполните команду
sudo apt-get install dhcp3-serverДавайте отредактируем файл dhcpd.conf. Начните с выполнения команды
sudo vi /etc/dhcp3/dhcpd.confТеперь, если в этом файле есть что-то, УДАЛИТЕ ЭТО.
Скопируйте и вставьте это в ваш файл, затем сохраните и выйдите.
ddns-update-style none;
option domain-name "whatever.local"; //измените это на что-то, что вы хотите .local, например mydomain.local
option domain-name-servers 172.17.207.121, 24.92.226.41; //вы также можете изменить второй DNS-сервер на локальный DNS-сервер вашего провайдера
option routers 172.17.207.121;
default-lease-time 42300;
max-lease-time 84600;
authoritative;
log-facility local7;
subnet 172.17.0.0 netmask 255.255.255.0 {
range 172.17.207.1 172.17.207.100; //вы можете расширить диапазон, просто изменив .100 на .254 или что-то подобное
}
Теперь выполните команду
sudo /etc/init.d/dhcp3-server startЭто запустит ваш DHCP-сервер, и мы можем считать эту часть ЗАВЕРШЕННОЙ.
Переходим к… DNS
Bind — это пакет DNS, который мы будем использовать. Чтобы установить его, просто выполните
sudo apt-get install bind9Это загрузит и установит наш сервер bind.
Начните с выполнения команды
vi /etc/bind/named.confЗатем удалите все в файле и посмотрите на мои комментарии, обычно обозначенные //.
// Это основной файл конфигурации для DNS-сервера BIND с именем. // Пожалуйста, прочитайте /usr/share/doc/bind9/README.Debian.gz для получения информации о // структуре файлов конфигурации BIND в Debian, *ПЕРЕД* тем, как настраивать // этот файл конфигурации. // Если вы просто добавляете зоны, пожалуйста, сделайте это в /etc/bind/named.conf.local include "/etc/bind/named.conf.options"; // первичный сервер с информацией о корневых серверах zone "." { type hint; file "/etc/bind/db.root"; }; // быть авторитетным для локальных и обратных зон, а также для // зон широковещательной рассылки в соответствии с RFC 1912 zone "asus.local" { //измените asus.local на то, как вы назвали свой домен, например mydomain.local type master; file "/etc/bind/zones/asus.local.db"; //этот файл или папка не существует, поэтому нам нужно будет создать его }; zone "207.17.172.in-addr.arpa" { type master; file "/etc/bind/zones/rev.207.17.172.in-addr.arpa";//этот файл не существует, поэтому нам также нужно будет создать его }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; include "/etc/bind/named.conf.local";
Прежде чем мы сможем создать два файла asus.local.db и rev.207.17.172.in-addr.arpa, нам нужно отредактировать другой файл. Итак,
sudo vi /etc/bind/named.conf.optionsУдалите все в файле и используйте это…
options {
directory "/var/cache/bind";
// Если между вами и серверами имен есть брандмауэр, с которым вы хотите
// общаться, вам, возможно, придется исправить брандмауэр, чтобы разрешить несколько
// портов для общения. Смотрите http://www.kb.cert.org/vuls/id/800113
// Если ваш провайдер предоставил один или несколько IP-адресов для стабильных
// серверов имен, вы, вероятно, захотите использовать их в качестве пересылателей.
// Раскомментируйте следующий блок и вставьте адреса, заменив
// заполнитель all-0's.
forwarders {
24.92.226.41; //очень важно, измените это на DNS-сервер(ы) вашего ЛОКАЛЬНОГО провайдера
24.92.224.40;
};
auth-nxdomain no; # соответствовать RFC1035
listen-on-v6 { any; };
};Обратите внимание на комментарии, они говорят вам ИЗМЕНИТЬ адрес(а) пересылателей на DNS вашего ЛОКАЛЬНОГО провайдера.
Далее, перейдите в вашу директорию bind:
cd /etc/bind/
sudo mkdir zones
cd zones
sudo vi asus.local.db
(Или используйте свое доменное имя, например mydomain.local.db.)
Как только вы находитесь в файле asus.local.db или mydomain.local.db (как вы его назвали), скопируйте и вставьте это, сделав соответствующие изменения в вашем доменном имени.
$ORIGIN .
$TTL 4000 ;
asus.local. IN SOA server.asus.local. admin.asus.local. (
2007031001 ; serial
28800 ; refresh
3600 ; retry
604800 ; expire
38400 ; min
)
NS server.asus.local.
$ORIGIN asus.local.
IN A 172.17.207.121
www IN A 172.17.207.121 //пример
server IN A 172.17.207.121 //пример
macpro IN A 172.17.207.4 //примерЕсли вы выполните nslookup macpro, вы получите 172.17.207.4 в ответ, поэтому измените доменные имена и IP-адреса в соответствии с вашими настройками.
Далее, мы собираемся отредактировать файл rev.207.17.172.in-addr.arpa, который еще не существует. Но он будет, как только мы его сохраним. Итак, предположим, что вы все еще находитесь в папке zones:
vi rev.207.17.172.in-addr.arpaСкопируйте и вставьте то, что у меня здесь, сделав соответствующие изменения.
$ORIGIN .
$TTL 28800 ; 8 часов
207.17.172.IN-ADDR.ARPA IN SOA server.asus.local. admin.asus.local. (
2008110601 ; serial
28800 ; refresh (8 часов)
7200 ; retry (2 часа)
604800 ; expire (1 неделя)
86400 ; minimum (1 день)
)
NS server.asus.local.
$ORIGIN 207.17.172.IN-ADDR.ARPA.
4 PTR macpro.asus.local.Теперь, если вы выполните обратный поиск по 172.17.207.4, вы получите macpro.asus.local.
Теперь выполните команду, чтобы запустить named:
sudo /etc/init.d/named startЕсли он не запускается, проверьте журналы в /var/logs.
Последнее, но не менее важное, IPTABLES
Первое, что нужно сделать, это отредактировать sysctl.conf в папке /etc/, так что:
sudo vi /etc/sysctl.confУберите комментарий с 28 строки. Это означает, что нужно удалить # перед ней. Строка должна быть net.ipv4.ip_forward=1
Далее, давайте откроем rc.local:
sudo vi /etc/rc.localДобавьте эти две строки в конец файла:
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADEЭто настроит ваш шлюз с помощью iptables. Вы можете использовать iptables, чтобы сделать это более безопасным, чем эта базовая настройка.
Чтобы перенаправить порты, вы можете добавить что-то подобное в конец файла rc.local.
/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d jgibbs.dyndns.org --dport 3389 -j DNAT --to 172.17.207.4:3389Длинная строка выше будет перенаправлять весь входящий трафик на порт 3389 к IP 172.17.207.4, чтобы я мог удаленно подключаться к своему Windows-компьютеру из-за пределов своей сети.
Вы можете сделать это с любыми портами, которые хотите.
ПЕРЕЗАГРУЗИТЕ!
Также сообщите о любых проблемах, и я обновлю этот учебник. Спасибо, Джереми, пользователь gibbsj.
Get new posts in your inbox
No spam. Unsubscribe anytime.