所以我有一台有 4 个接口的 linux 机器:
- enp1s0
- enp2s0
- enp3s0
- enp4s0
我要做的是让 enp1s0 成为 WAN 接口,并通过 DHCP 获取它的 IP 地址、dns 和网关。
对于其他三个接口,我希望它们具有:
- 同一子网上的 IP 地址
- 让一个 LAN 接口上的所有主机能够看到另一个 LAN 接口上的所有其他主机
- 将shorewall作为防火墙运行
- 使用 DNS 掩码
这是我到目前为止所得到的:
猫 /etc/网络/接口 # 此文件描述系统上可用的网络接口 # 以及如何激活它们。有关详细信息,请参阅接口 (5)。 源 /etc/network/interfaces.d/* # 环回网络接口 自动lo iface lo inet 环回 # 主网络接口 #列为#1 # 这是wan接口 自动 enp1s0 iface enp1s0 inet dhcp #列为#2 # 这个路由到楼上 自动 enp3s0 iface enp3s0 inet 静态 地址 192.168.47.254 网络掩码 255.255.255.0 网络 192.168.47.0 广播 192.168.47.255 #列为#4 自动 enp2s0 iface enp2s0 inet 静态 地址 192.168.47.253 网络掩码 255.255.255.0 网络 192.168.47.0 广播 192.168.47.255 #列为#3 自动 enp4s0 iface enp4s0 inet 静态 地址 192.168.47.252 网络掩码 255.255.255.0 网络 192.168.47.0 广播 192.168.47.255
猫 /etc/dnsmasq.conf 接口=enp2s0 接口=enp3s0 接口=enp4s0 listen-address=192.168.47.254 # 明确指定要监听的地址 bind-interfaces # 绑定到接口以确保我们不会将东西发送到其他地方 server=8.8.8.8 # 将 DNS 请求转发到 Google DNS domain-needed # 不要转发短名称 bogus-priv # 从不转发非路由地址空间中的地址。 dhcp-range=192.168.47.100,192.168.47.250,12h # 分配 192.168.46.100-250 之间的 IP 地址,租用时间为 12 小时 日志-dhcp 日志查询
interface=enp2s0 # 使用接口 wlan0 interface=enp3s0 # 使用接口 wlan0 interface=enp4s0 # 使用接口 wlan0 listen-address=192.168.47.254 # 明确指定要监听的地址 bind-interfaces # 绑定到接口以确保我们不会将东西发送到其他地方 server=8.8.8.8 # 将 DNS 请求转发到 Google DNS domain-needed # 不要转发短名称 bogus-priv # 从不转发非路由地址空间中的地址。 dhcp-range=192.168.47.100,192.168.47.250,12h # 分配 192.168.46.100-250 之间的 IP 地址,租用时间为 12 小时 日志-dhcp 日志查询
这是来自其中一台客户端机器的示例 ip 路由表:
ip -one 地址 1: lo inet 127.0.0.1/8 范围主机 lo\ valid_lft forever preferred_lft forever 1: lo inet6 ::1/128 范围主机\valid_lft 永远首选_lft 2:eth0 inet 192.168.46.5/24 brd 192.168.46.255 范围全局 eth0\valid_lft 永远 Preferred_lft 2: eth0 inet6 fe80::82ee:73ff:fe5d:89d1/64 范围链接\valid_lft forever preferred_lft forever 3: eth1 inet 192.168.47.244/24 brd 192.168.47.255 范围全局 eth1\ valid_lft 永远首选_lft 永远 3: eth1 inet6 fe80::82ee:73ff:fe5d:89d0/64 范围链接\valid_lft 永远首选_lft 永远
路线-n 内核IP路由表 目标网关 Genmask 标志 Metric Ref Use Iface 0.0.0.0 192.168.46.1 0.0.0.0 UG 0 0 0 eth0 192.168.46.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0 192.168.47.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
到目前为止有效的方法:
- 不同接口上的机器获得正确的 IP 地址
- 机器可以ping通路由器上的所有接口,也可以不通。我认为这可能取决于最近使用 DHCP 的哪台机器
- 如果我可以从客户端机器 ping 通,其他的东西也可以工作,例如 ssh
- 我从来没有让两台客户端机器互相ping通
经过大量阅读,我确定我需要静态路由、每个 LAN 接口的不同子网或桥接。
理想情况下,我想根据接口在shorewall中设置权限,并且仍然为所有LAN接口使用一个子网。