目标:配置从虚拟机到 PC 和互联网的流量路由。在 CentOS7 上配置从 wlan0 到 eth0 的流量转发,反之亦然。
我的拓扑:
VM - (有线) --- eth0=RPI=wlan0 -(无线)- 路由器 -- ISP | (无线的) 个人电脑
- 我使用这篇文章配置了从eth0到wlan0的流量转发:https://gist.github.com/tzermias/5408466
- wlan0 已使用 nmtui 配置。
正在发出的命令:
sudo ifconfig eth0 192.168.56.1 netmask 255.255.255.0
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -A FORWARD --in-interface eth0 -j ACCEPT
sudo iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE
现在,我检查了网络脚本文件夹:
[pi@rtr001 network-scripts]$ ls
ifcfg-FunBox-84A8 ifdown-ppp ifup-ippp ifup-TeamPort
ifcfg-link ifdown-routes ifup-ipv6 ifup-tunnel
ifcfg-lo ifdown-sit ifup-isdn ifup-wireless
ifdown ifdown-Team ifup-plip init.ipv6-global
ifdown-bnep ifdown-TeamPort ifup-plusb keys-FunBox-84A8
ifdown-eth ifdown-tunnel ifup-post network-functions
ifdown-ippp ifup ifup-ppp network-functions-ipv6
ifdown-ipv6 ifup-aliases ifup-routes
ifdown-isdn ifup-bnep ifup-sit
ifdown-post ifup-eth ifup-Team
注意到,ifcfg-eth0
那里不存在,甚至,下面的输出ifconfig
显示地址已分配,并且我能够对插入以太网端口的设备执行 ping 操作,IP 为 10.10.10.2:
[pi@rtr001 network-scripts]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.10.10.1 netmask 255.255.255.0 broadcast 10.10.10.255
ether b8:27:eb:d7:d7:9a txqueuelen 1000 (Ethernet)
RX packets 3 bytes 214 (214.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 50 bytes 8296 (8.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 32 bytes 2592 (2.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 32 bytes 2592 (2.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.26 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::47ae:281a:680f:11eb prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:82:82:cf txqueuelen 1000 (Ethernet)
RX packets 649 bytes 42528 (41.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 492 bytes 69881 (68.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
此外,IP 为 10.10.10.2 的虚拟机能够 ping 通 10.10.10.1,但无法 ping 通 192.168.1.22(位于 RPI - 路由器之间的子网 192.168.XX 中的任何 IP)。
问题:
sudo ifconfig eth0 10.10.10.1 netmask 255.255.255.0
在 Linux 中修改文件有什么作用?换句话说,根据 的输出ifconfig
,看起来 的地址eth0
已被分配,但是,没有具体的ifcfg-eth0
存在。- 如何让eth0的配置在重启后出现?
- 我应该在 RPI 中修改什么,以便能够从虚拟机 192.168.XX 子网 ping 通?
- 如何查看 NAT ip 表,我应该运行哪个命令?看起来,
iptables -L
没有显示 NAT 规则...
答案1
该命令sudo ifconfig...
不会对文件进行任何更改。它会更改,直到下次重新启动或下一次ifconfig
IP、网络掩码等值。
要进行持久更改,请创建文件ifcfg-eth0
并在其中输入信息(类似)。
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
NETWORK=192.168.56.0
NETMASK=255.255.255.0
IPADDR=192.168.56.1
USERCTL=no