在这个配置上斗争太久了。
假设一个公共 IP: 1xx.24.184.yy/32
假设一个私有网络: 10.184.yy.0/28
gw10.184.yy.3
现在我想通过网关路由我的公共 IP
什么是好的配置?
ip addr
和ip route
答案1
您可以将公共 IP 地址分配给lo
接口,或者最好dummy
为该地址创建接口。此外,您的设置需要在网关和后续路径上进行路由配置才能使用公共 IP。
虚拟接口配置:
- 加载内核模块,但不创建默认虚拟接口。您可以将内核模块选项写入
/etc/modprobe.d/dummy.conf
。
modprobe dummy numdummies=0
- 创建虚拟接口
ip link add name dummy0 type dummy
- 将公网 IP 地址分配给虚拟接口
ip address add 1xx.24.184.yy/32 dev dummy0
- 启用接口
ip link set dev dummy0 up
- 使用公网ip作为默认源地址,此步骤可选,可以通过将应用绑定到公网ip来使用。
ip route replace default via 10.184.yy.3 src 1xx.24.184.yy
阅读你的 Linux 发行版的文档以使配置永久生效。否则重启后设置将会丢失。
- Debian 持久配置(文件
/etc/network/interfaces
):
auto dummy0
iface dummy0 inet static
pre-up modprobe dummy numdummies=0
pre-up ip link add name dummy0 type dummy
post-down ip link del dev dummy0
address 1xx.24.184.yy
netmask 255.255.255.255
环回接口配置
- 将公共 IP 指定为环回接口上的附加地址:
ip address add 1xx.24.184.yy/32 dev lo
- 设置路由(与上一节完全相同)
ip route replace default via 10.184.yy.3 src 1xx.24.184.yy
- Debian 持久配置(文件
/etc/network/interfaces
):
auto lo
iface lo inet loopback
post-up ip address add 100.24.184.10/32 dev lo