mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 01:00:29 +08:00
otgnet: apply net.ipv4.ip_forward=1 on forwarding
This commit is contained in:
parent
91312dd4be
commit
0d8b7fd3aa
2
PKGBUILD
2
PKGBUILD
@ -123,7 +123,7 @@ depends=(
|
|||||||
# fsck for /boot
|
# fsck for /boot
|
||||||
dosfstools
|
dosfstools
|
||||||
|
|
||||||
# pgrep for kvmd-udev-restart-pass
|
# pgrep for kvmd-udev-restart-pass, sysctl for kvmd-otgnet
|
||||||
procps-ng
|
procps-ng
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
|
|||||||
@ -687,6 +687,7 @@ def _get_config_scheme() -> dict:
|
|||||||
"commands": {
|
"commands": {
|
||||||
"ip_cmd": Option(["/usr/bin/ip"], type=valid_command),
|
"ip_cmd": Option(["/usr/bin/ip"], type=valid_command),
|
||||||
"iptables_cmd": Option(["/usr/sbin/iptables", "--wait=5"], type=valid_command),
|
"iptables_cmd": Option(["/usr/sbin/iptables", "--wait=5"], type=valid_command),
|
||||||
|
"sysctl_cmd": Option(["/usr/sbin/sysctl"], type=valid_command),
|
||||||
|
|
||||||
"pre_start_cmd": Option(["/bin/true", "pre-start"], type=valid_command),
|
"pre_start_cmd": Option(["/bin/true", "pre-start"], type=valid_command),
|
||||||
"pre_start_cmd_remove": Option([], type=valid_options),
|
"pre_start_cmd_remove": Option([], type=valid_options),
|
||||||
|
|||||||
@ -45,6 +45,7 @@ from .netctl import IptablesAllowIcmpCtl
|
|||||||
from .netctl import IptablesAllowPortCtl
|
from .netctl import IptablesAllowPortCtl
|
||||||
from .netctl import IptablesForwardOut
|
from .netctl import IptablesForwardOut
|
||||||
from .netctl import IptablesForwardIn
|
from .netctl import IptablesForwardIn
|
||||||
|
from .netctl import SysctlIpv4ForwardCtl
|
||||||
from .netctl import CustomCtl
|
from .netctl import CustomCtl
|
||||||
|
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ class _Service: # pylint: disable=too-many-instance-attributes
|
|||||||
def __init__(self, config: Section) -> None:
|
def __init__(self, config: Section) -> None:
|
||||||
self.__ip_cmd: list[str] = config.otgnet.commands.ip_cmd
|
self.__ip_cmd: list[str] = config.otgnet.commands.ip_cmd
|
||||||
self.__iptables_cmd: list[str] = config.otgnet.commands.iptables_cmd
|
self.__iptables_cmd: list[str] = config.otgnet.commands.iptables_cmd
|
||||||
|
self.__sysctl_cmd: list[str] = config.otgnet.commands.sysctl_cmd
|
||||||
|
|
||||||
self.__iface_net: str = config.otgnet.iface.net
|
self.__iface_net: str = config.otgnet.iface.net
|
||||||
|
|
||||||
@ -116,6 +118,7 @@ class _Service: # pylint: disable=too-many-instance-attributes
|
|||||||
*([IptablesForwardIn(self.__iptables_cmd, netcfg.iface)] if self.__forward_iface else []),
|
*([IptablesForwardIn(self.__iptables_cmd, netcfg.iface)] if self.__forward_iface else []),
|
||||||
IptablesDropAllCtl(self.__iptables_cmd, netcfg.iface),
|
IptablesDropAllCtl(self.__iptables_cmd, netcfg.iface),
|
||||||
IfaceAddIpCtl(self.__ip_cmd, netcfg.iface, f"{netcfg.iface_ip}/{netcfg.net_prefix}"),
|
IfaceAddIpCtl(self.__ip_cmd, netcfg.iface, f"{netcfg.iface_ip}/{netcfg.net_prefix}"),
|
||||||
|
*([SysctlIpv4ForwardCtl(self.__sysctl_cmd)] if self.__forward_iface else []),
|
||||||
CustomCtl(self.__post_start_cmd, self.__pre_stop_cmd, placeholders),
|
CustomCtl(self.__post_start_cmd, self.__pre_stop_cmd, placeholders),
|
||||||
]
|
]
|
||||||
if direct:
|
if direct:
|
||||||
@ -131,6 +134,8 @@ class _Service: # pylint: disable=too-many-instance-attributes
|
|||||||
async def __run_ctl(self, ctl: BaseCtl, direct: bool) -> bool:
|
async def __run_ctl(self, ctl: BaseCtl, direct: bool) -> bool:
|
||||||
logger = get_logger()
|
logger = get_logger()
|
||||||
cmd = ctl.get_command(direct)
|
cmd = ctl.get_command(direct)
|
||||||
|
if not cmd:
|
||||||
|
return True
|
||||||
logger.info("CMD: %s", tools.cmdfmt(cmd))
|
logger.info("CMD: %s", tools.cmdfmt(cmd))
|
||||||
try:
|
try:
|
||||||
return (not (await aioproc.log_process(cmd, logger)).returncode)
|
return (not (await aioproc.log_process(cmd, logger)).returncode)
|
||||||
|
|||||||
@ -121,6 +121,16 @@ class IptablesForwardIn(BaseCtl):
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class SysctlIpv4ForwardCtl(BaseCtl):
|
||||||
|
def __init__(self, base_cmd: list[str]) -> None:
|
||||||
|
self.__base_cmd = base_cmd
|
||||||
|
|
||||||
|
def get_command(self, direct: bool) -> list[str]:
|
||||||
|
if direct:
|
||||||
|
return [*self.__base_cmd, "net.ipv4.ip_forward=1"]
|
||||||
|
return [] # Don't revert the command because some services can require it too
|
||||||
|
|
||||||
|
|
||||||
class CustomCtl(BaseCtl):
|
class CustomCtl(BaseCtl):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user