Я новичок в CentOS. У меня есть система CentOS 6.4 с двумя сетевыми картами. Я хочу настроить шлюз, чтобы получить доступ в Интернет с общедоступного IP-адреса через 1-ю карту NIC (eth1) и перенаправить сеть по 2-й карте NIC (eth2), чтобы она была доступна в моей локальной сети. Я сделал DNS-сервер в той же системе. Моя система шлюза может подключаться как к DNS, так и к Google, но мои клиентские системы - нет.
Я попытался установить правила iptables, он работает ping к локальному шлюзу, но не может ping к общедоступному DNS и www.google.com из клиентской системы .. когда я ping на google.com сказал, что хост недоступен.
Как я могу это реализовать, пожалуйста, помогите мне?
Я использовал это для настройки iptables:
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth2 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
Таблица маршрутизации:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
local ip 0.0.0.0 255.255.255.0 U 0 0 0 eth2
public ip 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 my local gateway 0.0.0.0 UG 0 0 0 eth2
Iptables:
Chain PREROUTING (policy ACCEPT 9761 packets, 1239K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 14666 packets, 1001K bytes)
pkts bytes target prot opt in out source destination
345 41722 MASQUERADE all -- * Auto_eth1 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 15011 packets, 1043K bytes)
pkts bytes target prot opt in out source destination
Скажите, пожалуйста, какие изменения мне нужно сделать в конфигурации.
Не изобретайте велосипед. Откажитесь от попыток свернуть его вручную и используйте какой-нибудь прибор, например pfSense который с этим справляется очень хорошо.
Да, это возможно, но если вы не знакомы с тем, как все это работает, не стоит тратить время и пытаться собрать это вручную.
ip route del default
ip route add default via INTERNETGATEWAY dev eth2
Что-то не так с вашим маршрутом. Блок centos 'NAT' должен сидеть на двух сетях:
192.168.5.x/24 (Private eth2)
192.168.6.x/24 (Public eth1) -- hypothetically
ваш маршрут должен быть примерно таким:
ip route add route 192.168.5.0/24 dev eth2
ip route add route 192.168.6.0/24 dev eth1
ip route add default via 192.168.6.1 dev eth1
Прямо сейчас вы маршрутизируете связанный интернет-трафик со своей частной сетевой карты ...
Для настройки PBR (Policy Base Routing) вы можете использовать следующий скрипт
#!/bin/sh
IF1='eth1'
IP1='xxx.xxx.xxx.xxx'
GW1='xxx.xxx.xxx.254'
P1_NET='xxx.xxx.xxx.xxx/30'
IF2='eth2'
IP2='yyy.yyy.yyy.yyy'
GW2='yyy.yyy.yyy.254'
P2_NET='yyy.yyy.yyy.yyy/30'
/sbin/ip route add $P1_NET dev $IF1 src $IP1 table ISP1
/sbin/ip route add default via $GW1 table ISP1
/sbin/ip route add $P2_NET dev $IF2 src $IP2 table ISP2
/sbin/ip route add default via $GW2 table ISP2
/sbin/ip rule add from $IP1 table ISP1
/sbin/ip rule add from $IP2 table ISP2
/sbin/ip route add default via $GW1
/sbin/ip route flush cache
Примечание: перед запуском скрипта необходимо создать таблицы ISP1 / ISP2
# echo "10 ISP1" >> /etc/iproute2/rt_tables
# echo "20 ISP2" >> /etc/iproute2/rt_tables
Отметьте необходимые пакеты
# iptables -t mangle -I PREROUTING -s 192.168.1.1 -m conntrack --ctorigdst xxx.xxx.xxx.xxx -j MARK --set-mark 0x1
# iptables -t mangle -I PREROUTING -s 192.168.1.1 -m conntrack --ctorigdst yyy.yyy.yyy.yyy -j MARK --set-mark 0x2
Настройка собственных маршрутов для каждого провайдера
# ip ru add fwmark 0x1 lookup ISP1 prio 1000
# ip ru add fwmark 0x2 lookup ISP2 prio 2000
где xxx.xxx.xxx.xxx и yyy.yyy.yyy.yyy ваши публичные IP-адреса
Отключить фильтр обратного пути
# echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter