我想通过wlan0接口路由网页浏览 ,其余的通过eth1 。 你能帮我用iptables命令来达到这个目的吗? 以下是我的configuration。 谢谢 :)
编辑:这是关于桌面configuration不是一个Web服务器设置。 基本上我想用我的一个连接来浏览网页,另一个用来浏览网页。
使用ifconfig:
eth1 Link encap:Ethernet HWaddr 00:1d:09:59:80:70 inet addr:192.168.2.164 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::21d:9ff:fe59:8070/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:33 errors:0 dropped:0 overruns:0 frame:0 TX packets:41 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4771 (4.7 KB) TX bytes:7081 (7.0 KB) Interrupt:17 wlan0 Link encap:Ethernet HWaddr 00:1c:bf:90:8a:6d inet addr:192.168.1.70 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::21c:bfff:fe90:8a6d/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:77 errors:0 dropped:0 overruns:0 frame:0 TX packets:102 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14256 (14.2 KB) TX bytes:14764 (14.7 KB)
路线:
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.2.0 * 255.255.255.0 U 1 0 0 eth1 192.168.1.0 * 255.255.255.0 U 2 0 0 wlan0 link-local * 255.255.0.0 U 1000 0 0 wlan0 default adsl 0.0.0.0 UG 0 0 0 eth1
您无法使用iptables控制networking与其他types的stream量。 为什么不? 确定什么是或不是“networking”stream量的唯一方法是使用哪个端口。 Webstream量主要使用端口80的HTTP和443的HTTPS,我相信。
要将networkingstream量路由到特定的界面,您需要在高层次上进行操作。
您必须设置域名服务器(DNS),以便域名指向您的路由器IP地址,然后设置您的路由器端口转发端口80到wlan0地址是192.168.1.70。
您也可以configuration您的Web服务器,只专门监听wlan0接口,但在将所有Web端口正确路由到wlan0后,这可能不是必需的。
(我假设你必须有一个路由器,因为你给出的IP地址是以192.168开头的,所以它们是本地networking地址,不能在DNS服务器上使用或通过networking访问,这意味着你必须有一个路由器可见的互联网,然后转发端口到你想要的地方。)
此外,你说你想要“所有其他stream量”去eth1。 还有其他的stream量? 如果您参考电子邮件,则可以为这些端口设置端口转发以指向eth1接口。
实际上,你可以configuration端口转发给eth1发送“所有其他端口”。 但是,这被认为是非常不安全的,可以让黑客有机会进入你的服务器。 一般的做法是只将端口转发给您希望允许进入服务器的选定stream量。
有可能写iptables规则匹配的端口号,但这不会是我的build议,只是因为iptables规则是一件容易的事情弄错了。 Tkane可能指的是从他或她的局域网传出的网页请求,而不是传入访问面向公众的Web服务器 – 在这种情况下,代理服务器可能是答案。 根据我的经验,Squid是一个很好的包,可以用来强制执行可接受的使用策略。 如果你走的路线不要忘记实施Web代理自动检测去。 另一方面,如果这是为了向互联网上的外部用户提供服务,那么在我看来,创build非军事区将是正确的做法。 您可能仍然希望在Web服务器本身上编写一些简单的iptables规则来删除除端口80和443之外的stream量,但通过基于Web的pipe理界面阻止现成的路由器或防火墙上的不需要的stream量可能会更直接。
一些iptables的规则大致如下:
-A MY_OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT -A MY_OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
会阻止网页浏览请求离开你的linux服务器,但正如已经指出的,你需要知道如何驱动iptables,否则你冒险犯错。
在任何情况下,网页浏览请求都可能来自您的局域网上的客户端PC? 也许你正在使用Linux服务器作为路由器/网关,否则它将如何拦截来自客户端PC的stream量? 如果是的话,我真的会推荐使用现成的路由器。 例如,对于一个小型的networking,一个标准的Netgear设备将提供一个简单的基于networking的pipe理界面,通过这个界面你可以实现防火墙规则,而一个暴露在互联网上的Linux服务器没有健全的iptables专业知识真的是在寻求麻烦。
您需要使用带有防火墙标记的 策略路由来完成此操作,因为您要根据源IP地址和目标IP地址以外的路由进行路由。
首先,您需要设置一个单独的路由表,它将发送数据包wlan0。
echo 1 wlan0 >> /etc/iproute2/rt_tables ip route add 192.168.1.0/24 dev wlan0 table wlan0 ip route add default via 192.168.1.1 table wlan0
(第一个命令只需要运行一次。)
然后我们告诉路由引擎使用这个新的表格来标记“1”的数据包。
ip rule add fwmark 1 lookup wlan0
最后,我们使用iptables来标记我们感兴趣的数据包。
iptables --table mangle --append PREROUTING --protocol tcp --dport http --jump MARK --set-mark 1 iptables --table mangle --append PREROUTING --protocol tcp --dport https --jump MARK --set-mark 1