У меня есть трафик http и https, поступающий с нескольких машин на мой eth0 на моем компьютере с Linux, но я хочу перенаправить этот трафик на eth1, у которого есть доступ к Интернету. И выполните дополнительную операцию: трафик, исходящий от 80 и 443, будет перенаправлен с eth1 на eth0, чтобы он достиг машин, которые создали веб-запросы.
Я пробовал следующие команды iptables, но это не помогло:
iptables -A FORWARD -p tcp --dport 80 -o eth1 -j ACCEPT
iptables -A FORWARD -p tcp --sport 80 -o eth0 -j ACCEPT
Я не знаю, как это сделать.
=====================
Выход ip addr show
$ /sbin/ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether <mac_address_of_eth0> brd ff:ff:ff:ff:ff:ff
inet 10.10.12.131/24 brd 10.10.12.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether <mac_address_of_eth1> brd ff:ff:ff:ff:ff:ff
inet 172.16.1.1/24 brd 172.16.1.255 scope global eth1
Во-первых, это очень похожий на пересылка iptables между двумя интерфейсами.
При этом вы хотите, чтобы ваш хост стал шлюзом, но более конкретно, только для протоколов. HTTP
и HTTPS
(80/443). Для этого вам следует:
iptables
(netfilter
) это stateless packet filtering system
, принять пакеты, которые возвращаютсяВ переводе на iptables:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED \
-j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
При условии, что другие хосты в вашей сети используют ваш хост для выхода в Интернет (это означает, что ваш Linux-сервер работает как шлюз).
Предполагая, что у eth1 есть общедоступный интернет-адрес, похоже, вы хотите, чтобы ваш Linux-сервер стал маршрутизатором, возможно, с функцией NAT / Masquerade. Видеть http://www.howtoforge.com/internet-connection-sharing-masquerading-on-linux для одного из многих примеров.
IPtables, который вы дали просто позволять HTTP-трафик, который должен быть перенаправлен через ваш Linux-сервер, если он прибудет, но вам нужно будет убедиться, что ваши клиенты используют ваш Linux-сервер в качестве шлюза, чтобы это произошло.