在树莓派快速起步arrow-up-right 的安装案例中,树莓派通过网线和笔记本网口直接连接,即将自己的笔记本视为一个路由器,提供NAT masquerade,提供给树莓派访问外网。
不过,随着Fedora / CentOS 7的发展,已经采用firewalld来替代早期的iptables工具管理防火墙。本文设置即为一个简单的路由、地址转换、端口转发案例。
笔记本(ipa)地址: 192.168.0.1 (连接树莓派的有线网卡)/ 192.168.1.5(无线网卡)
树莓派 (pi) 地址: 192.168.0.10
路由器服务器(ipa)网络接口
笔记本ipa主机有两个物理接口enp0s20u1(有线网卡连接树莓派)和wlp3s0(无线网卡连接AP局域网)
Copy DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
enp0s20u1 ethernet connected Wired connection 1
tun0 tun connected tun0
wlp3s0 wifi connected mylink
lo loopback unmanaged --
virbr0-nic tun unmanaged -- 在这里wlp3s0作为public网络,连接的网段是192.168.1.0/24;而enp0s20u1则连接作为DMZ网络,网段192.168.0.0/24。
Copy 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic wlp3s0
valid_lft 80648sec preferred_lft 80648sec
3: enp0s20u1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet 192.168.0.1/24 brd 192.168.0.255 scope global enp0s20u1
valid_lft forever preferred_lft forever 最后一条是kvm的libvirt网络
当前Fedora已经默认关闭了iptables相关服务
Firewalld默认区域Zone
默认情况下连个网络接口都会被加入public zone:
输出
输出
设置默认firewall zone是public,然后将网卡enp0s20u1从public区域删除,并加入到dmz区域:
以下是操作记录:
在firewall-cmd --remove-interface=enp0s20u1 --zone=public有一个报错:
这个问题之前使用firewall-cmd --modify-interface=enp0s20u1 --zone=dmz也遇到过,不过,很奇怪依然生效,只是更奇怪的是,两个网卡同时被移动到dmz区域。重启操作系统后,似乎正确了。参考 NetworkManager and firewalld - Zone is lost on network restartarrow-up-right 有一个建议是在接口配置文件中加上NM_CONTROLLED=no以关闭NM的管理。但是这个方法我测试不行,会导致systemctl restart network无法完成,并且在Xfce的桌面使用了Network Manager Agent。
不过,继续使用--add-interface则可以显示成功
显示
此时重新加载firewalld
并检查zone情况:
输出显示网络接口已经分布在两个zone
确保在网络脚本中正确设置了zone
这里执行
这是因为在Network Manager中命名不同:用nmcli d可以显示,所以需要修改命令
执行修改过的命令:
此时检查/etc/sysconfig/network-scripts目录下的ifcfg-mylink配置文件可以看到增加了一行:
而ifcfg-Wired_connection_1增加了一行:
以下是一个在dmz创建iSCSI target服务的方法,是从SSH模板复制firewalld service配置来实现的:
编辑/etc/firewalld/services/iscsi-target.xml如下:
这个新配置的firewalld服务通过如下命令添加到dmz区域:
而常规服务则可以直接添加,例如:
最后可以检查所有添加到dmz的服务
也可以检查public区域:
所谓的zone区域服务,实际上就是类似iptables的INPUT链接上开启了允许的端口。
为了能够实现路由,ipa路由器需要从一个接口到另外一个接口启用数据包转发:
创建/etc/sysctl.d/ip_forward.conf添加如下配置行:
以上配置可以在服务器重启时生效,但是为了能够直接生效,执行以下命令:
这个宽泛的masquerade没有成功
这样就允许所有接口从public外出,如果要更加精准的masquerade,则使用:
使用精确的网段masquerade则成功添加。
要实现CentOS 7/Fedora作为路由器来NAT masquerade提供内部网络主机访问因特网,需要以下步骤:
在内部网卡上(dmz或者home)设置--add-service开启允许访问的网路服务
在外部网卡上(public)启用masquerade
设置内核net.ipv4.ip_forward=1
Routing with Direct Rules
待续