Назад | Перейти на главную страницу

Как настроить iptables для локального маршрутизатора?

Я настроил локальный компьютер с Linux (14.0.4 Ubuntu) в качестве маршрутизатора и могу делать следующее:

Но не могу пинговать гугл или 8.8.8.8. Я получаю следующие ошибки:

ping: unknown host www.google.com
connect: network is unreachable

Но я жестяная банка выполнить обе эти команды на сервере / маршрутизаторе без проблем, что заставляет меня думать, что это iptables связанный вопрос. Может ли кто-нибудь взглянуть на приведенный ниже код, который я использую для инициализации iptables, и сказать мне, есть ли какие-либо явные ошибки.

#!/bin/bash

ethInternal=eth1
ethExternal=eth0

sudo iptables --flush 
sudo iptables --table nat --flush
sudo iptables --delete-chain 
sudo iptables --table nat --delete-chain 

sudo iptables -t nat -A POSTROUTING -o $ethExternal -j MASQUERADE
sudo iptables -A FORWARD -i $ethExternal -o $ethInternal -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ethInternal -o $ethExternal -j ACCEPT

ИЗМЕНИТЬ 1

client: netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.66.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

РЕДАКТИРОВАТЬ 2

client: route add -net default gw 192.168.66.254
client: netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.66.254  0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.66.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

РЕДАКТИРОВАТЬ 3

SV-01: vi /var/log/kern.log

Соответствующий раздел файла журнала можно найти Вот.

У клиента нет маршрута по умолчанию через ваш маршрутизатор. Пытаться

route add -net default gw a.b.c.d

на клиенте, где a.b.c.d это клиентский адрес брандмауэра.

Ну, ваша конфигурация кажется коротковатой. Прилагаю конфигурацию своего роутера в качестве рабочего примера.

Кроме того, вы используете «-m state» для отслеживания связанных и установленных соединений, в то время как я обычно использую «-m conntrack».

Что вы можете попробовать - зарегистрировать отброшенные пакеты и посмотреть, что и почему сбрасывает iptables. Я пишу свою конфигурацию (с ведением журнала, а также включая политику ACCEPT по умолчанию для цепочки OUTPUT) ниже. Чтобы включить его, сохраните его в файл (например, «iptables_test_rules.txt») и примените их, используя «iptables-restore iptables_test_rules.txt». См. 'Iptables -L -v' для обзора правил и вашего системного журнала для разорванных соединений (внимание: ваш системный журнал может расти очень быстро!).

*filter

# 1. Logging.
# 1.1. logdrop chain
-N logdrop                                                                   
-A logdrop -j LOG --log-prefix "dropped: "
-A logdrop -j DROP

# 2. Set default policies for INPUT, OUTPUT and FORWARD chains
-P INPUT DROP
-P OUTPUT ACCEPT
-P FORWARD DROP

# 3. INPUT CHAIN
# 3.0. Allow loopback
-A INPUT -i lo -j ACCEPT
# 3.1. Allow already established connections
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
# 3.2. log and drop invalid packets
-A INPUT -m conntrack --ctstate INVALID -j logdrop
# 3.3. Allow DHCP renew on eth0
-A INPUT -p udp -m udp --dport 68 -i eth0 -j ACCEPT
# 3.4. Allow any connections from lan
-A INPUT -i eth1 -j ACCEPT
# 3.5. Log and drop the rest
-A INPUT -j logdrop

# 4. Forwarding
# 4.0. Allow forwarding from lan to wan
-A FORWARD -i eth1 -o eth0 -j ACCEPT
# 4.1. Allow forwarding from lan to lan
-A FORWARD -i eth1 -o eth1 -j ACCEPT
# 4.2. Allow forwarding from wan to lan, but only for already established connections
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# 4.4. log and drop the rest in FORWARD chain
-A FORWARD -j logdrop

COMMIT

*nat

# Set default NAT policies to accept
-P PREROUTING ACCEPT                                           
-P POSTROUTING ACCEPT
-P OUTPUT ACCEPT

# 5. NAT
# 5.1. Enable NAT                                                                    
-A POSTROUTING -o eth0 -j MASQUERADE

COMMIT

*raw
COMMIT