Халыққа Интернет керек (Ubuntu шлюз)

Виндоус анау, виндоус мынау деп жатудың қажеті жоқ шығар, қолымызда убунту орнатылған сервер, бір интерфейсіне (сетевая карта) провайдерден Интернет келіп тұрса, келесі интерфейсі офис желісіне қосылған. Жалпы дәл мынадай болады деп жазу мүмкін емес, себебі әр сервер өзіне жүктелген қызметке байланысты сәйкесінше бапталады. Біздің мысалда тек жалпылама баптау, одан әрі түрлендіру өз еріктеріңізде.
Сервердің eth0 интерфейсіне интернет келіп тұрсын, IP адресі x.x.x.x болсын,
eth1 интерфесі локалды желіге қосылған болсын, ip адресі 192.168.0.1, желіміз 192.168.0.0/24 болсын.

Алдымен бұрыннан бар ережелерді (правила дегенді осылай алдым) тазалаймыз

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD


INPUT, OUTPUT, FORWARD – пакеттер жүретін негізгі тізбектер, яғни кіру, шығу, интерфейстен интерфейске өту.
Бұдан соң әдеткі ережелерді көрсету керек, олар екеу ғана DROP, ACCEPT, яғни пакеттерді қабылдайды, не қабылдамайды.
Біз бәрін жауып, тек қана керек порттарды ғана ашамыз. Өзіміздің қашықтан жұмыс жасап отырғанымызды ескерсек, алдымен SSHты ашып алуымыз керек.
SSH әдеткі 22 портта жұмыс істеп тұр деп есептейміз.

iptables -t filter -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT


Енді әдеткі ережелерді жазамыз

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


Біртіндеп керек порттарды ашамыз:
SMTP, DNS, HTTP, POP3, HTTPS

iptables -t filter -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT


серверде жұмыс істеп тұрған сервистер порттарын /etc/services файлынан қарап алуға болады.
Бәрін (керегін) аштық, бірақ пошта мен ДНС істемей тұр. Себебі ДНС серверге запрос кез келген порттан кетеді де қашықтағы сервер жауабын сол портқа қайтарады. Ал біздің жағдайымызда ол порттар жабық. Ия ашып қояр едік қой, бірақ біз нақты қай портты пайдаланатынын білмейміз. Сондықтан былай істейміз:

iptables -t filter -A INPUT -p tcp -m tcp --sport 25 -j ACCEPT
iptables -t filter -A INPUT -p udp -m udp --sport 53 -j ACCEPT

loopback тұйықталған желісін (аударма менікі) ашамыз

iptables -A INPUT -i lo -j ACCEPT


Іштен орнатылған байланыстарды рұхсат етеміз

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i !eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT


Локалды желіден сыртқа қатынауды рұхсат етеміз:

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Енді ең маңызды қадам маскарадинг. Маскарадинг – шлюз арқылы өткен пакеттерді өңдеу тәсілі. Шлюз іштен сыртқа шыққан пакеттерді кейін жауап беру үшін белгілейді, нәтижесінде шлюз арқылы ішкі желідегі бірнеше машина сыртқы Интернет желісіне қатынай алады. Маскарадинг NATпен байланысты, адресті трансляциялаған кезде пакеттерді маскалайды, кейін маска арқылы жауабын тек қана сол адреске жолдайды.
Ол үшін интерфейстер арасында пакет алмасу үшін форвардингті қосып, адресті трансляциялаймыз:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE


Осымен интернет ашылды.
PS: Жоғарыда жазылғандарды скрипт ретінде бір файлға жазып, автоматты жүктелетін етуге болады.

  • +7
4 пікір
raimbek
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

осының орнына, тек
iptables -F

дей салу жеткілікті емес па? man бетті қарап отсам солай деп тұр.

iptables қарап отырмын, бірақ мына жерде не болғанын әлі де толық түсіне қойған жоқпын :)
raimbek
айтқандай, қызықты мақала үшін рақмет
tonukok
Декан ағамыз әлі бабында екен :)))
kilyzaman
Уффф таптым ау ақыры, маған керек дүниелер бір жерге шоғырланғанын білмептім…
Тек тіркелген қолданушылар ғана пікір қалдыра алады.