我有一台Ubuntu机器,是我的防火墙
本机有2个NIC卡。 eth0和eth1。 eth1连接到一个调制解调器,使其IP 10.10.1.X
要求eth1在192.168.2.X上提供DHCP,并从连接到在192.168.1.X上提供DHCP的路由器的交换机获得另一个IP
目前这台机器有以下的IP地址
eth0 - 10.10.0.4 eth1 - 192.168.2.1 (DHCP Server, Gateway) eth1:0 - 102.168.1.103
我正在尝试完成以下内容
如果一台机器通过交换机连接到eth1,它应该能ping通192.168.1.10这个
[Modem+Router 10.1.1.0/24] | | | (eth0) |----- [ Server 192.168.1.10] Ubuntu | Firewall (eth1) ----- [Switch]-----[Modem+Router 192.168.1.0/24] (eth1:0)--------| \ \ \--------[EndPoint 192.168.2.4]
我的根本问题在于,我收到了来自2.4的发往互联网的数据包,并且能够使用IpTable正确地路由它们。 而如果一个数据包到达1.10,我应该把它发回给交换机并设置适当的选项。
我已经尝试了以下
bridge-utils桥接了eth1和eth1:0,然后在2.X想从10.10.0.1上网的任何人使用iptables转发 一般情况下,你的configuration应该是开箱即用的。 原则上路由是由Linux路由代码支持的,与Netfilter无关。 “iptables”是用于configuration内核Netfilter框架的用户空间实用程序,用于进行过滤和数据包修改(mangling和地址转换),但不执行任何路由。 所以说“我使用iptables路由”是不正确的。
桥接也是不同的东西,不应该在这里帮助你。 桥接别名接口可能应该形成一个循环,从而中断以太网段的networking。
两端都需要路由,例如在192.168.1.0/24网段的主机上ip route add 192.168.2.0/24 via 192.168.1.103在192.168.2.0/24网段的主机上设置192.168.2.1作为默认网关。
如果您在防火墙上紧紧设置了防火墙,则需要启用从eth1到eth1:1的stream量转发:
iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT iptables -A FORWARD -o eth1 -i eth1:0 -j ACCEPT
或者你可能只需要一个第一个规则,如果你已经使用iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT或-m state(obsolete)来configuration状态防火墙。
只有当你想伪装这个stream量时,才需要特殊的iptablesconfiguration,192.168.1.0/24中的主机不知道你是从192.168.2.0/24networking连接的。 那么在.1.0 / 24端不需要任何额外的路由,但需要NAT规则和转发启用规则:
iptables -t nat -A POSTROUTING -o eth1:1 -s 192.168.2.0/24 -o 192.168.1.0/24 -j SNAT --to-source 192.168.1.103 iptables -A FORWARD -i eth1 -o eth1:0 -j ACCEPT