kupferbootstrap/net/forwarding.py

52 lines
1.3 KiB
Python
Raw Normal View History

import click
import logging
2022-08-15 17:41:23 +02:00
from exec.cmd import run_root_cmd
from wrapper import check_programs_wrap
from .ssh import run_ssh_command
@click.command(name='forwarding')
def cmd_forwarding():
2022-02-13 19:57:04 +01:00
"""Enable network forwarding for a usb-attached device"""
check_programs_wrap(['syctl', 'iptables'])
logging.info("Enabling ipv4 forwarding with sysctl")
result = run_root_cmd([
2021-08-08 18:32:42 +02:00
'sysctl',
'net.ipv4.ip_forward=1',
])
if result.returncode != 0:
click.Abort('Failed to enable ipv4 forward via sysctl')
logging.info("Enabling ipv4 forwarding with iptables")
result = run_root_cmd([
2021-08-08 18:32:42 +02:00
'iptables',
'-P',
'FORWARD',
'ACCEPT',
])
if result.returncode != 0:
click.Abort('Failed set iptables rule')
logging.info("Enabling ipv4 NATting with iptables")
result = run_root_cmd([
2021-08-08 18:32:42 +02:00
'iptables',
'-A',
'POSTROUTING',
'-t',
'nat',
'-j',
'MASQUERADE',
'-s',
'172.16.42.0/24',
])
if result.returncode != 0:
click.Abort('Failed set iptables rule')
logging.info("Setting default route on device via ssh")
result = run_ssh_command(cmd=['sudo -S route add default gw 172.16.42.2'], alloc_tty=True)
if result.returncode != 0:
click.Abort('Failed to add gateway over ssh')